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

📄 rl_qjtz_unit.~pas

📁 通用人力资源系统,分类可以自设定 可以熟练掌握DELPHI语言
💻 ~PAS
字号:
unit rl_qjtz_Unit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CalcExpress, Grids, DBGridEh, DB, DBTables, ExtCtrls,
  ComCtrls, DBCtrls, DBGrids, StrUtils, Animate, GIFCtrl, PrnDbgeh;

type
  Trl_qjtz = class(TForm)
    StatusBar1: TStatusBar;
    Panel1: TPanel;
    Table1: TTable;
    DataSource1: TDataSource;
    CalcExpress1: TCalcExpress;
    vars: TMemo;
    edt_gongshi: TEdit;
    cb_gjzd: TComboBox;
    Label4: TLabel;
    Label5: TLabel;
    tb_dw: TTable;
    tb_bz: TTable;
    tb_bm: TTable;
    Panel3: TPanel;
    Button3: TButton;
    Button7: TButton;
    Button9: TButton;
    Button4: TButton;
    Button8: TButton;
    Button12: TButton;
    Button5: TButton;
    Button11: TButton;
    Button6: TButton;
    Button10: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    Button18: TButton;
    Button19: TButton;
    Button20: TButton;
    Button21: TButton;
    Button22: TButton;
    Button23: TButton;
    Button24: TButton;
    Button25: TButton;
    Button1: TButton;
    tb_gzzk: TTable;
    Button13: TButton;
    Label3: TLabel;
    Panel2: TPanel;
    tb_qj: TTable;
    DataSource2: TDataSource;
    DBGridEh1: TDBGridEh;
    db_vars: TDBMemo;
    Splitter1: TSplitter;
    Splitter2: TSplitter;
    Panel4: TPanel;
    Label1: TLabel;
    cb_dw: TComboBox;
    Label2: TLabel;
    cb_fc: TComboBox;
    edt_min: TEdit;
    edt_max: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Button14: TButton;
    DBGrid1: TDBGrid;
    Label9: TLabel;
    Label10: TLabel;
    edt_xs: TEdit;
    values: TMemo;
    edt_mc: TEdit;
    Label11: TLabel;
    Button2: TButton;
    Label12: TLabel;
    cb_gjzd1: TComboBox;
    RxGIFAnimator1: TRxGIFAnimator;
    Button26: TButton;
    p1: TPrintDBGridEh;
    procedure FormCreate(Sender: TObject);
    procedure tb_dwAfterCancel(DataSet: TDataSet);
    procedure cb_dwChange(Sender: TObject);
    procedure cb_gjzdChange(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
    procedure Button20Click(Sender: TObject);
    procedure Button21Click(Sender: TObject);
    procedure Button22Click(Sender: TObject);
    procedure Button23Click(Sender: TObject);
    procedure Button24Click(Sender: TObject);
    procedure Button25Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure edt_minKeyPress(Sender: TObject; var Key: Char);
    procedure edt_maxKeyPress(Sender: TObject; var Key: Char);
    procedure Button10Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button26Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  rl_qjtz: Trl_qjtz;

implementation

{$R *.dfm}

procedure Trl_qjtz.FormCreate(Sender: TObject);

var
  i: integer;
begin
  tb_dw.Open;
  tb_dw.First;
  with tb_dw do
    while not eof do
    begin
      cb_dw.Items.Add(tb_dw['dw']);
      next;
    end;
  tb_dw.close;
  cb_gjzd.Items.Clear;
  cb_gjzd1.Items.Clear;
  table1.First;
  for i := 1 to 30 do
    table1.Next;
  with table1 do
    while not eof do
    begin
      cb_gjzd.Items.Add(table1['gzdm'] + '   ' + table1['xsmc']);
      cb_gjzd1.Items.Add(table1['gzdm'] + '   ' + table1['xsmc']);
      table1.Next;
    end;
  cb_gjzd.ItemIndex := -1;
  cb_gjzd1.ItemIndex := -1;
  cb_dw.ItemIndex := -1;
end;

procedure Trl_qjtz.tb_dwAfterCancel(DataSet: TDataSet);
begin
  cb_fc.Items.Clear;

  tb_bm.Open;
  tb_bm.First;
  with tb_bm do
    while not eof do
    begin
      if trim(cb_dw.Text) = trim(tb_bm['bmlb']) then
        cb_fc.Items.Add(tb_bm['bmmc']);
      next;
    end;
  tb_bm.close;
  cb_fc.ItemIndex := -1;
  cb_fc.Text := '';



end;

procedure Trl_qjtz.cb_dwChange(Sender: TObject);
begin
  cb_fc.Items.Clear;

  tb_bm.Open;
  tb_bm.First;
  with tb_bm do
    while not eof do
    begin
      if trim(cb_dw.Text) = trim(tb_bm['bmlb']) then
        cb_fc.Items.Add(tb_bm['bmmc']);
      next;
    end;
  tb_bm.close;
  cb_fc.ItemIndex := -1;
  cb_fc.Text := '';

end;

procedure Trl_qjtz.cb_gjzdChange(Sender: TObject);
begin
  label5.Caption := cb_gjzd.Text + ' =';
  vars.Lines.Clear;
  panel3.Visible := true;
end;

procedure Trl_qjtz.Button15Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '0';
  edt_xs.Text := edt_xs.Text + '0';
end;

procedure Trl_qjtz.Button16Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '1';
  edt_xs.Text := edt_xs.Text + '1';
end;

procedure Trl_qjtz.Button17Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '2';
  edt_xs.Text := edt_xs.Text + '2';
end;

procedure Trl_qjtz.Button18Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '3';
  edt_xs.Text := edt_xs.Text + '3';
end;

procedure Trl_qjtz.Button19Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '4';
  edt_xs.Text := edt_xs.Text + '4';
end;

procedure Trl_qjtz.Button20Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '5';
  edt_xs.Text := edt_xs.Text + '5';
end;

procedure Trl_qjtz.Button21Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '6';
  edt_xs.Text := edt_xs.Text + '6';
end;

procedure Trl_qjtz.Button22Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '7';
  edt_xs.Text := edt_xs.Text + '7';
end;

procedure Trl_qjtz.Button23Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '8';
  edt_xs.Text := edt_xs.Text + '8';
end;

procedure Trl_qjtz.Button24Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '9';
  edt_xs.Text := edt_xs.Text + '9';
end;

procedure Trl_qjtz.Button25Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '.';
  edt_xs.Text := edt_xs.Text + '.';
end;

procedure Trl_qjtz.Button3Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '+';
  edt_xs.Text := edt_xs.Text + '+';
end;

procedure Trl_qjtz.Button4Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '-';
  edt_xs.Text := edt_xs.Text + '-';
end;

procedure Trl_qjtz.Button5Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '*';
  edt_xs.Text := edt_xs.Text + '*';
end;

procedure Trl_qjtz.Button6Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '/';
  edt_xs.Text := edt_xs.Text + '/';
end;

procedure Trl_qjtz.Button7Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + '(';
  edt_xs.Text := edt_xs.Text + '(';
end;

procedure Trl_qjtz.Button8Click(Sender: TObject);
begin
  edt_gongshi.Text := edt_gongshi.Text + ')';
  edt_xs.Text := edt_xs.Text + ')';
end;

procedure Trl_qjtz.Button11Click(Sender: TObject);
begin
  if strlen(pchar(edt_gongshi.Text)) > 0 then
  begin
    edt_gongshi.Text := copy(edt_gongshi.Text, 1, strlen(pchar(edt_gongshi.Text)) - 1);
  end;
end;

procedure Trl_qjtz.Button1Click(Sender: TObject);
begin
  if (trim(edt_min.Text) = '') or (trim(edt_max.Text) = '') or (trim(cb_gjzd.Text) = '') or (trim(edt_gongshi.Text) = '') then
  begin
    Application.MessageBox('添加的数据有的为空', '重新选择', MB_ICONWARNING);
    exit;
  end
  else
  begin
    tb_qj.Append;
    tb_qj['gzdm'] := trim(copy(cb_gjzd.text, 1, 3));
    tb_qj['min_x'] := strtofloat(edt_min.Text);
    tb_qj['max_x'] := strtofloat(edt_max.Text);
    tb_qj['gongshi'] := edt_gongshi.Text;
    tb_qj['xsmc'] := edt_mc.Text;
    db_vars.Lines.AddStrings(vars.Lines);
    tb_qj.Post;
  end;

end;

procedure Trl_qjtz.Button13Click(Sender: TObject);
begin
  close;
end;

procedure Trl_qjtz.Button2Click(Sender: TObject);
var args: array[0..100] of extended;
  i, qj_chazhao: integer;
  qj_gongshi: string;
begin
  if (cb_dw.Text = '') or (cb_fc.text = '') or (cb_gjzd1.Text = '') then
  begin
    Application.MessageBox('请选择单位 部门或要调整的字段!', '重新选择', MB_ICONWARNING);
    exit;
  end
  else
  begin
    tb_gzzk.Open;
    tb_gzzk.First;
    with tb_gzzk do
      while not eof do
      begin
        if (tb_gzzk['a2'] = cb_dw.Text) and (tb_gzzk['a3'] = cb_fc.Text) then
        begin
          qj_chazhao := 0;
          vars.Lines.Clear;
          tb_qj.First;
          with tb_qj do
            while not eof do
            begin
              if (tb_qj['gzdm'] = trim(copy(cb_gjzd1.Text, 1, 3))) and (tb_gzzk[trim(copy(cb_gjzd1.Text, 1, 3))] >= tb_qj['min_x']) and (tb_gzzk[trim(copy(cb_gjzd1.Text, 1, 3))] <= tb_qj['max_x']) then
              begin
                qj_chazhao := 1;
                vars.Lines.AddStrings(db_vars.Lines);
                qj_gongshi := tb_qj['gongshi'];
              end;
              next;
            end;
          if qj_chazhao = 0 then
          begin
            showmessage('输入的区间变量数据有误或区间公式设置有误,请返回查找!');
            vars.Lines.Clear;
          end
          else
          begin
            Values.Lines.Clear;
            for i := 0 to Vars.Lines.Count - 1 do
            begin
              if tb_gzzk[Vars.Lines.Strings[i]] = null then
                Values.Lines.Add('0')
              else
                Values.Lines.Add(floattostr(tb_gzzk[Vars.Lines.Strings[i]]));
            end;
            if (Vars.Lines.Count = Values.Lines.Count) then
            begin

              CalcExpress1.Formula := qj_gongshi;

              CalcExpress1.Variables := Vars.Lines;

              for i := 0 to Values.Lines.Count - 1 do
                args[i] := StrToFloat(Values.Lines[i]);

              tb_gzzk.Edit;
              tb_gzzk[trim(copy(cb_gjzd1.Text, 1, 3))] := round(CalcExpress1.calc(args) * 100) / 100;
            end
            else
              MessageDlg('Variables and Variable values lists should have the same lines quantity.', mtInformation, [mbOk], 0);
          end;
        end;
        next;
      end;
    tb_gzzk.close;
    Application.MessageBox('调整完毕!如果此字段的数据影响薪资结果,请重新录入并计算', '重新选择', MB_ICONWARNING);

  end;
end;

procedure Trl_qjtz.edt_minKeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
    #08, '-', '0'..'9': ;
    '.': if AnsiContainsText(edt_min.Text, '.') then
        Key := #0; {如果已经输入了小数点,则取消}
  else {其他键一律视为无效}
    Key := #0;
  end;
end;

procedure Trl_qjtz.edt_maxKeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
    #08, '-', '0'..'9': ;
    '.': if AnsiContainsText(edt_max.Text, '.') then
        Key := #0; {如果已经输入了小数点,则取消}
  else {其他键一律视为无效}
    Key := #0;
  end;
end;

procedure Trl_qjtz.Button10Click(Sender: TObject);
begin
  edt_gongshi.Text := '';
  edt_xs.Text := '';
end;

procedure Trl_qjtz.Button9Click(Sender: TObject);
var
  i: integer;
  biaozhi_zd: integer;
begin
  biaozhi_zd := 0;
  if table1.RecNo < 30 then
  begin
    Application.MessageBox('字段a1到a30不能做为计算变量!', '重新选择', MB_ICONWARNING);
    exit;
  end
  else
    edt_gongshi.Text := edt_gongshi.Text + table1['gzdm'];
  edt_xs.Text := edt_xs.Text + table1['xsmc'];
  if vars.Lines.Count = 0 then
  begin
    vars.Lines.Clear;
    vars.Lines.Add(table1['gzdm']);
  end
  else
  begin
    for i := 0 to vars.Lines.Count do
    begin
      if uppercase(vars.Lines.Strings[i]) = uppercase(table1['gzdm']) then
        biaozhi_zd := 1;
    end;
    if biaozhi_zd = 0 then
      vars.Lines.Add(table1['gzdm']);
  end;

//

end;

procedure Trl_qjtz.Button14Click(Sender: TObject);
begin
  if tb_qj.RecordCount > 0 then
    tb_qj.Delete; ;

end;

procedure Trl_qjtz.Button26Click(Sender: TObject);
begin
  p1.Preview;
end;

end.

⌨️ 快捷键说明

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