formcomrec.pas
来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 674 行 · 第 1/2 页
PAS
674 行
//公司行事历
unit formcomrec;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, Mask, DBCtrls, Grids, DBGrids, ExtCtrls,
Menus,adodb,db, ToolWin, ImgList;
type
Tformcomrecorder = class(TForm)
DBGrid1: TDBGrid;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N4: TMenuItem;
N3: TMenuItem;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label5: TLabel;
Label6: TLabel;
MonthCalendar1: TMonthCalendar;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
Splitter1: TSplitter;
Label7: TLabel;
DBEdit6: TDBEdit;
ImageList1: TImageList;
CheckBox1: TCheckBox;
Adom: TADODataSet;
Adod: TADODataSet;
Dsm: TDataSource;
Dsd: TDataSource;
Adomcomcode: TStringField;
Adodcomcode: TStringField;
Adodcodename: TStringField;
Adodcomdate: TStringField;
Adodcomweek: TStringField;
Adodmemo: TStringField;
Adodoperator: TStringField;
Adodcdate: TStringField;
DBGrid2: TDBGrid;
Splitter2: TSplitter;
Panel3: TPanel;
ScrollBox1: TScrollBox;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Shape1: TShape;
ComboBox1: TComboBox;
BitBtn7: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label13: TLabel;
Label4: TLabel;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton5: TToolButton;
tbndelmany: TToolButton;
tbnsort: TToolButton;
tbnfind: TToolButton;
ToolButton7: TToolButton;
ToolButton4: TToolButton;
DBNavigator2: TDBNavigator;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
DBRadioGroup1: TDBRadioGroup;
RadioGroup1: TRadioGroup;
Label14: TLabel;
Edit4: TEdit;
Label15: TLabel;
Label16: TLabel;
MaskEdit3: TMaskEdit;
MaskEdit4: TMaskEdit;
Button1: TButton;
DBCheckBox1: TDBCheckBox;
DBCheckBox2: TDBCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
ADOQuery1: TADOQuery;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnnewClick(Sender: TObject);
procedure btnsaveClick(Sender: TObject);
procedure MonthCalendar1Click(Sender: TObject);
procedure btneditClick(Sender: TObject);
procedure btndeleteClick(Sender: TObject);
procedure btnexitClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
procedure BitBtn7Click(Sender: TObject);
procedure DBGrid1TitleClick(Column: TColumn);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure tbndelmanyClick(Sender: TObject);
procedure tbnfindClick(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure tbnsortClick(Sender: TObject);
procedure DBEdit1Exit(Sender: TObject);
procedure DBEdit1Change(Sender: TObject);
procedure DBEdit2Exit(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Button1Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure AdomBeforeDelete(DataSet: TDataSet);
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
formcomrecorder: Tformcomrecorder;
implementation
uses datamol,main,publicfunction;
{$R *.DFM}
procedure Tformcomrecorder.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
setdbgridwidth(dbgrid1,'p'+'comrec');
datamod.adocomrecorder.close;
adod.close;
adom.close;
action:=cafree;
formcomrecorder:=nil;
end;
procedure Tformcomrecorder.btnnewClick(Sender: TObject);
begin
if datamod.ADOcomrecorder.CanModify then
begin
datamod.ADOcomrecorder.Append;
dbedit5.Text :=pubworkname;
end;
end;
procedure Tformcomrecorder.btnsaveClick(Sender: TObject);
begin
if datamod.ADOcomrecorder.Modified then
datamod.ADOcomrecorder.Post;
end;
procedure Tformcomrecorder.MonthCalendar1Click(Sender: TObject);
begin
if not checkbox1.Checked then
begin
if (datamod.ADOcomrecorder.State =dsinsert) or (datamod.ADOcomrecorder.State =dsedit) then
begin
datamod.ADOcomrecorder.FieldByName('comdate').asstring:=datetostr(monthcalendar1.date);
if dayofweek(monthcalendar1.date)>1 then //把电脑里的星期换成日常中的,一 2,二 3...六 7,天 1
case (dayofweek(monthcalendar1.date)-1) of
1:datamod.ADOcomrecorder.FieldByName('comweek').asstring:='一';
2:datamod.ADOcomrecorder.FieldByName('comweek').asstring:='二';
3:datamod.ADOcomrecorder.FieldByName('comweek').asstring:='三';
4:datamod.ADOcomrecorder.FieldByName('comweek').asstring:='四';
5:datamod.ADOcomrecorder.FieldByName('comweek').asstring:='五';
6:datamod.ADOcomrecorder.FieldByName('comweek').asstring:='六';
end
else
datamod.ADOcomrecorder.FieldByName('comweek').asstring:='日';
end;
end
else begin
if isdate(MaskEdit1.Text) then
MaskEdit2.Text :=datetostr(monthcalendar1.Date)
else
MaskEdit1.Text :=datetostr(monthcalendar1.Date);
end;
end;
procedure Tformcomrecorder.btneditClick(Sender: TObject);
begin
datamod.ADOcomrecorder.Edit;
end;
procedure Tformcomrecorder.btndeleteClick(Sender: TObject);
var i:integer;
bookmarklist:Tbookmarklist;
bookmark:Tbookmarkstr;
begin
if application.messagebox('您确定要删除这些资料吗?','电脑提示',mb_okcancel)<>idok then
exit;
if dbgrid1.SelectedRows.Count >0 then //多笔记录删除
begin
bookmark:=datamod.adocomrecorder.bookmark;
try
bookmarklist:=dbgrid1.SelectedRows;
for i:=0 to bookmarklist.Count-1 do
begin
datamod.ADOcomrecorder.bookmark:=bookmarklist[i];
datamod.ADOcomrecorder.DeleteRecords;
end;
finally
datamod.ADOcomrecorder.bookmark:=Bookmark;
end
end
else
datamod.ADOcomrecorder.Delete; //单笔删除
datamod.ADOcomrecorder.Refresh;
end;
procedure Tformcomrecorder.btnexitClick(Sender: TObject);
begin
close;
end;
procedure Tformcomrecorder.FormActivate(Sender: TObject);
begin
getdbgridwidth(dbgrid1,'p'+'comrec');
datamod.ADOcomrecorder.close;
datamod.ADOcomrecorder.CursorType :=ctKeyset;
datamod.ADOcomrecorder.LockType :=ltpessimistic;
datamod.ADOcomrecorder.Open;
monthcalendar1.Date :=date;
end;
procedure Tformcomrecorder.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
selectnext(activecontrol,true,true);
end;
end;
procedure Tformcomrecorder.DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
begin
if button=nbinsert then
dbedit5.text:=pubworkname;
end;
procedure Tformcomrecorder.BitBtn7Click(Sender: TObject);
var i,j:integer;
b:boolean;
d:Tdate;
thingcode,codename,mem:string;
begin
if (datamod.ADOcomrecorder.state=dsinsert) or (datamod.ADOcomrecorder.state=dsedit) then
if application.messagebox('当前记录处在编辑状态,选择OK将存盘,否则将取消该记录','电脑提示',mb_okcancel)=IDOK then
datamod.ADOcomrecorder.post
else
datamod.ADOcomrecorder.Cancel;
thingcode:=edit1.text;
codename:=edit2.text;
mem:=edit3.text;
d:=strtodatetime(MaskEdit1.text);
if (length(trim(thingcode))=0) or (length(trim(codename))=0) then
begin
Application.Messagebox('对不起,行事历编码和名称不能为空,否则不能产生您要的数据!','Warning',mb_ok+mb_iconwarning);
exit;
end;
if formatdatetime('yyyy'+DateSeparator+'mm'+DateSeparator+'dd',strtodatetime(MaskEdit1.text))>formatdatetime('yyyy'+DateSeparator+'mm'+DateSeparator+'dd',strtodatetime(MaskEdit2.text)) then
begin
Application.messagebox('前面的日期不能大于后面的日期','Warning',mb_ok+mb_iconwarning);
exit;
end;
b:=false;
for i:=1 to 7 do
if combobox1.Text =combobox1.Items[i-1] then
begin
b:=true;
j:=i;
if j<>dayofweek(d) then
begin
if j<dayofweek(d) then d:=d+7-dayofweek(d)+j;
if j>dayofweek(d) then d:=d+j-dayofweek(d);
end;
end;
if not b then
begin
Application.messagebox('对不起,星期不能为空!','Warning',mb_ok+mb_iconwarning);
exit;
end;
// if application.messagebox('您确定要产生 '+formatdatetime('yyyy/mm/dd',datetimepicker1.date)+' 和 '+formatdatetime('yyyy/mm/dd',datetimepicker2.date)+' 之间所有星期'+combobox1.text+'不用上班的记录吗?','电脑提示',mb_yesnocancel)=idyes then
if application.MessageBox('您确定要产生这些数据吗?','电脑提示',mb_yesnocancel)=idyes then
begin
while formatdatetime('yyyy'+DateSeparator+'mm'+DateSeparator+'dd',d)<=formatdatetime('yyyy'+DateSeparator+'mm'+DateSeparator+'dd',strtodatetime(MaskEdit2.text)) do
begin
datamod.ADOcomrecorder.Append;
datamod.adocomrecorder.fieldbyname('comcode').asstring:=thingcode; //行事历编码
datamod.adocomrecorder.fieldbyname('codename').asstring:=codename; //行事历名称
datamod.adocomrecorder.fieldbyname('comdate').asstring:=formatdatetime('yyyy'+DateSeparator+'mm'+DateSeparator+'dd',d);//日期
datamod.adocomrecorder.fieldbyname('operator').asstring:=pubworkname;//建档人
datamod.adocomrecorder.fieldbyname('youxin').asboolean:=checkbox2.Checked;
datamod.adocomrecorder.fieldbyname('wuxin').asboolean:=checkbox3.Checked;
datamod.adocomrecorder.fieldbyname('memo').asstring:=mem; //备注
datamod.adocomrecorder.fieldbyname('comweek').asstring:=combobox1.text;
datamod.adocomrecorder.fieldbyname('otkind').asstring:=radiogroup1.Items[radiogroup1.itemindex];
datamod.ADOcomrecorder.post;
d:=d+7;
end;
datamod.ADOcomrecorder.Close;
datamod.ADOcomrecorder.Open;
dbgrid1.Refresh;
edit1.Text :='';
edit2.Text :='';
edit3.Text :='';
end;
end;
procedure Tformcomrecorder.DBGrid1TitleClick(Column: TColumn);
begin
if f='DESC' then
f:='ASC'
else
f:='DESC';
datamod.ADOcomrecorder.Sort :=column.FieldName+' '+f;
end;
procedure Tformcomrecorder.N1Click(Sender: TObject);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?