home *** CD-ROM | disk | FTP | other *** search
- unit Brmodal;
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, DBTables, DB, StdCtrls, ExtCtrls, Grids, DBGrids, Buttons;
-
- type
- TPickDlg = class(TForm)
- DataSource: TDataSource;
- Parts: TTable;
- Cust: TTable;
- CustCustNo: TFloatField;
- CustCompany: TStringField;
- PartsPartNo: TFloatField;
- PartsDescription: TStringField;
- DBGrid1: TDBGrid;
- OKBtn: TButton;
- CancelBtn: TButton;
- SearchEd: TEdit;
- OrderCombo: TComboBox;
- Label1: TLabel;
- FindBut: TSpeedButton;
- Label2: TLabel;
- NearestBut: TSpeedButton;
- procedure DBGrid1DblClick(Sender: TObject);
- procedure FindButClick(Sender: TObject);
- procedure OrderComboChange(Sender: TObject);
- procedure NearestButClick(Sender: TObject);
- private
- function GetCustNo: Double;
- procedure SetCustNo(NewCustNo: Double);
- function GetPartNo: Double;
- procedure SetPartNo(NewPartNo: Double);
- public
- property PartNo: Double read GetPartNo write SetPartNo;
- property CustNo: Double read GetCustNo write SetCustNo;
- function ShowModalCust: Integer;
- function ShowModalParts: Integer;
- end;
-
- var
- PickDlg: TPickDlg;
-
- implementation
-
- {$R *.DFM}
-
- function TPickDlg.GetCustNo: Double;
- begin
- Result := CustCustNo.Value;
- end;
-
- procedure TPickDlg.SetCustNo(NewCustNo: Double);
- begin
- Cust.IndexFieldNames := 'CustNo';
- Cust.FindKey([NewCustNo]);
- end;
-
- function TPickDlg.GetPartNo: Double;
- begin
- Result := PartsPartNo.Value;
- end;
-
- procedure TPickDlg.SetPartNo(NewPartNo: Double);
- begin
- Parts.IndexFieldNames := 'PartNo';
- Parts.FindKey([NewPartNo]);
- end;
-
- function TPickDlg.ShowModalCust: Integer;
- begin
- OrderCombo.Items.Clear;
- OrderCombo.Items.Add('Company');
- OrderCombo.Items.Add('CustNo');
- OrderCombo.ItemIndex := 0;
- Cust.IndexFieldNames := 'Company';
- Datasource.Dataset := Cust;
- Caption := 'Select a Customer';
- Result := ShowModal;
- end;
-
- function TPickDlg.ShowModalParts: Integer;
- begin
- OrderCombo.Items.Clear;
- OrderCombo.Items.Add('Description');
- OrderCombo.Items.Add('PartNo');
- OrderCombo.ItemIndex := 0;
- Parts.IndexFieldNames := 'Description';
- Datasource.Dataset := Parts;
- Caption := 'Select a Part';
- Result := ShowModal;
- end;
-
- procedure TPickDlg.DBGrid1DblClick(Sender: TObject);
- begin
- ModalResult := mrOK;
- end;
-
- procedure TPickDlg.FindButClick(Sender: TObject);
- {search for a match}
- begin
- if (SearchEd.Text = '') then
- MessageDlg('No search text specified!', mtError, [mbOK], 0)
- else
- begin
- try
- if not (Datasource.Dataset as TTable).Findkey([SearchEd.Text]) then
- MessageDlg('No matches found. Try the other button for a "nearest" search',
- mtInformation, [mbOK], 0);
- except
- on exception do { probably caused by searching for an invalid value on float field }
- MessageDlg('The search is on the List Order column. Try entering a number! ',
- mtError, [mbOK], 0);
- end;
- end;
- end;
-
- procedure TPickDlg.NearestButClick(Sender: TObject);
- begin
- if (SearchEd.Text = '') then
- MessageDlg('No search text specified!', mtError, [mbOK], 0)
- else
- begin
- try
- (Datasource.Dataset as TTable).FindNearest([SearchEd.Text]);
- except
- on exception do
- MessageDlg('The search is on order-by column. Try entering a number! ',
- mtError, [mbOK], 0);
- end;
- end;
- end;
-
- procedure TPickDlg.OrderComboChange(Sender: TObject);
- begin
- (Datasource.Dataset as TTable).IndexFieldNames := OrderCombo.Text;
- end;
-
- end.
-