changebcdefine.pas

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

PAS
314
字号
unit changebcdefine;

interface

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

type
  TFormchangebcdefine = class(TForm)
    GroupBox2: TGroupBox;
    RG1: TRadioGroup;
    GroupBox3: TGroupBox;
    RB1: TRadioButton;
    RB2: TRadioButton;
    Edit32: TEdit;
    OK: TButton;
    Cancel: TButton;
    GroupBox1: TGroupBox;
    MaskEdit3: TMaskEdit;
    MaskEdit1: TMaskEdit;
    Label4: TLabel;
    Qrydept: TADOQuery;
    Dsdept: TDataSource;
    Panel1: TPanel;
    Gauge1: TGauge;
    Label9: TLabel;
    Memo1: TMemo;
    Label5: TLabel;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    MaskEdit2: TMaskEdit;
    DateTimePicker3: TDateTimePicker;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure RG1Click(Sender: TObject);
    procedure RB1Click(Sender: TObject);
    procedure ComLookNameChange(Sender: TObject);
    procedure Edit32KeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure CancelClick(Sender: TObject);
    procedure OKClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormActivate(Sender: TObject);
    procedure ComboBox1Exit(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
  Formchangebcdefine: TFormchangebcdefine;

implementation

uses changebc, datamol, main;

{$R *.DFM}

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

procedure TFormchangebcdefine.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 TFormchangebcdefine.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 TFormchangebcdefine.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;
end;

procedure TFormchangebcdefine.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 TFormchangebcdefine.FormKeyPress(Sender: TObject; var Key: Char);
begin
     if activecontrol=edit32 then exit;
     if key=#13 then
     begin
        key:=#0;
        selectnext(activecontrol,true,true);
     end;
end;

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

procedure TFormchangebcdefine.OKClick(Sender: TObject);
var
  i:integer;
  hanGh:string;
  ygbhcd:integer;
begin
  if RxCheck1.Items.Count<=0 then Exit;
  cursor:=crHourGlass;
  if (Trim(combobox1.Text)<>'') and (Trim(combobox2.text)<>'') then
  begin
    with datamod do
    begin
      Qrychangebc.DisableControls;
      Qrychangebc.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 atd08010 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
               ADOQuery1.Close ;
               ADOQuery1.SQL.Text :='Insert into atd08010(workno,cardno,rq,Startrq,Endrq,'+
               'nowsche,latesche,operator,memo) Select per24010.workno,per24010.cardno,'''+maskedit2.text+''','+
               ''''+maskedit3.Text+''','''+maskedit1.Text+''','+
               ''''+combobox2.text+''','''+combobox1.text+''','''+pubworkname+''','''+memo1.Text+''' '+
               ' from per24010 where per24010.workno='''+hanGh+'''';
               ADOQuery1.ExecSQL;
           end;
        end;
          Gauge1.AddProgress(1);
      end;
      Qrychangebc.Open ;
      Qrychangebc.EnableControls;
    end;//with
    RXCheck1.Items.Clear;
    Gauge1.Visible:=False;
  end else//if
  begin
    Application.MessageBox('请输入换班前后的班次代号!','输入班次代号错误',MB_OK+MB_ICONWARNING);
  end;
  cursor:=crdefault;
end;

procedure TFormchangebcdefine.FormCreate(Sender: TObject);
begin
     datamod.qrypublic.open;
end;

procedure TFormchangebcdefine.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
     datamod.qrypublic.Close;
end;

procedure TFormchangebcdefine.FormActivate(Sender: TObject);
begin
      maskedit3.setfocus;
      width:=499;
      height:=407;
      Maskedit3.text:=formatdatetime('yyyy/mm/dd',now);
      Maskedit1.text:=formatdatetime('yyyy/mm/dd',now);
      Maskedit2.text:=formatdatetime('yyyy/mm/dd',now);
end;

procedure TFormchangebcdefine.ComboBox1Exit(Sender: TObject);
begin
     if trim((Sender as TCombobox).text)<>'' then
     begin  //if
         with datamod do
         begin  //datamod
            Query1.Close;
            Query1.SQL.Text:='Select * from atd01010 where scheno='''+(Sender as TCombobox).text+''' ';
            Query1.Open;
            if Query1.Eof then
            begin
               application.messagebox('你输入了一个不存在的班次,请重新输入!','班次错误',mb_ok+mb_iconinformation);
               (Sender as TCombobox).Clear;
               (Sender as TCombobox).SetFocus;
            end;
         end;  //datamod
     end; //if
end;

procedure TFormchangebcdefine.FormShow(Sender: TObject);
begin
     with datamod do
     begin
          qrybc.Open;
          qrybc.first;
          combobox1.Items.Clear;
          while not qrybc.eof do
          begin
               combobox1.Items.Add(qrybcscheno.AsString);
               combobox2.Items.Add(qrybcscheno.asstring);
               qrybc.next;
          end;
     end;
end;

procedure TFormchangebcdefine.DateTimePicker1Change(Sender: TObject);
begin
     Maskedit3.text:=formatdatetime('yyyy/mm/dd',datetimepicker1.date);
end;

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

procedure TFormchangebcdefine.MaskEdit3Exit(Sender: TObject);
begin
     Maskedit1.text:=maskedit3.text; 
end;

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

end.

⌨️ 快捷键说明

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