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

📄 gzedit.pas

📁 工资管理系统的代码实例
💻 PAS
字号:
unit GzEdit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, GZGLCommon, CalcTax, ExtCtrls, DB, ADODB;

type
  TGzEditForm = class(TForm)
    pnlGzxx: TPanel;
    pnlToolBar: TPanel;
    lblXm: TLabel;
    lblZybh: TLabel;
    lblJbgz: TLabel;
    lblZwgz: TLabel;
    lblBt: TLabel;
    lblKq: TLabel;
    edtXm: TEdit;
    edtJbgz: TEdit;
    edtZwgz: TEdit;
    edtBt: TEdit;
    edtKq: TEdit;
    btOK: TButton;
    btCancel: TButton;
    cbZybh: TComboBox;
    procedure btOKClick(Sender: TObject);
    procedure cbZybhChange(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    FYear, FMonth: Integer;
    FCalcTax: TCalcTax;
    FGzRec: TGzRec;
    function CheckData: Boolean;
  public
    { Public declarations }
    property GzRec: TGzRec read FGzRec;
    constructor Create(AOwner: TComponent; AYear, AMonth: Integer); reintroduce;
  end;

implementation

{$R *.dfm}

constructor TGzEditForm.Create(AOwner: TComponent; AYear, AMonth: Integer);
begin
  inherited Create(AOwner);

  FYear := AYear;
  FMonth := AMonth;
  FCalcTax := TCalcTax.Create;

  // 初始化职员编号备选项
  with TAdoQuery.Create(nil) do
  try
    Connection := AdoGzgl;
    SQL.Text := 'Select Zybh from Zyxx';
    Open;
    First;
    while not eof do
    begin
      cbZybh.AddItem(FieldByName('Zybh').AsString, nil);
      Next;
    end;
    Close;
  finally
    Free;
  end;
end;

function TGzEditForm.CheckData: Boolean;
begin
  Result := False;

  // 检验数据的合法性
  with TAdoQuery.Create(nil) do
  try
    Connection := AdoGzgl;
    SQL.Text := 'Select Zybh from Ydgz Where Zybh = ' + QuotedStr(cbZybh.Text) +
      ' and ND = ' + IntToStr(FYear) + ' and YD = ' + IntToStr(FMonth);
    Open;
    if RecordCount > 0 then
    begin
      ShowMessage('当前职员的本月工资已经计算,请选择其他职员!');
      Close;
      cbZybh.SetFocus;
      Exit;
    end;
  finally
    Free;
  end;

  edtBt.Text := Trim(edtBt.Text);
  edtKq.Text := Trim(edtKq.Text);

  if not IsNumeric(edtBt.Text) then
  begin
    ShowMessage('补贴数据非法!');
    edtBt.SetFocus;
    Exit;
  end;

  if not IsNumeric(edtKq.Text) then
  begin
    ShowMessage('考勤数据非法!');
    edtKq.SetFocus;
    Exit;
  end;
  Result := True;
end;

procedure TGzEditForm.btOKClick(Sender: TObject);
begin
  if not CheckData then Exit;  //数据不合法

  with FGZRec do
  begin
    Zybh := cbZybh.Text;
    Jbgz := strToFloat(edtJbgz.Text);
    Zwgz := strToFloat(edtZwgz.Text);
    Bt := strToFloat(edtBt.Text);
    Kq := strToFloat(edtKq.Text);
  end;

  FCalcTax.CalcSj(FGZRec);
  ModalResult := mrOK;
end;

procedure TGzEditForm.cbZybhChange(Sender: TObject);
begin
  // 改变职员,则刷新职员姓名、基本工资和职务工资
  with TAdoQuery.Create(nil) do
  try
    Connection := AdoGzgl;
    SQL.Text := 'Select a.Zybh, a.Xm, b.Jbgz, b.Zwgz from Zyxx a, Gzjb b ' +
      'where a.JbID = b.JbID and a.Zybh = ' + QuotedStr(cbZybh.Text);
    Open;
    edtXm.Text := FieldByName('Xm').AsString;
    edtJbgz.Text := FieldByName('Jbgz').AsString;
    edtZwgz.Text := FieldByName('Zwgz').AsString;
    edtBt.Text := '0';
    edtKq.Text := '0';
  finally
    Free;
  end;
end;

procedure TGzEditForm.FormDestroy(Sender: TObject);
begin
  if Assigned(FCalcTax) then
    FCalcTax := nil;
end;

end.

⌨️ 快捷键说明

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