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 + -
显示快捷键?