listcard.pas

来自「上传个考勤系统,希望别人也能用.该代码只能算初级的东东,软件代码复用性不高,重复」· PAS 代码 · 共 158 行

PAS
158
字号
unit ListCard;

interface

uses
  Windows, SysUtils, Classes, Graphics, Controls, Forms,
  EastRiver, StdCtrls, Mask, ComCtrls, ExtCtrls, PrjConst;

type
  TdlgListCard = class(TForm)
    lbCardId: TLabel;
    lbEmpId: TLabel;
    lbEmpName: TLabel;
    edCardNo: TMaskEdit;
    edEmpId: TMaskEdit;
    edEmpName: TMaskEdit;
    btnOK: TButton;
    btnCancel: TButton;
    edChargeMoney: TMaskEdit;
    lbChargeMoney: TLabel;
    procedure FormShow(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure edEmpIdKeyPress(Sender: TObject; var Key: Char);
    procedure edChargeMoneyKeyPress(Sender: TObject; var Key: Char);
    procedure edChargeMoneyExit(Sender: TObject);
    procedure btnOKClick(Sender: TObject);
  private
    { Private declarations }
    FKind: Integer;
  public
    { Public declarations }
    Fpclk: PClockInfo;
    function Execute(pclk: PClockInfo;var CardNo, EmpId, EmpName: string; iKind: Integer): Boolean;
  end;

var
  dlgListCard: TdlgListCard;

implementation

uses timeclock, Functions;

{$R *.DFM}
const
  PeriodsHeight:Integer=120;

function TdlgListCard.Execute(pclk: PClockInfo;var CardNo, EmpId, EmpName: string; iKind: Integer): Boolean;
begin
  if not Assigned(dlgListCard) then
    dlgListCard := TdlgListCard.Create(Application);
  Self:=dlgListCard;
  FKind:=iKind;
  fpclk:=pclk;
  edCardNo.SelStart := 0;
  edCardNo.SelectAll;
  if ShowModal = mrOK then
  begin
    CardNo:=edCardNo.Text;
    EmpId:=edEmpId.Text;
    EmpName:=edEmpName.Text;
    Result := True;
  end else
    Result:=False;
end;

procedure TdlgListCard.FormShow(Sender: TObject);
  procedure GrayControl(lb: TLabel; Control: TMaskEdit; Enable: Boolean);
  begin
    if Enable then
    begin
      lb.Enabled:=True;
      lb.BringToFront;
      Control.Enabled:=True;
      Control.Color:=clWindow;
      Control.BringToFront;
    end else
    begin
      lb.Enabled:=False;
      lb.SendToBack;
      Control.Enabled:=False;
      Control.Color:=clBtnFace;
      Control.SendToBack;
    end;
  end;

  procedure SetShowControl(lb: TLabel; Control: TMaskEdit; Enable: Boolean);
  begin
    if Enable then
    begin
      lb.Visible:=True;
      Control.Enabled:=True;
      Control.Color:=clWindow
    end else
    begin
      lb.Visible:=False;
      Control.Enabled:=False;
      Control.Color:=clBtnFace;
    end;
  end;
begin
  if edCardNo.CanFocus then edCardNo.SetFocus;
  edChargeMoney.Text:='';
        GrayControl(lbCardId, edCardNo, True);
        GrayControl(lbEmpId, edEmpId, True);
        GrayControl(lbEmpName, edEmpName, True);
        GrayControl(lbChargeMoney, edChargeMoney, False);
end;

procedure TdlgListCard.FormDestroy(Sender: TObject);
begin
  dlgListCard:=nil;
end;

procedure TdlgListCard.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  if ModalResult=mrOK then
  begin
    if edCardNo.Text='' then
    begin
      if edCardNo.Canfocus then edCardNo.SetFocus;
      Raise Exception.Create(SCeEaEeA);
    end;
  end;
end;

procedure TdlgListCard.edEmpIdKeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in [#3, #8, #22, #24, '0'..'9']) then Key:=#0;
end;

procedure TdlgListCard.edChargeMoneyKeyPress(Sender: TObject;
  var Key: Char);
begin
  if not (key in [#3, #8, #22, #24, '.', '0'..'9']) then Key:=#0;
end;

procedure TdlgListCard.edChargeMoneyExit(Sender: TObject);
begin
  if Trim(edChargeMoney.Text)='' then
    Raise Exception.Create(msg_please_enter_charge_money)
  else if StrToFloat(edChargeMoney.Text)>High(WORD)/10 then
    Raise Exception.Create(format(msg_over_money_limit, [High(WORD)/10]));
end;

procedure TdlgListCard.btnOKClick(Sender: TObject);
begin
  if (FKind=0) and (edChargeMoney.Enabled) then
  begin
    ModalResult:=mrNone;
    edChargeMoneyExit(Sender);
    ModalResult:=mrOK;
  end;
end;

end.

⌨️ 快捷键说明

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