home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Delphi.5 / Samples / sourceD5 / browutil.exe / BROWSER / QRYDSGN.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-04-07  |  6.8 KB  |  245 lines

  1. unit QryDsgn;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ExtCtrls, StdCtrls, Grids, DBGrids, Db, DBTables, FileCtrl, ComCtrls,
  8.   CustGrid;
  9.  
  10. type
  11.   TSQLCommandList = record
  12.     Count : Integer;
  13.     CommandIndex : Integer;
  14.     Command : array [0..99] of String;
  15.   end;
  16.  
  17. type
  18.   TFrmQueryDesigner = class(TForm)
  19.     Panel1: TPanel;
  20.     BtnExecute: TButton;
  21.     BtnClose: TButton;
  22.     DBCustGrid1: TDBCustGrid;
  23.     Splitter1: TSplitter;
  24.     Query1: TQuery;
  25.     Label1: TLabel;
  26.     EdtTablePath: TEdit;
  27.     DirectoryListBox1: TDirectoryListBox;
  28.     BtnOpenDirListBox: TButton;
  29.     DataSource1: TDataSource;
  30.     GroupBox1: TGroupBox;
  31.     RichEdit1: TRichEdit;
  32.     BtnPrevious: TButton;
  33.     BtnNext: TButton;
  34.     procedure EdtTablePathExit(Sender: TObject);
  35.     procedure BtnExecuteClick(Sender: TObject);
  36.     procedure BtnCloseClick(Sender: TObject);
  37.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  38.     procedure DirectoryListBox1Exit(Sender: TObject);
  39.     procedure DirectoryListBox1Enter(Sender: TObject);
  40.     procedure BtnOpenDirListBoxClick(Sender: TObject);
  41.     procedure FormCreate(Sender: TObject);
  42.     procedure FormDestroy(Sender: TObject);
  43.     procedure FormDeactivate(Sender: TObject);
  44.     procedure FormActivate(Sender: TObject);
  45.     procedure RichEdit1KeyPress(Sender: TObject; var Key: Char);
  46.     procedure BtnPreviousClick(Sender: TObject);
  47.     procedure BtnNextClick(Sender: TObject);
  48.   private
  49.     { Private declarations }
  50.     lShowStructure  : Boolean;
  51.     sString : String;
  52.     SQLCommandList : TSQLCommandList;
  53.     procedure SetButtons;
  54.   public
  55.     { Public declarations }
  56.     procedure ShowStructure(lStructure : Boolean);
  57.   end;
  58.  
  59. var
  60.   FrmQueryDesigner: TFrmQueryDesigner;
  61.  
  62. implementation
  63.  
  64. uses Menu, GenFunc;
  65.  
  66. {$R *.DFM}
  67.  
  68. procedure TFrmQueryDesigner.EdtTablePathExit(Sender: TObject);
  69. begin
  70.   if (EdtTablePath.Text = '') then
  71.     Exit;
  72.   if not DirectoryExists(EdtTablePath.Text) then begin
  73.     MessageBeep(mb_Ok);
  74.     ShowMessage('Invalid Path');
  75.     EdtTablePath.Text := '';
  76.     Abort;
  77.   end
  78. end;
  79.  
  80. procedure TFrmQueryDesigner.BtnExecuteClick(Sender: TObject);
  81. var
  82.   sErrorString : String;
  83. begin
  84.   sErrorString := '';
  85.   if (RichEdit1.Text = '') then
  86.     sErrorString := 'SQL Command cannot be blank';
  87.   if (EdtTablePath.Text = '') then
  88.     sErrorString := 'Table Path cannot be blank';
  89.   if (sErrorString <> '') then begin
  90.     MessageBeep(mb_Ok);
  91.     ShowMessage(sErrorString);
  92.     Abort;
  93.   end;
  94.   try
  95.     Query1.Close;
  96.     Query1.DataBaseName := EdtTablePath.Text;
  97.     Query1.SQL.Clear;
  98.     Query1.SQL.Add(RichEdit1.Text);
  99.     Query1.Open;
  100.     SQLCommandList.Command[SQLCommandList.Count] := RichEdit1.Text;
  101.     SQLCommandList.Count := SQLCommandList.Count + 1;
  102.     SQLCommandList.CommandIndex := SQLCommandList.Count-1;
  103.     SetButtons;
  104.   except
  105.     on E:EDataBaseError do begin
  106.       MessageBeep(mb_Ok);
  107.       ShowMessage(E.Message);
  108.       Abort;
  109.     end;
  110.   end;
  111. end;
  112.  
  113. procedure TFrmQueryDesigner.BtnCloseClick(Sender: TObject);
  114. begin
  115.   Close;
  116. end;
  117.  
  118. procedure TFrmQueryDesigner.FormClose(Sender: TObject;
  119.   var Action: TCloseAction);
  120. begin
  121.   Action := caFree;
  122. end;
  123.  
  124. procedure TFrmQueryDesigner.DirectoryListBox1Exit(Sender: TObject);
  125. begin
  126.   DirectoryListBox1.Visible := False;
  127.   EdtTablePath.Text := DirectoryListBox1.Directory;
  128.   EdtTablePath.SetFocus;
  129. end;
  130.  
  131. procedure TFrmQueryDesigner.DirectoryListBox1Enter(Sender: TObject);
  132. begin
  133.   try
  134.     DirectoryListBox1.Directory := EdtTablePath.Text;
  135.   except
  136.     on E:EDataBaseError do begin
  137.       MessageBeep(mb_Ok);
  138.       ShowMessage(E.Message);
  139.       Abort;
  140.     end;
  141.   end;
  142. end;
  143.  
  144. procedure TFrmQueryDesigner.BtnOpenDirListBoxClick(Sender: TObject);
  145. begin
  146.   if not DirectoryListBox1.Visible then begin
  147.       DirectoryListBox1.Visible := True;
  148.       DirectoryListBox1.Width := EdtTablePath.Width;
  149.       DirectoryListBox1.Top := EdtTablePath.Top + EdtTablePath.Height;
  150.       DirectoryListBox1.Left := EdtTablePath.Left;
  151.       DirectoryListBox1.SetFocus;
  152.     end
  153.   else
  154.     begin
  155.       DirectoryListBox1.Visible := False;
  156.       EdtTablePath.SetFocus;
  157.     end;
  158. end;
  159.  
  160. procedure TFrmQueryDesigner.FormCreate(Sender: TObject);
  161. begin
  162. //  FrmMenu.AddWindowItem(Self.Name,Self.Caption);
  163.   SQLCommandList.Count := 0;
  164.   SQLCommandList.CommandIndex := 0;
  165. end;
  166.  
  167. procedure TFrmQueryDesigner.FormDestroy(Sender: TObject);
  168. begin
  169.   FrmMenu.ShowClose(False);
  170. //  FrmMenu.RemoveWindowItem(Self.Name)
  171. end;
  172.  
  173. procedure TFrmQueryDesigner.FormDeactivate(Sender: TObject);
  174. begin
  175.   if Sender <> nil then begin
  176.     FrmMenu.ShowMenuWindowItemChecked(Self.Name,False);
  177.   end;
  178. end;
  179.  
  180. procedure TFrmQueryDesigner.FormActivate(Sender: TObject);
  181. begin
  182.   FrmMenu.ShowClose(True);
  183.   FrmMenu.Table1 := TTable(Query1);
  184.   FrmMenu.ShowStructure1.Checked := lShowStructure;
  185.   FrmMenu.ShowTableMenuItem(False);
  186.   FrmMenu.ShowTextFileMenuItem(False);
  187.   FrmMenu.ShowQueryMenuItem(True);
  188.   AssignGridOptions(DBCustGrid1,dgAlwaysShowSelection, FrmMenu.ShowSelected1.Checked);
  189.   AssignGridOptions(DBCustGrid1,dgAlwaysShowEditor, FrmMenu.ShowEdited1.Checked);
  190.   AssignGridOptions(DBCustGrid1,dgConfirmDelete, FrmMenu.ConfirmDelete1.Checked);
  191. end;
  192.  
  193. procedure TFrmQueryDesigner.ShowStructure(lStructure : Boolean);
  194. var
  195.   I : Integer;
  196. begin
  197.   lShowStructure := lStructure;
  198.   for I := 0 to Query1.FieldCount - 1 do begin
  199.     if lStructure then
  200.       DBCustGrid1.Columns.Items[I].Title.Caption := DBCustGrid1.Fields[I].FieldName + ' : ' +
  201.                                                 FindFieldType(DBCustGrid1.Fields[I].DataType) + ' : ' +
  202.                                                 IntToStr(DBCustGrid1.Fields[I].DataSize)
  203.     else
  204.       DBCustGrid1.Columns.Items[I].Title.Caption := DBCustGrid1.Fields[I].FieldName;
  205.   end;
  206. end;
  207.  
  208. procedure TFrmQueryDesigner.RichEdit1KeyPress(Sender: TObject;
  209.   var Key: Char);
  210. begin
  211.   if (Key <> ' ') then
  212.     sString := sString + Key
  213.   else
  214.     begin
  215. //      ShowMessage(sString);
  216.       sString := '';
  217.     end;
  218. end;
  219.  
  220. procedure TFrmQueryDesigner.BtnPreviousClick(Sender: TObject);
  221. begin
  222.   if (SQLCommandList.CommandIndex > 0) then begin
  223.     SQLCommandList.CommandIndex := SQLCommandList.CommandIndex -1;
  224.     RichEdit1.Text := SQLCommandList.Command[SQLCommandList.CommandIndex];
  225.   end;
  226.   SetButtons;
  227. end;
  228.  
  229. procedure TFrmQueryDesigner.BtnNextClick(Sender: TObject);
  230. begin
  231.   if (SQLCommandList.CommandIndex < SQLCommandList.Count-1) then begin
  232.     SQLCommandList.CommandIndex := SQLCommandList.CommandIndex + 1;
  233.     RichEdit1.Text := SQLCommandList.Command[SQLCommandList.CommandIndex];
  234.   end;
  235.   SetButtons;
  236. end;
  237.  
  238. procedure TFrmQueryDesigner.SetButtons;
  239. begin
  240.   BtnPrevious.Enabled := (SQLCommandList.CommandIndex > 0);
  241.   BtnNext.Enabled := (SQLCommandList.CommandIndex < SQLCommandList.Count-1);
  242. end;
  243.  
  244. end.
  245.