📄 srchdlg.pas
字号:
unit SrchDlg;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, DBTables, DB, StdCtrls, ExtCtrls, Grids, DBGrids, Buttons;
resourcestring
sCaption='选择一查询条件';
sMatch='没有与之匹配的记录';
type
TSearchDlg = class(TForm)
DataSource: TDataSource;
DBGrid1: TDBGrid;
OKBtn: TButton;
CancelBtn: TButton;
SearchEd: TEdit;
WareCombo: TComboBox;
Label1: TLabel;
Label2: TLabel;
SearchButton: TSpeedButton;
procedure DBGrid1DblClick(Sender: TObject);
procedure SearchButtonClick(Sender: TObject);
procedure WareComboChange(Sender: TObject);
procedure SearchEdKeyPress(Sender: TObject; var Key: Char);
procedure SearchEdChange(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
SrchFld: TField;
function GetPartNo: Variant;
procedure SetPartNo(NewPartNo: Variant);
public
property WareID: Variant read GetPartNo write SetPartNo;
function ShowModalParts(DataSet: TDataSet): Integer;
end;
var
SearchDlg: TSearchDlg;
implementation
uses unDM2;
{$R *.DFM}
function TSearchDlg.GetPartNo: Variant;
begin
Result := DataSource.DataSet.Fields[0].AsString;
end;
procedure TSearchDlg.SetPartNo(NewPartNo: Variant);
var
FieldName:Variant;
begin
if Datasource.DataSet<>nil then begin
FieldName:=Datasource.DataSet.Fields[0].FieldName;
Datasource.Dataset.Locate(FieldName, NewPartNo, []);
end;
end;
function TSearchDlg.ShowModalParts(DataSet: TDataSet): Integer;
Var
i:integer;
FieldName:string;
begin
i:=0;
WareCombo.Items.Clear;
Datasource.Dataset := DataSet;
while i<Datasource.DataSet.fields.Count do begin
FieldName:=Datasource.DataSet.Fields[i].DisplayName;
WareCombo.Items.Add(FieldName);
i:=i+1;
end;
Caption := Pchar(sCaption);
WareCombo.ItemIndex := 0;
WareComboChange(nil);
Result := ShowModal;
end;
procedure TSearchDlg.DBGrid1DblClick(Sender: TObject);
begin
ModalResult := mrOK;
end;
procedure TSearchDlg.SearchButtonClick(Sender: TObject);
var
i:integer;
WareComboText:string;
begin
i:=0;
while i<Datasource.DataSet.fields.Count do begin
if WareCombo.Text=Datasource.DataSet.Fields[i].DisplayName then begin
WareComboText:=Datasource.DataSet.Fields[i].FieldName;
Break;
end;
i:=i+1;
end;
if not Datasource.Dataset.Locate(WareComboText, SearchEd.Text,
[loCaseInsensitive, loPartialKey]) then
MessageDlg(Pchar(sMatch), mtInformation, [mbOK], 0);
end;
procedure TSearchDlg.WareComboChange(Sender: TObject);
var
i:integer;
WareComboText:string;
begin
i:=0;
while i<Datasource.DataSet.fields.Count do begin
if WareCombo.Text=Datasource.DataSet.Fields[i].DisplayName then begin
WareComboText:=Datasource.DataSet.Fields[i].FieldName;
Break;
end;
i:=i+1;
end;
SrchFld := Datasource.Dataset.FieldByName(WareComboText);
SearchEd.Text := '';
end;
procedure TSearchDlg.SearchEdKeyPress(Sender: TObject; var Key: Char);
begin
if Assigned(SrchFld) and (Key > ' ') and not (SrchFld.IsValidChar(Key)) then
begin
MessageBeep(0);
Key := #0;
end;
end;
procedure TSearchDlg.SearchEdChange(Sender: TObject);
begin
SearchButton.Enabled := SearchEd.Text <> '';
end;
procedure TSearchDlg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TSearchDlg.FormDestroy(Sender: TObject);
begin
SearchDlg:=Nil;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -