home *** CD-ROM | disk | FTP | other *** search
/ Delphi 5 for Professionals / DELPHI5.iso / Runimage / Delphi50 / Demos / Db / Csdemos / frmqrysp.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-11  |  2.1 KB  |  79 lines

  1. unit Frmqrysp;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, Windows, Messages, Classes, Graphics, Controls,
  7.   StdCtrls, Forms, DBCtrls, DB, DBGrids, DBTables, Grids, ExtCtrls,
  8.   Dialogs, Buttons, Mask, ComCtrls;
  9.  
  10. type
  11.   TFrmQueryProc = class(TForm)
  12.     DBGrid1: TDBGrid;
  13.     DBGrid2: TDBGrid;
  14.     DBNavigator: TDBNavigator;
  15.     Panel1: TPanel;
  16.     Panel2: TPanel;
  17.     Panel3: TPanel;
  18.     EmployeeProjectsQuery: TQuery;
  19.     EmployeeProjectsSource: TDataSource;
  20.     StatusBar1: TStatusBar;
  21.     BitBtn1: TBitBtn;
  22.     EmployeeSource: TDataSource;
  23.     procedure EmployeeDataChange(Sender: TObject; Field: TField);
  24.     procedure FormShow(Sender: TObject);
  25.     procedure FormHide(Sender: TObject);
  26.   private
  27.     { private declarations }
  28.     procedure writeMsg( strWrite : String );
  29.   public
  30.     { public declarations }
  31.   end;
  32.  
  33. var
  34.   FrmQueryProc: TFrmQueryProc;
  35.  
  36. implementation
  37.  
  38. uses DmCSDemo;
  39.  
  40. {$R *.DFM}
  41.  
  42. procedure TFrmQueryProc.WriteMsg(StrWrite: String);
  43. begin
  44.    StatusBar1.SimpleText := StrWrite;
  45. end;
  46.  
  47. procedure TFrmQueryProc.FormShow(Sender: TObject);
  48. begin
  49.   DmEmployee.EmployeeTable.Open;
  50.   { Allow data flow from the EmployeeTable to the local EmployeeSource.  This
  51.     will allow DataChange events to execute the query procedure }
  52.   EmployeeSource.Enabled := True;
  53.   { Explicit query preparation is not required, but gives the best possible
  54.     performance }
  55.   with EmployeeProjectsQuery do if not Active then Prepare;
  56. end;
  57.  
  58. procedure TFrmQueryProc.EmployeeDataChange(Sender: TObject; Field: TField);
  59. begin
  60.   { Execute the ProjectsQuery, which uses a query procedure }
  61.   EmployeeProjectsQuery.Close;
  62.   EmployeeProjectsQuery.Params[0].AsInteger :=
  63.     DmEmployee.EmployeeTableEmp_No.Value;
  64.   EmployeeProjectsQuery.Open;
  65.  
  66.   WriteMsg('Employee ' + DmEmployee.EmployeeTableEmp_No.AsString +
  67.            ' is assigned to ' + IntToStr(EmployeeProjectsQuery.RecordCount) +
  68.            ' project(s).');
  69. end;
  70.  
  71. procedure TFrmQueryProc.FormHide(Sender: TObject);
  72. begin
  73.   { Turn off the DataChange event for our form, since DmEmployee.EmployeeTable
  74.     is used elsewhere }
  75.   EmployeeSource.Enabled := False;
  76. end;
  77.  
  78. end.
  79.