home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 August / VPR9608A.BIN / del20try / install / data.z / SRCHDLG.PAS < prev    next >
Pascal/Delphi Source File  |  1996-05-08  |  3KB  |  124 lines

  1. unit SrchDlg;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, Windows, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, DBTables, DB, StdCtrls, ExtCtrls, Grids, DBGrids, Buttons;
  8.  
  9. type
  10.   TSearchDlg = class(TForm)
  11.     DataSource: TDataSource;
  12.     DBGrid1: TDBGrid;
  13.     OKBtn: TButton;
  14.     CancelBtn: TButton;
  15.     SearchEd: TEdit;
  16.     OrderCombo: TComboBox;
  17.     Label1: TLabel;
  18.     Label2: TLabel;
  19.     SearchButton: TSpeedButton;
  20.     procedure DBGrid1DblClick(Sender: TObject);
  21.     procedure SearchButtonClick(Sender: TObject);
  22.     procedure OrderComboChange(Sender: TObject);
  23.     procedure SearchEdKeyPress(Sender: TObject; var Key: Char);
  24.     procedure SearchEdChange(Sender: TObject);
  25.   private
  26.     SrchFld: TField;
  27.     function GetCustNo: Double;
  28.     procedure SetCustNo(NewCustNo: Double);
  29.     function GetPartNo: Double;
  30.     procedure SetPartNo(NewPartNo: Double);
  31.   public
  32.     property PartNo: Double read GetPartNo write SetPartNo;
  33.     property CustNo: Double read GetCustNo write SetCustNo;
  34.     function ShowModalCust: Integer;
  35.     function ShowModalParts: Integer;
  36.   end;
  37.  
  38. var
  39.   SearchDlg: TSearchDlg;
  40.  
  41. implementation
  42.  
  43. uses DataMod;
  44.  
  45. {$R *.DFM}
  46.  
  47. function TSearchDlg.GetCustNo: Double;
  48. begin
  49.   Result := MastData.CustCustNo.Value;
  50. end;
  51.  
  52. procedure TSearchDlg.SetCustNo(NewCustNo: Double);
  53. begin
  54.   MastData.Cust.Locate('CustNo', NewCustNo, []);
  55. end;
  56.  
  57. function TSearchDlg.GetPartNo: Double;
  58. begin
  59.   Result := MastData.PartsPartNo.Value;
  60. end;
  61.  
  62. procedure TSearchDlg.SetPartNo(NewPartNo: Double);
  63. begin
  64.   MastData.Parts.Locate('PartNo', NewPartNo, []);
  65. end;
  66.  
  67. function TSearchDlg.ShowModalCust: Integer;
  68. begin
  69.   OrderCombo.Items.Clear;
  70.   OrderCombo.Items.Add('Company');
  71.   OrderCombo.Items.Add('CustNo');
  72.   OrderCombo.ItemIndex := 0;
  73.   Datasource.Dataset := MastData.Cust;
  74.   OrderComboChange(nil);
  75.   Caption := 'Select a Customer';
  76.   Result := ShowModal;
  77. end;
  78.  
  79. function TSearchDlg.ShowModalParts: Integer;
  80. begin
  81.   OrderCombo.Items.Clear;
  82.   OrderCombo.Items.Add('Description');
  83.   OrderCombo.Items.Add('PartNo');
  84.   OrderCombo.ItemIndex := 0;
  85.   Datasource.Dataset := MastData.Parts;
  86.   OrderComboChange(nil);
  87.   Caption := 'Select a Part';
  88.   Result := ShowModal;
  89. end;
  90.  
  91. procedure TSearchDlg.DBGrid1DblClick(Sender: TObject);
  92. begin
  93.   ModalResult := mrOK;
  94. end;
  95.  
  96. procedure TSearchDlg.SearchButtonClick(Sender: TObject);
  97. begin
  98.   if not Datasource.Dataset.Locate(OrderCombo.Text, SearchEd.Text,
  99.     [loCaseInsensitive, loPartialKey]) then
  100.       MessageDlg('No matching record found.', mtInformation, [mbOK], 0);
  101. end;
  102.  
  103. procedure TSearchDlg.OrderComboChange(Sender: TObject);
  104. begin
  105.   SrchFld := Datasource.Dataset.FieldByName(OrderCombo.Text);
  106.   SearchEd.Text := '';
  107. end;
  108.  
  109. procedure TSearchDlg.SearchEdKeyPress(Sender: TObject; var Key: Char);
  110. begin
  111.   if Assigned(SrchFld) and (Key > ' ') and not (SrchFld.IsValidChar(Key)) then
  112.   begin
  113.     MessageBeep(0);
  114.     Key := #0;
  115.   end;
  116. end;
  117.  
  118. procedure TSearchDlg.SearchEdChange(Sender: TObject);
  119. begin
  120.   SearchButton.Enabled := SearchEd.Text <> '';
  121. end;
  122.  
  123. end.
  124.