sjd_zhcx_tj.pas

来自「人事管理程序源码」· PAS 代码 · 共 454 行

PAS
454
字号
unit sjd_zhcx_tj;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, ComCtrls, Mask;

type
  TForm_sjd_zhcx_tj = class(TForm)
    Panel1: TPanel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    field_name: TComboBox;
    sjf: TComboBox;
    jg_edit: TEdit;
    jg_combo: TComboBox;
    lj_sjf: TComboBox;
    BitBtn1: TBitBtn;
    memo_cxtj: TMemo;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn5: TBitBtn;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    jg_sj: TMaskEdit;
    Panel7: TPanel;
    Label13: TLabel;
    sd_dw: TComboBox;
    sd_bm: TComboBox;
    Label14: TLabel;
    Panel8: TPanel;
    Label1: TLabel;
    Label15: TLabel;
    cx_tjmc: TEdit;
    procedure FormShow(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure field_nameEnter(Sender: TObject);
    procedure field_nameExit(Sender: TObject);
    procedure lj_sjfChange(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure field_nameChange(Sender: TObject);
    procedure sjfChange(Sender: TObject);
    procedure jg_comboChange(Sender: TObject);
    procedure lj_sjfKeyPress(Sender: TObject; var Key: Char);
    procedure jg_editChange(Sender: TObject);
    procedure jg_editKeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure jg_sjChange(Sender: TObject);
    procedure sd_dwChange(Sender: TObject);
    procedure jg_editExit(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure cx_tjmcExit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form_sjd_zhcx_tj: TForm_sjd_zhcx_tj;
  ls_cxtj:string;
implementation

uses U_gzda_dm;


{$R *.DFM}

procedure TForm_sjd_zhcx_tj.FormShow(Sender: TObject);
begin
  with gzda_dm.ADODataSet10 do begin
    if active then active:=false;
    commandtext:='select * from dwbmb order by dwbm';
    open;
    first;
    sd_dw.Items.Clear;
    while not eof do begin
      sd_dw.Items.Add(fieldbyname('dwbm').AsString+'.'+fieldbyname('dwmc').AsString);
      next;
    end;
  end;
  with gzda_dm.ADODataSet10 do begin
    if active then active:=false;
    commandtext:='select * from daxm_xz order by bh';
    open;
    first;
    field_name.Items.Clear;
    while not eof do begin
      field_name.Items.Add(fieldbyname('mc').AsString);
      next;
    end;
  end;
  jg_combo.Items.Clear;
  memo_cxtj.Lines.Text:='';
  memo_cxtj.Refresh ;
end;

procedure TForm_sjd_zhcx_tj.BitBtn5Click(Sender: TObject);
begin
  if Application.MessageBox('确实要放弃设定查询条件吗?','提示',MB_YesNO+ MB_DEFBUTTON2) <> IDYes then
     Abort;
  memo_cxtj.Lines.Text:='';
  memo_cxtj.Refresh ;
  close;
end;

procedure TForm_sjd_zhcx_tj.BitBtn3Click(Sender: TObject);
begin
  memo_cxtj.Lines.Text:='';
  memo_cxtj.Refresh ;
  field_name.Enabled:=true;
  field_name.SetFocus;
  field_name.Text:='';
  sjf.Text:='';
  jg_combo.Text:='';
  lj_sjf.Text:='';
  bitbtn2.Enabled:=false;
  bitbtn3.Enabled:=false;
end;

procedure TForm_sjd_zhcx_tj.BitBtn1Click(Sender: TObject);
var
  bmbh,bmmc,ls_mc:string;
begin
   ls_mc:=copy(field_name.Text,1,4);
   if sjf.Text<>'like' then
      begin
        if jg_edit.Visible then
           begin
             IF ls_cxtj<>'gzze' then
                ls_cxtj:='('+ls_cxtj+sjf.Text +''''+jg_edit.text+''''+')'
             else
                ls_cxtj:='('+ls_cxtj+sjf.Text +jg_edit.text+')';
           end;
        if jg_sj.Visible then
           ls_cxtj:='('+ls_cxtj+sjf.Text +''''+jg_sj.text+''''+')';
        if jg_combo.Visible then
           begin
             if ls_mc='部门' then
                begin
                  bmmc:=jg_combo.Text; //取出部门名称
                  with gzda_dm.ADODataSet10 do begin
                    if active then active:=false;
                    commandtext:='select bh from fzsj where (mc=:bmmc) and (fzsjxmbh=10)';
                    Parameters.ParamByName('bmmc').Value:=bmmc;
                    open;
                    if recordcount<>0 then
                       begin
                         if fieldbyname('bh').AsInteger<10 then
                            bmbh:='0'+fieldbyname('bh').AsString
                         else
                            bmbh:=fieldbyname('bh').AsString;
                       end
                    else
                       abort;
                    close;   
                    ls_cxtj:='('+'zgxh like '+QuotedStr(bmbh+'%')+')';
                  end;
                end
             else
               ls_cxtj:='('+ls_cxtj+sjf.Text +''''+jg_combo.text+''''+')';
           end;
      end
   else
      begin
        if jg_edit.Visible then
           begin
             IF ls_cxtj<>'gzze' then
                ls_cxtj:='('+ls_cxtj+' '+sjf.Text +' '+''''+'%'+jg_edit.text+'%'+''''+')'
             else
                ls_cxtj:='('+ls_cxtj+'='+jg_edit.text+')' ;
             end;
        if jg_sj.Visible then
           ls_cxtj:='('+ls_cxtj+'='+''''+jg_sj.text+''''+')';
        if jg_combo.Visible then
           ls_cxtj:='('+ls_cxtj+' '+sjf.Text +' '+''''+'%'+jg_combo.text+'%'+''''+')';
      end;
   if lj_sjf.Text='且' then  ls_cxtj:=ls_cxtj+' and ';
   if lj_sjf.Text='或' then  ls_cxtj:=ls_cxtj+' or ';
   memo_cxtj.Lines.Text:=memo_cxtj.Lines.Text+ls_cxtj;
   memo_cxtj.Refresh;
   if ((lj_sjf.Text='') or (lj_sjf.Text='无')) then
      begin
         field_name.Enabled:=false;
         sjf.Enabled:=false;
         jg_combo.Enabled:=false;
         jg_edit.Enabled:=false;
         jg_sj.Enabled:=false;
         lj_sjf.Enabled:=false;
         bitbtn2.Enabled:=true;
         bitbtn3.Enabled:=true;
         bitbtn2.SetFocus;
         bitbtn1.Enabled:=false;
      end
   else
     begin
       field_name.Enabled:=true;
       field_name.SetFocus;
       sjf.Enabled:=false;
       jg_combo.Enabled:=false;
       jg_edit.Enabled:=false;
       jg_sj.Enabled:=false;
       lj_sjf.Enabled:=false;
       bitbtn1.Enabled:=false;
     end;
end;

procedure TForm_sjd_zhcx_tj.field_nameEnter(Sender: TObject);
begin
  ls_cxtj:='';
  sjf.Text:='';
  jg_combo.text:='';
  jg_edit.Text:='';
  lj_sjf.Text:='';
  //jg_sj.Date:=now;
end;

procedure TForm_sjd_zhcx_tj.field_nameExit(Sender: TObject);
var
  zdmc:string;
begin
  zdmc:=copy(field_name.text,1,pos('(',field_name.text)-1);
  ls_cxtj:=copy(field_name.text,pos('(',field_name.text)+1,pos(')',field_name.text)-pos('(',field_name.text)-1);
  with gzda_dm.ADODataSet10 do begin
    if active then active:=false;
    commandtext:='select sj.bh,sj.mc from fzsj sj,fzsjxm xm where (sj.fzsjxmbh=xm.fzsjxmbh) and (xm.mc like :cx_mc) order by sj.bh';
    Parameters.ParamByName('cx_mc').Value:='%'+zdmc+'%';
    open;
  end;
  if gzda_dm.ADODataSet10.RecordCount<>0 then  //实例为组合框
     begin
       jg_edit.Visible:=false;
       jg_sj.Visible:=false;
       jg_combo.Visible:=true;
       jg_combo.Items.Clear;
       with gzda_dm.ADODataSet10 do begin
         while not eof do begin
           jg_combo.Items.Add(fieldbyname('mc').AsString);
           next;
         end;
       end;
     end
  else
     begin
       if (pos('学历',zdmc)<>0) or (pos('部门',zdmc)<>0) then
          begin
            with gzda_dm.ADODataSet10 do begin
              if active then active:=false;
              commandtext:='select bh,mc from fzsj where (fzsjxmbh=:xh) order by bh';
              if (pos('学历',zdmc)<>0) then
                 Parameters.ParamByName('xh').Value:=6
              else
                 Parameters.ParamByName('xh').Value:=10;
              open;
            end;
            if gzda_dm.ADODataSet10.RecordCount<>0 then  //实例为组合框
               begin
                 jg_edit.Visible:=false;
                 jg_sj.Visible:=false;
                 jg_combo.Visible:=true;
                 jg_combo.Items.Clear;
                 with gzda_dm.ADODataSet10 do begin
                   while not eof do begin
                     jg_combo.Items.Add(fieldbyname('mc').AsString);
                     next;
                   end;
                 end;
               end ;
          end
       else
          begin
             if pos('时间',zdmc)<>0 then  //时间选项 实例为jg_sj
                begin
                  jg_combo.Visible:=false;
                  jg_edit.Visible:=false;
                  jg_sj.Visible:=true;
                end
             else
                begin
                  jg_combo.Visible:=false;
                  jg_edit.Visible:=true;
                  jg_sj.Visible:=false;
                end;
          end;
     end;
end;

procedure TForm_sjd_zhcx_tj.lj_sjfChange(Sender: TObject);
begin
  field_name.Enabled:=false;
  sjf.Enabled:=false;
  jg_combo.Enabled:=false;
  jg_edit.Enabled:=false;
  jg_sj.Enabled :=false;
end;

procedure TForm_sjd_zhcx_tj.BitBtn2Click(Sender: TObject);
var
  cd:integer;
  dwbm:string;
begin
  dwbm:='';
  if sd_dw.Text<>'' then
     dwbm:=dwbm+copy(sd_dw.Text,1,2);
  if sd_bm.Text<>'' then
     dwbm:=dwbm+copy(sd_bm.Text,1,2);
  cd:=length(trim(memo_cxtj.lines.text));
  if cd>200 then
     begin
       showmessage('查询条件太复杂,请清除后重新设置!!');
       abort;
     end;
  if trim(copy(trim(memo_cxtj.Lines.Text),cd-2,3))='and' then
     memo_cxtj.Lines.Text:=copy(trim(memo_cxtj.Lines.Text),1,cd-3);
  if trim(copy(trim(memo_cxtj.Lines.Text),cd-2,2))='or' then
     memo_cxtj.Lines.Text:=copy(trim(memo_cxtj.lines.text),1,cd-2);
  if memo_cxtj.Lines.Text<>'' then
     begin
       if dwbm<>'' then
          memo_cxtj.Lines.Text:='(zgxh like '+QuotedStr(dwbm+'%')+') and '+memo_cxtj.Lines.Text;
     end
  else
     begin
       if dwbm<>'' then
          memo_cxtj.Lines.Text:='(zgxh like '+QuotedStr(dwbm+'%')+')';
     end;
  close;
end;

procedure TForm_sjd_zhcx_tj.field_nameChange(Sender: TObject);
begin
  sjf.Enabled:=true;
end;

procedure TForm_sjd_zhcx_tj.sjfChange(Sender: TObject);
begin
  jg_combo.Enabled:=true;
  jg_edit.Enabled:=true;
  jg_sj.Enabled:=true;
end;

procedure TForm_sjd_zhcx_tj.jg_comboChange(Sender: TObject);
begin
  lj_sjf.Enabled:=true;
  bitbtn1.Enabled:=true;
end;

procedure TForm_sjd_zhcx_tj.lj_sjfKeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then bitbtn1.SetFocus
  else
    key:=#0;
end;

procedure TForm_sjd_zhcx_tj.jg_editChange(Sender: TObject);
begin
  lj_sjf.Enabled:=true;
  bitbtn1.Enabled:=true;
end;

procedure TForm_sjd_zhcx_tj.jg_editKeyPress(Sender: TObject;
  var Key: Char);
begin
  ls_cxtj:=copy(field_name.text,pos('(',field_name.text)+1,pos(')',field_name.text)-pos('(',field_name.text)-1);
  if (ls_cxtj='je') or (ls_cxtj='sl') then
    if not (key in ['.',#13,#8,'0'..'9']) then key:=#0;
  if key=#13 then
    begin
      if jg_edit.Text='' then abort;
      lj_sjf.SetFocus;
    end;
end;

procedure TForm_sjd_zhcx_tj.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key =#13 then
     begin
       Key := #0;
       Perform(WM_NEXTDLGCTL,0,0);
     end;
end;

procedure TForm_sjd_zhcx_tj.jg_sjChange(Sender: TObject);
begin
  lj_sjf.Enabled:=true;
  bitbtn1.Enabled:=true;
end;

procedure TForm_sjd_zhcx_tj.sd_dwChange(Sender: TObject);
var
  dwbm:string;
begin
  sd_bm.Enabled:=true;
  bitbtn2.Enabled:=true;
  dwbm:=copy(sd_dw.Text,1,2);
  with gzda_dm.ADODataSet10 do begin
    if active then active:=false;
    commandtext:='select * from bmbmb where (dwbm=:dwbm) order by dwbm,bmbm';
    Parameters.ParamByName('dwbm').Value:=dwbm;
    open;
    first;
    sd_bm.Items.Clear;
    while not eof do begin
      sd_bm.Items.Add(fieldbyname('bmbm').AsString+'.'+fieldbyname('bmmc').AsString);
      next;
    end;
  end;
  sd_bm.Refresh;
end;

procedure TForm_sjd_zhcx_tj.jg_editExit(Sender: TObject);
var
  gzze:real;
begin
  if pos('工资总额',field_name.Text)<>0 then
     begin
       try
         gzze:=strtofloat(jg_edit.Text);
       except
         showmessage('工资总额输入错误,请重新输入!!');
         jg_edit.SetFocus;
         abort;
       end;
     end;
end;

procedure TForm_sjd_zhcx_tj.FormActivate(Sender: TObject);
begin
  cx_tjmc.Text:='';
  cx_tjmc.SetFocus;
end;

procedure TForm_sjd_zhcx_tj.cx_tjmcExit(Sender: TObject);
begin
  field_name.SetFocus;
end;

end.

⌨️ 快捷键说明

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