home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 February / DPPCPRO0299.ISO / February / Delphi / Install / DATA.Z / FILTER1.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-06-11  |  3.9 KB  |  146 lines

  1. unit Filter1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, Buttons;
  8.  
  9. type
  10.   TfmFilterFrm = class(TForm)
  11.     Label1: TLabel;
  12.     Label2: TLabel;
  13.     ListBox1: TListBox;
  14.     ListBox2: TListBox;
  15.     Label3: TLabel;
  16.     Memo1: TMemo;
  17.     GroupBox1: TGroupBox;
  18.     cbCaseSensitive: TCheckBox;
  19.     cbPartialCompare: TCheckBox;
  20.     ComboBox1: TComboBox;
  21.     Label4: TLabel;
  22.     BtnApplyFilter: TButton;
  23.     BtnClear: TButton;
  24.     BtnClose: TButton;
  25.     procedure AddFieldName(Sender: TObject);
  26.     procedure ListBox2DblClick(Sender: TObject);
  27.     procedure ApplyFilter(Sender: TObject);
  28.     procedure FormCreate(Sender: TObject);
  29.     procedure Memo1Change(Sender: TObject);
  30.     procedure cbCaseSensitiveClick(Sender: TObject);
  31.     procedure cbPartialCompareClick(Sender: TObject);
  32.     procedure SBtnClearClick(Sender: TObject);
  33.     procedure ComboBox1Change(Sender: TObject);
  34.     procedure SBtnCloseClick(Sender: TObject);
  35.   end;
  36.  
  37. var
  38.   fmFilterFrm: TfmFilterFrm;
  39.  
  40. implementation
  41.  
  42. uses DM, CustView;
  43.  
  44. {$R *.DFM}
  45.  
  46. { Adds current listbox field name to memo. }
  47. procedure TfmFilterFrm.AddFieldName(Sender: TObject);
  48. begin
  49.   if Memo1.Text <> '' then
  50.     Memo1.Text := Memo1.Text + ' ';
  51.   Memo1.Text := Memo1.Text + ListBox1.Items[ListBox1.ItemIndex];
  52. end;
  53.  
  54. { Adds current Filter operator to memo. }
  55. procedure TfmFilterFrm.ListBox2DblClick(Sender: TObject);
  56. begin
  57.   if Memo1.Text <> '' then
  58.     Memo1.Text := Memo1.Text + ' '+ ListBox2.Items[ListBox2.ItemIndex];
  59. end;
  60.  
  61. procedure TfmFilterFrm.ApplyFilter(Sender: TObject);
  62. begin
  63.   with DM1.CustomerSource.Dataset do
  64.   begin
  65.     if ComboBox1.Text <> '' then
  66.     begin
  67.       Filter := ComboBox1.Text;
  68.       Filtered := True;
  69.       fmCustView.Caption := 'Customers - Filtered';
  70.     end
  71.     else begin
  72.       Filter := '';
  73.       Filtered := False;
  74.       fmCustView.Caption := 'Customers - Unfiltered'
  75.     end;
  76.   end;
  77. end;
  78.  
  79. { Populate the ListBox1 with available fields from the Customer Dataset. }
  80. procedure TfmFilterFrm.FormCreate(Sender: TObject);
  81. var
  82.   I: Integer;
  83. begin
  84.   for I := 0 to DM1.CustomerSource.Dataset.FieldCount - 1 do
  85.     ListBox1.Items.Add(DM1.Customer.Fields[I].FieldName);
  86. end;
  87.  
  88. { Since the Filter property is a TStrings and the Memo field
  89.   is a TMemo, convert the Memo's wrapped text to a string,
  90.   which is then used when the user presses Apply. }
  91. procedure TfmFilterFrm.Memo1Change(Sender: TObject);
  92. var
  93.  I: Integer;
  94. begin
  95.   ComboBox1.Text := Memo1.Lines[0];
  96.   for I := 1 to Memo1.Lines.Count - 1 do
  97.     ComboBox1.Text := ComboBox1.Text + ' ' + Memo1.Lines[I];
  98. end;
  99.  
  100. { Set the Customer's Dataset Case Sensitive Filter Option. }
  101. procedure TfmFilterFrm.cbCaseSensitiveClick(Sender: TObject);
  102. begin
  103.   with DM1.CustomerSource.Dataset do
  104.     if cbCaseSensitive.checked then
  105.       FilterOptions := FilterOptions - [foCaseInSensitive]
  106.     else
  107.       FilterOptions := FilterOptions + [foCaseInsensitive];
  108. end;
  109.  
  110. { Set the Customer Partial Compare Filter Option. }
  111. procedure TfmFilterFrm.cbPartialCompareClick(Sender: TObject);
  112. begin
  113.   with DM1.CustomerSource.Dataset do
  114.     if cbPartialCompare.checked then
  115.       FilterOptions := FilterOptions + [foNoPartialCompare]
  116.     else
  117.       FilterOptions := FilterOptions - [foNoPartialCompare];
  118. end;
  119.  
  120. { Add User-Entered filters into list box at runtime. }
  121. procedure TfmFilterFrm.SBtnClearClick(Sender: TObject);
  122. var
  123.   st: string;
  124. begin
  125.   Memo1.Lines.Clear;
  126.   st := ComboBox1.Text;
  127.   ComboBox1.Text := '';
  128.   if ComboBox1.Items.IndexOf(st) = -1 then
  129.     ComboBox1.Items.Add(st);
  130. end;
  131.  
  132. { Reset the Memo field when the Filter ComboBox changes. }
  133. procedure TfmFilterFrm.ComboBox1Change(Sender: TObject);
  134. begin
  135.   Memo1.Lines.Clear;
  136.   Memo1.Lines.Add(ComboBox1.Text);
  137. end;
  138.  
  139. { Close the Filter Form. }
  140. procedure TfmFilterFrm.SBtnCloseClick(Sender: TObject);
  141. begin
  142.   Close;
  143. end;
  144.  
  145. end.
  146.