deptrecorder.pas
来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 630 行 · 第 1/2 页
PAS
630 行
//部门行事历
unit deptrecorder;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask, DBCtrls, ExtCtrls, Grids, DBGrids, Buttons, ComCtrls,
Menus,adodb,db, ToolWin, ImgList;
type
Tformdeptrecorder = 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;
Label7: TLabel;
Label4: TLabel;
MonthCalendar1: TMonthCalendar;
DBEdit1: TDBEdit;
DBEdit3: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
edit1: TEdit;
DBComboBox1: TDBComboBox;
DBEdit2: TDBEdit;
Splitter1: TSplitter;
ImageList1: TImageList;
CheckBox1: TCheckBox;
Splitter2: TSplitter;
DBGrid2: TDBGrid;
Panel3: TPanel;
Label13: TLabel;
ScrollBox1: TScrollBox;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Shape1: TShape;
ComboBox1: TComboBox;
BitBtn7: TBitBtn;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Adom: TADODataSet;
Adomcomcode: TStringField;
Adod: TADODataSet;
Adodcomcode: TStringField;
Adodcomdate: TStringField;
Adodcomweek: TStringField;
Adodmemo: TStringField;
Adodoperator: TStringField;
Adodcdate: TStringField;
Dsd: TDataSource;
Dsm: TDataSource;
Adoddeptcode: TStringField;
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;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure MonthCalendar1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure DBComboBox1Exit(Sender: TObject);
procedure DBComboBox1Change(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
procedure DBGrid1TitleClick(Column: TColumn);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure Edit3Exit(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure tbnfindClick(Sender: TObject);
procedure tbndelmanyClick(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure tbnsortClick(Sender: TObject);
procedure DBComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure DBComboBox1DropDown(Sender: TObject);
procedure DBEdit3Exit(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
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
formdeptrecorder: Tformdeptrecorder;
implementation
uses datamol,publicfunction,main;
{$R *.DFM}
procedure Tformdeptrecorder.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
setdbgridwidth(dbgrid1,'p'+'deptrec');
datamod.adodeptrecorder.close;
adom.close;
adod.close;
action:=cafree;
formdeptrecorder:=nil;
end;
procedure Tformdeptrecorder.MonthCalendar1Click(Sender: TObject);
begin
with datamod do
begin
if not checkbox1.checked then
begin
if (adodeptrecorder.State =dsinsert) or (adodeptrecorder.State =dsEdit) then
begin
ADOdeptrecordercomdate.asstring:=datetostr(monthcalendar1.date);
if dayofweek(monthcalendar1.date)>1 then //把电脑里的星期换成日常中的,一 2,二 3...六 7,天 1
case (dayofweek(monthcalendar1.date)-1) of
1:ADOdeptrecordercomweek.asstring:='一';
2:ADOdeptrecordercomweek.asstring:='二';
3:ADOdeptrecordercomweek.asstring:='三';
4:ADOdeptrecordercomweek.asstring:='四';
5:ADOdeptrecordercomweek.asstring:='五';
6:ADOdeptrecordercomweek.asstring:='六';
end
else
ADOdeptrecordercomweek.asstring:='日';
end;
end
else begin
if isdate(Maskedit1.text) then
Maskedit2.text:=datetostr(monthcalendar1.Date)
else
Maskedit1.text:=datetostr(monthcalendar1.Date);
end;
end;
end;
procedure Tformdeptrecorder.BitBtn1Click(Sender: TObject);
begin
if datamod.ADOdeptrecorder.CanModify then
begin
datamod.ADOdeptrecorder.Append;
dbedit5.text:=pubworkname;
end;
end;
procedure Tformdeptrecorder.BitBtn2Click(Sender: TObject);
begin
if datamod.adodeptrecorder.canmodify then
datamod.ADOdeptrecorder.Edit;
end;
procedure Tformdeptrecorder.BitBtn6Click(Sender: TObject);
begin
if datamod.ADOdeptrecorder.Modified then
datamod.ADOdeptrecorder.Post;
end;
procedure Tformdeptrecorder.BitBtn5Click(Sender: TObject);
begin
close;
end;
procedure Tformdeptrecorder.BitBtn3Click(Sender: TObject);
begin
datamod.adodeptrecorder.delete;
datamod.adodeptrecorder.refresh;
end;
procedure Tformdeptrecorder.FormActivate(Sender: TObject);
begin
getdbgridwidth(dbgrid1,'p'+'deptrec');
datamod.ADOdeptrecorder.Close;
datamod.ADOdeptrecorder.CursorType :=ctKeyset;
datamod.ADOdeptrecorder.LockType :=ltpessimistic;
datamod.ADOdeptrecorder.Open;
monthcalendar1.Date :=date;
end;
procedure Tformdeptrecorder.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
selectnext(activecontrol,true,true);
end;
end;
procedure Tformdeptrecorder.FormCreate(Sender: TObject);
begin
with datamod.ADOQuery1 do
begin
sql.clear;
sql.Add('select * from pub05010');
open;
while not eof do
begin
dbcombobox1.Items.Add(fieldbyname('dno').asstring);
next;
end;
close;
end;
adom.open;
adod.open;
MonthCalendar1.Date :=date;
end;
procedure Tformdeptrecorder.DBComboBox1Exit(Sender: TObject);
begin
with datamod.ADOQuery1 do
begin
sql.clear;
sql.add('select dept from pub05010 where dno='''+datamod.adodeptrecorder.fieldbyname('deptcode').asstring+'''');
open;
if eof then
begin
application.messagebox('没有此部门编号','Warning',mb_ok+mb_iconwarning);
dbcombobox1.SetFocus;
end
else
edit1.text:=fieldbyname('dept').asstring;
close;
end;
end;
procedure Tformdeptrecorder.DBComboBox1Change(Sender: TObject);
begin
with datamod.ADOQuery1 do
begin
sql.clear;
sql.add('select dept from pub05010 where dno='''+datamod.adodeptrecorder.fieldbyname('deptcode').asstring+'''');
open;
if not eof then
edit1.text:=fieldbyname('dept').asstring;
close;
end;
end;
procedure Tformdeptrecorder.BitBtn7Click(Sender: TObject);
var i,j:integer;
b:boolean;
d:Tdate;
thingcode,dp,mem:string;
begin
if datamod.ADOdeptrecorder.Modified then
if application.messagebox('当前记录处在编辑状态,选择OK将存盘,否则将取消该记录','电脑提示',mb_okcancel)=idok then
datamod.ADOdeptrecorder.post
else
datamod.ADOdeptrecorder.Cancel;
thingcode:=edit2.text;
dp:=edit3.text;
mem:=edit4.text;
d:=strtodate(Maskedit1.text);
if (length(trim(thingcode))=0) or (length(trim(dp))=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('对不起,星期不能为空!','提示',mb_ok+mb_iconinformation);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?