otdefine.pas

来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 342 行

PAS
342
字号
unit otdefine;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, DBCtrls, Mask, ToolEdit, RXDBCtrl, RxLookup, CheckLst,
  Db, ADODB, ComCtrls, Gauges;

type
  TFormotdefine = class(TForm)
    GroupBox2: TGroupBox;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    RG1: TRadioGroup;
    GroupBox3: TGroupBox;
    RB1: TRadioButton;
    RB2: TRadioButton;
    RxCheck1: TCheckListBox;
    Edit32: TEdit;
    ComLookName: TRxDBLookupCombo;
    OK: TButton;
    Cancel: TButton;
    Dsdept: TDataSource;
    Qrydept: TADOQuery;
    Panel1: TPanel;
    Gauge1: TGauge;
    Label9: TLabel;
    Edit1: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    MaskEdit2: TMaskEdit;
    MaskEdit3: TMaskEdit;
    ComboBox1: TComboBox;
    Memo1: TMemo;
    Label12: TLabel;
    MaskEdit6: TMaskEdit;
    Label13: TLabel;
    Label15: TLabel;
    ComboBox2: TComboBox;
    DateTimePicker1: TDateTimePicker;
    Label3: TLabel;
    MaskEdit1: TMaskEdit;
    DateTimePicker2: TDateTimePicker;
    Label10: TLabel;
    MaskEdit4: TMaskEdit;
    DateTimePicker3: TDateTimePicker;
    procedure FormCreate(Sender: TObject);
    procedure RG1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ComLookNameChange(Sender: TObject);
    procedure RB1Click(Sender: TObject);
    procedure Edit32KeyPress(Sender: TObject; var Key: Char);
    procedure CancelClick(Sender: TObject);
    procedure OKClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Edit3Exit(Sender: TObject);
    procedure ComboBox2Exit(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DateTimePicker1Change(Sender: TObject);
    procedure DateTimePicker2Change(Sender: TObject);
    procedure MaskEdit3Exit(Sender: TObject);
    procedure DateTimePicker3Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Formotdefine: TFormotdefine;

implementation

uses datamol,main,publicfunction;

{$R *.DFM}

procedure TFormotdefine.FormCreate(Sender: TObject);
begin
     datamod.qrypublic.open;
     Qrydept.Open;
     datamod.Qryatdset.open;
     combobox2.text:=inttostr(Datamod.Qryatdsetwhichitem.value);
end;

procedure TFormotdefine.RG1Click(Sender: TObject);
begin
  Case RG1.ItemIndex of
    0:begin
        GroupBox3.Enabled:=False;
      end;
    1:begin
        GroupBox3.Enabled:=True;
        Edit32.Visible:=False;
        ComLookName.Visible:=True;
      end;
    2:begin
        GroupBox3.Enabled:=True;
        Edit32.Visible:=True;
        ComLookName.Visible:=False;
      end;
  end;
end;

procedure TFormotdefine.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
      qrydept.close;
      datamod.qryatdset.close;
      datamod.qryotkind.close;
      datamod.qrypublic.close;
end;

procedure TFormotdefine.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
     formotdefine:=nil;
     action:=cafree;
end;

procedure TFormotdefine.ComLookNameChange(Sender: TObject);
begin
  with Datamod do
  begin
      Query1.Close ;
      Query1.SQL.Text :='Select * From per24010 where deptno='+''''+ComLookName.Value +''''+' order by workno';
      Query1.Prepared ;
      Query1.Open ;
      Query1.First ;
      RxCheck1.Items.Clear ;
      while not Query1.Eof do
      begin
        if length(Query1.FieldByname('name').AsString)=4 then
          Rxcheck1.Items.Add(Query1.FieldByname('workno').AsString+' '+Query1.FieldByname('name').AsString+
            '  '+Query1.FieldByname('cardno').AsString)
        else
          Rxcheck1.Items.Add(Query1.FieldByname('workno').AsString+' '+Query1.FieldByname('name').AsString+
            '  '+Query1.FieldByname('cardno').AsString);
        Rxcheck1.Checked[Rxcheck1.Items.Count -1]:=true;
        Query1.Next ;
      end;
      Query1.Close ;
  end;//begin
end;

procedure TFormotdefine.RB1Click(Sender: TObject);
var
  i:integer;
begin
  For i:=0 to RxCheck1.Items.Count-1 do
  if Sender=rb1 then
    RxCheck1.Checked[i]:=true
  else
    RxCheck1.Checked[i]:=False;
end;

procedure TFormotdefine.Edit32KeyPress(Sender: TObject; var Key: Char);
var
  source:string;
begin
if key<>#13 then exit;
 with Datamod do
  begin
    Query1.Close ;
    Query1.SQL.Text :='Select * From per24010 where workno='+''''+Edit32.Text+'''';
    Query1.Prepared ;
    Query1.Open ;
    if Query1.Recordcount=0 then
       Application.MessageBox(PChar('你输入的工号不存在!请重新输入!'),'工号错误',
        mb_iconError)
    else
    begin
      if length(Query1.FieldByname('name').AsString)=4 then
       source:=Query1.FieldByname('workno').AsString+' '+Query1.FieldByname('name').AsString+
          '   '+Query1.FieldByname('cardno').AsString
      else
        source:=Query1.FieldByname('workno').AsString+' '+Query1.FieldByname('name').AsString+
          ' '+Query1.FieldByname('cardno').AsString;
      if RxCheck1.Items.IndexOf(source)=-1 then
               begin
               Rxcheck1.Items.Add(Source);
                Rxcheck1.Checked[RxCheck1.Items.Count-1]:=True;
               end;
    end;
  end;//begin
  Edit32.Text:='';
  Edit32.SetFocus;
end;

procedure TFormotdefine.CancelClick(Sender: TObject);
begin
    close;
end;

procedure TFormotdefine.OKClick(Sender: TObject);
var
  i:integer;
  hanGh:string;
  ygbhcd:integer;
begin
  if RxCheck1.Items.Count<=0 then Exit;
  cursor:=crHourGlass;
  if (Trim(Edit1.Text)<>'') and (combobox1.text<>'') and (combobox2.text<>'') then
  begin
    with datamod do
    begin
      Qryot.DisableControls;
      Qryot.Close ;
      Gauge1.Enabled :=True;
      Gauge1.Visible  :=True;
      Gauge1.MaxValue:=RxCheck1.Items.Count +1;
      Gauge1.Progress :=0;
      ygbhcd:=Datamod.Qrypublicworknolength.AsInteger;
      For i:=0 to RxCheck1.Items.Count -1 do
      begin
        hanGh:=Rxcheck1.items[i];
        hanGh:=Copy(hanGh,1,ygbhcd );
        if Rxcheck1.Checked[i] then
        begin
         Query1.Close ;
         Query1.SQL.Text :='select * from atd11010 where (workno='''+hangh+''') and startrq='''+maskedit3.Text+''' and endrq='''+maskedit1.text+''' ';
         Query1.Open;
         if not Query1.Eof then
         begin
           Application.MessageBox(pchar('发现工号为:'+hangh+'的员工已开过加班单!!'),'加班单重复',mb_iconquestion);
          end else
            if Query1.eof then
              begin
               if trim(maskedit4.text)='' then maskedit4.text:=formatdatetime('yyyymmdd',now);
               Query1.Close ;
               Query1.SQL.Text :='Insert into atd11010(otno,workno,cardno,rq,StartRq,otkind,'+
               'gotime,Endrq,outtime,decrease,hours,memo,operator,checked,items) Select '''+Edit1.text+''',per24010.workno,per24010.cardno,'''+maskedit4.text+''','+
               ''''+MaskEdit3.text+''','''+Combobox1.Text+''','''+Maskedit6.text+''','''+Maskedit1.text+''','''+Maskedit2.text+''','+
               ''''+Edit3.text+''','''+Edit4.text+''','''+Memo1.text+''','''+pubworkname+''',0,'''+combobox2.text+''' '+
               ' from per24010 where per24010.workno='''+hanGh+'''';
               Query1.Prepared ;
               Query1.ExecSQL  ;
           end;
        end;
          Gauge1.AddProgress(1);
      end;
      Qryot.Open ;
      Qryot.EnableControls;
    end;//with
    RXCheck1.Items.Clear;
    Gauge1.Visible:=False;
  end else//if
  begin
    Application.MessageBox('请输入加班单号,或选择加班类别,或选择加班时段!','输入错误',MB_OK+MB_ICONWARNING);
  end;
  cursor:=crdefault;
end;

procedure TFormotdefine.FormKeyPress(Sender: TObject; var Key: Char);
begin
      if activecontrol<>edit32 then
      begin
         if key=#13 then
         begin
            key:=#0;
            selectnext(activecontrol,true,true);
         end;
      end;
end;

procedure TFormotdefine.Edit3Exit(Sender: TObject);
begin
     Edit4.Text:=floattostr(hans1dechans2hour(maskedit3.text+' '+maskedit6.text,maskedit1.text+' '+maskedit2.text,strtoint(edit3.text)));
end;

procedure TFormotdefine.ComboBox2Exit(Sender: TObject);
begin
      if (strtoint(combobox2.text)>5) and (strtoint(combobox2.text)<1) then
      begin
         application.messagebox('时段不能大于5,小于1','时段错误',mb_ok+mb_iconerror);
         combobox2.setfocus;
      end;
end;

procedure TFormotdefine.FormActivate(Sender: TObject);
var
    i:integer;
begin
     with datamod do
     begin
        qryotkind.Open;
        qryotkind.first;
        while not qryotkind.eof do
        begin
            combobox1.items.add(qryotkindotkind.asstring);
            qryotkind.next;
        end;
        qryatdset.open;
        for i:=qryatdsetwhichitem.asinteger to 5 do
        begin
            combobox2.items.add(inttostr(i));
        end;
        qryatdset.close;
     end;
     edit1.setfocus;
     Maskedit3.text:=formatdatetime('yyyy/mm/dd',now);
     Maskedit1.text:=formatdatetime('yyyy/mm/dd',now);
     Maskedit4.text:=formatdatetime('yyyy/mm/dd',now);
end;

procedure TFormotdefine.FormShow(Sender: TObject);
begin
     height:=409;
     width:=524; 
end;

procedure TFormotdefine.DateTimePicker1Change(Sender: TObject);
begin
     maskedit3.text:=Formatdatetime('yyyy/mm/dd',datetimepicker1.date);
end;

procedure TFormotdefine.DateTimePicker2Change(Sender: TObject);
begin
      maskedit1.text:=formatdatetime('yyyy/mm/dd',datetimepicker2.date);
end;

procedure TFormotdefine.MaskEdit3Exit(Sender: TObject);
begin
     Maskedit1.text:=Maskedit3.text;
end;

procedure TFormotdefine.DateTimePicker3Change(Sender: TObject);
begin
     Maskedit4.text:=formatdatetime('yyyy/mm/dd',datetimepicker3.date);
end;

end.

⌨️ 快捷键说明

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