selectempfrm.pas

来自「群星医药系统源码」· PAS 代码 · 共 181 行

PAS
181
字号
unit SelectEmpFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, TFlatSpeedButtonUnit, ExtCtrls, RzStatus, TFlatPanelUnit,
  ActnList, ModuleAction, DB, DBClient, ckDBClient, MConnect, Grids,
  DBGridEh, DbUtilsEh, EhLibCDS, xEhLibCtl, StdCtrls, RzCmboBx, Mask, RzEdit, RzButton, ImgList,
  iMainFrm, DBCtrls, RzDBNav, RzPanel;

type
  TFrmSelectEmp = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    TopPopMenu: TPopupMenu;
    SetFields1: TMenuItem;
    refresh1: TMenuItem;
    DComm: TDCOMConnection;
    DsSelectEmp: TDataSource;
    CdsSelectEmp: TckClientDataSet;
    Label1: TLabel;
    edValue: TRzEdit;
    dbgSelectEmpNo: TxDBGridEh;
    RzPanel3: TRzPanel;
    RzDBNavigator1: TRzDBNavigator;
    RzBitBtn2: TRzBitBtn;
    ImageList1: TImageList;
    RzBitBtn1: TRzBitBtn;
    CdsSelectEmpEmpNo: TStringField;
    CdsSelectEmpName: TStringField;
    CdsSelectEmpSex: TStringField;
    CdsSelectEmpDepartName: TStringField;
    CdsSelectEmpDuty: TStringField;
    CdsSelectEmpState: TStringField;
    CdsSelectEmpBirthDay: TDateTimeField;
    CdsSelectEmpTel: TStringField;
    CdsSelectEmpMobile: TStringField;
    CdsSelectEmpRemark: TStringField;
    procedure FormCreate(Sender: TObject);
    procedure RzBitBtn1Click(Sender: TObject);
    procedure dbgSelectEmpNoDblClick(Sender: TObject);
    procedure RzBitBtn2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormShow(Sender: TObject);
    procedure edValueChange(Sender: TObject);
    procedure edValueKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dbgSelectEmpNoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    IFmMain:iMainForm;
    SvrEmployees:TDispatchConnection;
    CdsFieldProperty :TckClientDataSet;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmSelectEmp: TFrmSelectEmp;

Function SelectEmp(Var sEmpNo:String) : Boolean; overLoad;
Function SelectEmp(Var sEmpNo,sEmpName:String) : Boolean; overLoad;

implementation

uses DBFuncs;

Const
  sFieldProPerty='Select * From SysFieldProperty Where TableName=''Employees''';

{$R *.dfm}
Function SelectEmp(Var sEmpNo:String) : Boolean;
Var Str1:String;
Begin
  Result := SelectEmp(sEmpNo,Str1);
End;

Function SelectEmp(Var sEmpNo,sEmpName:String) : Boolean; overLoad;
Begin
  Result := false;
  with TFrmSelectEmp.Create(NIl) do begin
    If Not(CdsSelectEmp.Active) Then CdsSelectEmp.Open;
    edValue.Text := sEmpNo;
    if ShowModal=mrOk then begin
      sEmpNo := CdsSelectEmp.FieldByName('EmpNo').AsString;
      sEmpName := CdsSelectEmp.FieldByName('Name').AsString;
      Result := true;
    End;
  End;
End;

procedure TFrmSelectEmp.FormCreate(Sender: TObject);
begin
  IFmMain := (Application.MainForm as IMainForm);
  SvrEmployees := IFmMain.GetConnection(Handle,'','CommonSvr.CommonRDM');
  CdsSelectEmp.RemoteServer := SvrEmployees;

  CdsFieldProperty := TckClientDataSet.Create(Self);
  CdsFieldProPerty.ProviderName:='DspTemp';
  CdsFieldProPerty.RemoteServer:=SvrEmployees;
end;

procedure TFrmSelectEmp.FormShow(Sender: TObject);
var
  sTableNames: string;
begin
  SysFieldXml(CdsFieldProPerty,sFieldProPerty,'TFrmSelectEmp.Xml');
  sTableNames := 'Employees';
  if cdsFieldProperty.Active then
    SetFieldProperty(CdsFieldProPerty,cdsSelectEmp,sTableNames);
end;

procedure TFrmSelectEmp.RzBitBtn1Click(Sender: TObject);
begin
  Close;
end;

procedure TFrmSelectEmp.dbgSelectEmpNoDblClick(Sender: TObject);
begin
  if not cdsSelectEmp.IsEmpty then
    RzBitBtn2Click(Nil);
end;

procedure TFrmSelectEmp.RzBitBtn2Click(Sender: TObject);
begin
  If dbgSelectEmpNo.SelectedRows.Count<0 Then Begin
    Application.MessageBox('请先选择员工编号!', '警告', MB_ICONINFORMATION);
    Exit;
  end;
  ModalResult := mrOK;    
end;

procedure TFrmSelectEmp.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TFrmSelectEmp.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=27 then close;
end;

procedure TFrmSelectEmp.edValueChange(Sender: TObject);
const
  MatchFields: array[0..5] of string=('EmpNo','Name','Sex','DepartName','Duty','State');
var
  i: integer;
begin
  i := 0;
  try
    if edValue.Text = '' then exit;
    while (i<6)and(not CdsSelectEmp.Locate(MatchFields[i],edValue.Text,[loPartialKey,loCaseInsensitive])) do
      inc(i);
  except
  end;
end;

procedure TFrmSelectEmp.edValueKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key=VK_UP)or(Key=VK_DOWN) then
    PostMessage(dbgSelectEmpNo.Handle,WM_KEYDOWN,Key,0);
end;

procedure TFrmSelectEmp.dbgSelectEmpNoKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if key=13 then begin
    edValue.SetFocus ;
    key :=0;
  end;
end;

End.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?