home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 1999 #5 / 1999 CD 5 (black).iso / Delphi3 / install / data.z / CUSTVIEW.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-08-05  |  3.8 KB  |  135 lines

  1. unit CustView;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   ExtCtrls, DBCtrls, Grids, DBGrids, ComCtrls, StdCtrls, Mask, Buttons,
  8.   Menus;
  9.  
  10. type
  11.   TfmCustView = class(TForm)
  12.     StatusBar1: TStatusBar;
  13.     DBGrid2: TDBGrid;
  14.     Label3: TLabel;
  15.     MainMenu1: TMainMenu;
  16.     About1: TMenuItem;
  17.     DBNavigator1: TDBNavigator;
  18.     Label2: TLabel;
  19.     rgDataSet: TRadioGroup;
  20.     SpeedButton1: TSpeedButton;
  21.     DBGrid1: TDBGrid;
  22.     GroupBox1: TGroupBox;
  23.     cbFilterOrders: TCheckBox;
  24.     Label1: TLabel;
  25.     Edit1: TEdit;
  26.     procedure rgDataSetClick(Sender: TObject);
  27.     procedure SpeedButton1Click(Sender: TObject);
  28.     procedure cbFilterOrdersClick(Sender: TObject);
  29.     procedure About1Click(Sender: TObject);
  30.     procedure Edit1Change(Sender: TObject);
  31.     procedure DBGrid1Enter(Sender: TObject);
  32.     procedure DBGrid2Enter(Sender: TObject);
  33.   end;
  34.  
  35. var
  36.   fmCustView: TfmCustView;
  37.  
  38. implementation
  39.  
  40. uses DM, Filter1, About;
  41.  
  42. {$R *.DFM}
  43.  
  44. { Change the Dataset for the Customer from Query to Table,
  45.   or Table to Query. If a filter is current, set that filter
  46.   to the just-changed Dataset. }
  47. procedure TfmCustView.rgDataSetClick(Sender: TObject);
  48. var
  49.   st: string;
  50. begin
  51.   with DM1, CustomerSource do
  52.   begin
  53.     { Is the other Dataset Filtered? Get its filter. }
  54.     if Dataset.Filtered then
  55.       st := Dataset.Filter;
  56.     case rgDataset.ItemIndex of
  57.       0: if Dataset <> SQLCustomer then
  58.            Dataset := SQLCustomer;
  59.       1: if CustomerSource.Dataset <> Customer then
  60.            Dataset := Customer;
  61.     end;
  62.  
  63.     { Set the Filter of the current Dataset. }
  64.     if st <> '' then
  65.     begin
  66.       Dataset.Filter := st;
  67.       Dataset.Filtered := True;
  68.     end;
  69.   end;
  70. end;
  71.  
  72. procedure TfmCustView.SpeedButton1Click(Sender: TObject);
  73. begin
  74.   fmFilterFrm.Show;
  75. end;
  76.  
  77. procedure TfmCustView.cbFilterOrdersClick(Sender: TObject);
  78. begin
  79.   { DM1.SQLOrders.Filtered will be true if the box is checked, false otherwise. }
  80.   DM1.SQLOrders.Filtered := cbFilterOrders.Checked;
  81.  
  82.   { If the number changed while the box is unchecked, DM1.OrdersFilterAmount
  83.     won't know about it.  The Edit1Change procedure will set the value and
  84.     apply the filter.}
  85.   if cbFilterOrders.Checked then
  86.     Edit1Change(nil); { To make sure the value is set. }
  87. end;
  88.  
  89. procedure TfmCustView.About1Click(Sender: TObject);
  90. begin
  91.   with TFMAboutBox.Create(nil) do
  92.   try
  93.     ShowModal;
  94.   finally
  95.     Free;
  96.   end;
  97. end;
  98.  
  99. procedure TfmCustView.Edit1Change(Sender: TObject);
  100. begin
  101.   { We must test of Edit1.Text not being blank, or an exception will
  102.     be raised when the user clears the contents of the Edit. }
  103.   if (cbFilterOrders.checked) and (Edit1.Text <> '') then
  104.     try
  105.       { Attempt to set the variable on DM1 that holds the filter amount. }
  106.       DM1.OrdersFilterAmount := StrToFloat(fmCustView.Edit1.Text);
  107.  
  108.       { Refreshing SQLOrders will cause DM1.SQLOrdersFilterRecord to be called
  109.         once for each orders record for the current Customer. }
  110.       DM1.SQLOrders.Refresh;
  111.  
  112.     except
  113.       on EConvertError do
  114.         { This happens before DM1.SQLOrders.refresh if the user typed in a
  115.           non-numeric value, thus preventing it from trying to use an invalid
  116.           value to filter itself, which would raise an exception once for
  117.           each record displayed.}
  118.         raise Exception.Create('Threshold Amount must be a number')
  119.     end
  120. end;
  121.  
  122. { Set the navigator to the Customer Datasource. }
  123. procedure TfmCustView.DBGrid1Enter(Sender: TObject);
  124. begin
  125.   DBNavigator1.DataSource := DBGrid1.DataSource;
  126. end;
  127.  
  128. { Set the navigator to the Orders Datasource. }
  129. procedure TfmCustView.DBGrid2Enter(Sender: TObject);
  130. begin
  131.   DBNavigator1.DataSource := DBGrid2.DataSource;
  132. end;
  133.  
  134. end.
  135.