door.pas
来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 900 行 · 第 1/2 页
PAS
900 行
unit door;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, RXCtrls, RXClock, StdCtrls,ADODB, ImgList, DBCtrls, ComCtrls,
ToolWin, DBActns, ActnList, Db, Grids, DBGrids, Buttons, Mask, Menus,
ppDB, ppDBPipe, ppDBBDE, ppComm, ppRelatv, ppProd, ppClass, ppReport,
ppCtrls, ppVar, ppBands, ppPrnabl, ppCache;
type
TFormdoor = class(TForm)
Dsdoor: TDataSource;
ImageList1: TImageList;
ADOdoor: TADODataSet;
ADOdoorworkno: TStringField;
ADOdoorcardno: TStringField;
ADOdoorname: TStringField;
ADOdoorsexname: TStringField;
ADOdoordept: TStringField;
ADOdoorprof: TStringField;
ADOdoorrq: TStringField;
ADOdoorbrushtime: TStringField;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N4: TMenuItem;
N3: TMenuItem;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
ADODataSet1: TADODataSet;
ADODataSet1workno: TStringField;
ADODataSet1cardno: TStringField;
ADODataSet1name: TStringField;
ADODataSet1sexname: TStringField;
ADODataSet1dept: TStringField;
ADODataSet1prof: TStringField;
ADODataSet1rq: TStringField;
ADODataSet1brushtime: TStringField;
ADODataSet2: TADODataSet;
DataSource2: TDataSource;
ADODataSet2workno: TStringField;
ADODataSet2cardno: TStringField;
ADODataSet2name: TStringField;
ADODataSet2sexname: TStringField;
ADODataSet2dept: TStringField;
ADODataSet2prof: TStringField;
ADODataSet2rq: TStringField;
ADODataSet2num: TIntegerField;
ADODataSet3: TADODataSet;
DataSource3: TDataSource;
ADODataSet3rq: TStringField;
ADODataSet3workno: TStringField;
ADODataSet3cardno: TStringField;
ADODataSet3name: TStringField;
ADODataSet3sexname: TStringField;
ADODataSet3dept: TStringField;
ADODataSet3prof: TStringField;
ADODataSet3date_count: TIntegerField;
ADODataSet4: TADODataSet;
DataSource4: TDataSource;
ADODataSet4workno: TStringField;
ADODataSet4cardno: TStringField;
ADODataSet4name: TStringField;
ADODataSet4sexname: TStringField;
ADODataSet4dept: TStringField;
ADODataSet4prof: TStringField;
ADODataSet4rq: TStringField;
ADODataSet4brushtime: TStringField;
Panel10: TPanel;
Label31: TLabel;
Label32: TLabel;
Label33: TLabel;
Animate2: TAnimate;
DateTimePicker5: TDateTimePicker;
BitBtn1: TBitBtn;
DateTimePicker6: TDateTimePicker;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton6: TToolButton;
ToolButton5: TToolButton;
tbnsort: TToolButton;
tbnfind: TToolButton;
tbnprint: TToolButton;
ToolButton4: TToolButton;
DBNavigator1: TDBNavigator;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
DBGrid1: TDBGrid;
Panel7: TPanel;
Label14: TLabel;
Label15: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label28: TLabel;
DateTimePicker3: TDateTimePicker;
DateTimePicker4: TDateTimePicker;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Edit1: TEdit;
ComboBox4: TComboBox;
TabSheet2: TTabSheet;
Splitter1: TSplitter;
DBGrid2: TDBGrid;
DBGrid3: TDBGrid;
Panel2: TPanel;
Label13: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label29: TLabel;
MaskEdit3: TMaskEdit;
Edit2: TEdit;
ComboBox5: TComboBox;
TabSheet3: TTabSheet;
Splitter2: TSplitter;
Panel9: TPanel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Label27: TLabel;
Label30: TLabel;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
MaskEdit4: TMaskEdit;
MaskEdit5: TMaskEdit;
Edit3: TEdit;
ComboBox6: TComboBox;
DBGrid4: TDBGrid;
DBGrid5: TDBGrid;
Panel8: TPanel;
procedure RxSpeedButton3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure ToolButton4Click(Sender: TObject);
procedure MaskEdit2Exit(Sender: TObject);
procedure ADOdoorworknoChange(Sender: TField);
procedure ADOdoorBeforePost(DataSet: TDataSet);
procedure tbnfindClick(Sender: TObject);
procedure DBGrid1TitleClick(Column: TColumn);
procedure Edit1Exit(Sender: TObject);
procedure tbnsortClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure RxSpeedButton2Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure ToolButton5Click(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ppReport1BeforePrint(Sender: TObject);
procedure tbnprintClick(Sender: TObject);
procedure DateTimePicker3CloseUp(Sender: TObject);
procedure DateTimePicker4CloseUp(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ppReport1PreviewFormCreate(Sender: TObject);
procedure MaskEdit2Enter(Sender: TObject);
procedure DBGrid2TitleClick(Column: TColumn);
procedure DBGrid1Enter(Sender: TObject);
procedure DBGrid2Enter(Sender: TObject);
procedure MaskEdit3Change(Sender: TObject);
procedure MaskEdit3Exit(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure DBGrid3TitleClick(Column: TColumn);
procedure PageControl1Change(Sender: TObject);
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure DateTimePicker1CloseUp(Sender: TObject);
procedure DateTimePicker2CloseUp(Sender: TObject);
procedure DBGrid4TitleClick(Column: TColumn);
procedure DBGrid5TitleClick(Column: TColumn);
procedure Edit3Exit(Sender: TObject);
procedure ComboBox4Change(Sender: TObject);
procedure ComboBox5Change(Sender: TObject);
procedure ComboBox6Change(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
manyfield:boolean;
findex:array[1..5] of integer;
fsort:array[1..5] of string;
fcount:0..5;
f:string;
public
{ Public declarations }
end;
var
Formdoor: TFormdoor;
fmat1,fmat2:string;
implementation
uses datamol,main,publicfunction, door_print;
{$R *.DFM}
procedure TFormdoor.RxSpeedButton3Click(Sender: TObject);
begin
close;
end;
procedure TFormdoor.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Adodoor.close;
formdoor:=nil;
action:=cafree;
end;
procedure TFormdoor.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
dbgrid_keypress(sender,key);
end;
procedure TFormdoor.ToolButton4Click(Sender: TObject);
begin
close;
end;
procedure TFormdoor.MaskEdit2Exit(Sender: TObject);
begin
if maskedit2.Text <>fmat1 then
begin
if isdate(maskedit1.text) and isdate(maskedit2.text) then
begin
adodoor.Filtered :=false;
adodoor.Filter :='rq<='''+maskedit2.Text+''' and rq>='''+maskedit1.text+''' ';
adodoor.Filtered :=true;
end
else
begin
showmessage('输入的日期无效!!!');
maskedit1.SetFocus;
end;
end;
end;
procedure TFormdoor.ADOdoorworknoChange(Sender: TField);
begin
if Adodoorworkno.asstring<>'' then
with datamod do
begin
Query1.close;
Query1.sql.text:='Select * from per24010 where cardno='''+Adodoorworkno.asstring+''' and leave=0 ';
if not Query1.Eof then
begin
Adodoor.edit;
adodoorcardno.asstring:=Query1.fieldbyname('cardno').asstring;
adodoorname.asstring:=Query1.fieldbyname('name').asstring;
adodoorsexname.asstring:=Query1.fieldbyname('sexname').asstring;
adodoordept.asstring:=Query1.fieldbyname('dept').asstring;
adodoorprof.asstring:=Query1.fieldbyname('prof').asstring;
dbgrid1.selectedindex:=6;
end else
begin
Application.messagebox('你输入了一个不存在的工号,请重新输入!','错误',mb_ok+mb_iconerror);
adodoorname.asstring:='';
dbgrid1.selectedindex:=0;
end;
end;
end;
procedure TFormdoor.ADOdoorBeforePost(DataSet: TDataSet);
begin
adodoorrq.asstring:=datetostr(date);
adodoorbrushtime.asstring:=formatdatetime('yyyy'+dateseparator+'mm'+dateseparator+'dd hh:mm:ss',now);
end;
procedure TFormdoor.tbnfindClick(Sender: TObject);
begin
case pageControl1.ActivePageIndex of
0:findrecorder(adodoor,'Adodoor','dor02010');
1:findrecorder(AdoDataSet2,'AdoDataSet2','dor03010');
2:findrecorder(AdoDataSet3,'AdoDataSet3','dor04010');
end;
end;
procedure TFormdoor.DBGrid1TitleClick(Column: TColumn);
begin
if f='DESC' THEN
f:='ASC'
ELSE
f:='DESC';
adodoor.Sort :=column.FieldName +' '+f;
end;
procedure TFormdoor.Edit1Exit(Sender: TObject);
begin
if pagecontrol1.ActivePageIndex=0 then
begin
if (MaskEdit1.Text<>fmat1)and(MaskEdit2.Text<>fmat1)and(Edit1.Text<>'')then
begin
Adodoor.Close;
Adodoor.Prepared:=True;
Adodoor.CommandText:='Select * from dor02010 where rq between '''+MaskEdit1.Text+''' and '''+MaskEdit2.Text+''' and (cardno='''+Edit1.Text+''' or workno='''+Edit1.Text+''' or name='''+Edit1.Text+''' or dept='''+Edit1.Text+''') order by dept,workno,rq';
Adodoor.Open;
end
else if (MaskEdit1.Text=fmat1)and(MaskEdit2.Text=fmat1)and(Edit1.Text<>'') then
begin
Adodoor.Close;
Adodoor.Prepared:=True;
Adodoor.CommandText:='Select * from dor02010 where cardno='''+Edit1.Text+''' or workno='''+Edit1.Text+'''or name='''+Edit1.Text+''' or dept='''+Edit1.Text+''' order by dept,workno,rq';
Adodoor.open;
end
else if (MaskEdit1.Text<>fmat1)and(MaskEdit2.Text<>fmat1)and(Edit1.Text='')then
begin
Adodoor.Close;
Adodoor.Prepared:=True;
Adodoor.CommandText:='Select * from dor02010 where rq between '''+MaskEdit1.Text+''' and '''+MaskEdit2.Text+''' order by dept,workno,rq';
Adodoor.Open;
end;
end
end;
procedure TFormdoor.tbnsortClick(Sender: TObject);
var i:1..5;
begin
if manyfield then
begin
manyfield:=false;
tbnsort.hint:='设定多字段排序';
popupmenu1.Items[0].Enabled :=false;
popupmenu1.Items[1].Enabled :=false;
popupmenu1.Items[2].Enabled :=false;
popupmenu1.Items[3].Enabled :=false;
end
else begin
manyfield:=true;
tbnsort.hint:='取消多字段排序'; //说明现在dbgrid1正处于多字段排序中
f:='';
popupmenu1.Items[0].Enabled :=true;
popupmenu1.Items[1].Enabled :=true;
popupmenu1.Items[2].Enabled :=true;
popupmenu1.Items[3].Enabled :=true;
fcount:=0;
for i:=1 to 5 do
begin
findex[i]:=0;
fsort[i]:='';
end;
end;
end;
procedure TFormdoor.N1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to fcount do
if dbgrid1.SelectedIndex =findex[i] then
begin
fsort[i]:='ASC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=dbgrid1.selectedindex;
fsort[fcount]:='ASC';
dbgrid1.Columns[dbgrid1.selectedindex].Color :=clgray;
end;
end;
procedure TFormdoor.N2Click(Sender: TObject);
var i:integer;
begin
for i:=1 to fcount do
if dbgrid1.SelectedIndex =findex[i] then
begin
fsort[i]:='DESC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=dbgrid1.selectedindex;
fsort[fcount]:='DESC';
dbgrid1.Columns[dbgrid1.selectedindex].Color :=clgray;
end;
end;
procedure TFormdoor.N4Click(Sender: TObject);
var i:1..5;
begin
adodoor.Sort:='';
for i:=1 to fcount do
begin
if dbgrid1.Columns[findex[i]].Color=clgray then
begin
ADOdoor.Sort :=ADOdoor.Sort+dbgrid1.Columns[findex[i]].FieldName+' '+fsort[i];
if i<fcount then ADOdoor.Sort:=ADOdoor.Sort+',';
end;
end;
end;
procedure TFormdoor.N3Click(Sender: TObject);
var i:1..5;
begin
for i:=1 to fcount do
dbgrid1.Columns[findex[i]].Color :=clwindow;
fcount:=0;
end;
procedure TFormdoor.RxSpeedButton2Click(Sender: TObject);
begin
adodoor.Close;
adodoor.CommandText :='select * from dor02010 order by dept,workno,rq';
adodoor.open;
{ adodoor.Filtered :=false;
adodoor.Filter :='rq<='''+maskedit2.Text+''' and rq>='''+maskedit1.text+''' ';
adodoor.Filtered :=true;
edit1.text:='';" }
end;
procedure TFormdoor.FormKeyPress(Sender: TObject; var Key: Char);
begin
if activecontrol=dbgrid1 then
exit;
if key=#13 then
begin
selectnext(activecontrol,true,true);
key:=#0;
end;
end;
procedure TFormdoor.ToolButton5Click(Sender: TObject);
begin
if PageControl1.ActivePageIndex=0 then
begin
Adodoor.filter:='';
maskedit1.Text:=fmat1;
maskedit2.Text:=fmat1;
Adodoor.close;
Adodoor.CommandText:='Select * from dor02010 order by dept,workno,rq';
Adodoor.Open;
end
else if PageControl1.ActivePageIndex=1 then
begin
ADODataSet2.filter:='';
maskedit3.Text:=fmat2;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?