⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 srchdlg.pas

📁 考勤管理是企业内部管理的重要环节和基础
💻 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 + -