empset.pas
来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 443 行
PAS
443 行
unit empset;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, Menus, Grids, DBGrids, ComCtrls, ImgList, ExtCtrls, DBCtrls,
ToolWin, StdCtrls, Mask, Buttons, OleServer, Excel97;
type
TFormempset = class(TForm)
ImageList1: TImageList;
PopupMenu1: TPopupMenu;
n11: TMenuItem;
N12: TMenuItem;
n13: TMenuItem;
PopupMenu2: TPopupMenu;
n21: TMenuItem;
PopupMenu3: TPopupMenu;
MenuItem1: TMenuItem;
n2: TMenuItem;
N4: TMenuItem;
MenuItem3: TMenuItem;
MainMenu1: TMainMenu;
N1: TMenuItem;
ExcelApplication1: TExcelApplication;
Panel3: TPanel;
Splitter1: TSplitter;
DBGrid4: TDBGrid;
Panel4: TPanel;
DBMemo1: TDBMemo;
ScrollBox2: TScrollBox;
Label11: TLabel;
Panel1: TPanel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DateTimePicker1: TDateTimePicker;
ScrollBox1: TScrollBox;
btnsave: TBitBtn;
btncancel: TBitBtn;
btnexit: TBitBtn;
Panel2: TPanel;
DBGrid5: TDBGrid;
Splitter2: TSplitter;
ToolBar1: TToolBar;
tbnview: TToolButton;
tbnsort: TToolButton;
tbnfind: TToolButton;
Tbnprint: TToolButton;
TBEXIT: TToolButton;
DBNav: TDBNavigator;
Panel5: TPanel;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ADODataSet1: TADODataSet;
ADODataSet1rno: TStringField;
ADODataSet1Rcourse: TStringField;
ADODataSet1Rdegree: TStringField;
ADODataSet1boys: TBCDField;
ADODataSet1girls: TBCDField;
ADODataSet1Rprof: TStringField;
ADODataSet1hopedate: TDateTimeField;
ADODataSet1memo: TStringField;
procedure tbnsortClick(Sender: TObject);
procedure tbnfindClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBEXITClick(Sender: TObject);
procedure Adoemploy1BeforePost(DataSet: TDataSet);
procedure DBGrid4KeyPress(Sender: TObject; var Key: Char);
procedure btnsaveClick(Sender: TObject);
procedure btnexitClick(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure DBGrid5KeyPress(Sender: TObject; var Key: Char);
procedure btncancelClick(Sender: TObject);
procedure n11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure n13Click(Sender: TObject);
procedure MenuItem1Click(Sender: TObject);
procedure n2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure MenuItem3Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure tbnviewClick(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure DateTimePicker1CloseUp(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure TbnprintClick(Sender: TObject);
procedure DBGrid4DblClick(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure DBGrid1Exit(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 }
procedure ExportData(Table:TDataset);
end;
var
Formempset: TFormempset;
flag:1..3; //标识哪一个dbgrid调用popubmemu,1是dbgri1;3是dbgrid3,2不作标识
implementation
uses datamol,main,publicfunction, empface, viewreq, printsetup2;
{$R *.DFM}
procedure TFormempset.tbnsortClick(Sender: TObject);
var i:1..5;
begin
if manyfield then
begin
manyfield:=false;
tbnsort.hint:='设定多字段排序';
popupmenu3.Items[0].Enabled :=false;
popupmenu3.Items[1].Enabled :=false;
popupmenu3.Items[2].Enabled :=false;
popupmenu3.Items[3].Enabled :=false;
end
else begin
manyfield:=true;
tbnsort.hint:='取消多字段排序'; //说明现在dbgrid1正处于多字段排序中
f:='';
popupmenu3.Items[0].Enabled :=true;
popupmenu3.Items[1].Enabled :=true;
popupmenu3.Items[2].Enabled :=true;
popupmenu3.Items[3].Enabled :=true;
fcount:=0;
for i:=1 to 5 do
begin
findex[i]:=0;
fsort[i]:='';
end;
end;
{ if application.MessageBox('你确定要删除这笔记录吗?','删除确认',mb_ok+mb_iconquestion)=idyes then
begin
case pagecontrol1.ActivePageIndex of
0: datamod.adoempplan1.delete;
1:
if activecontrol=dbgrid1 then
adoemploy1.delete
else if activecontrol=dbgrid2 then
adoemploy2.delete
else if activecontrol=dbgrid3 then
adoemploy3.delete;
end;
end;}
end;
procedure TFormempset.tbnfindClick(Sender: TObject);
begin
findrecorder(datamod.adoempplan1,'Adoempplan1','emp05011'); //调用publicfuction中的查询功能
end;
procedure TFormempset.FormCreate(Sender: TObject);
begin
with datamod do
begin
Adoempplan1.close;
Adoempplan.close;
Adoempplan1.CursorType :=ctkeyset;
Adoempplan.CursorType :=ctkeyset;
Adoempplan1.LockType :=ltpessimistic;
Adoempplan.LockType :=ltpessimistic;
Adoempplan1.open;
Adoempplan.open;
end;
flag:=2; //标识哪一个dbgrid调用popubmemu,1是dbgri1;3是dbgrid3,2不作标识
end;
procedure TFormempset.FormClose(Sender: TObject; var Action: TCloseAction);
begin
datamod.adoempplan1.Close;
datamod.adoempplan.Close;
setdbgridwidth(dbgrid4,'p'+'empset');
setdbgridwidth(dbgrid5,'p'+'empset');
formempset:=nil;
action:=cafree;
end;
procedure TFormempset.TBEXITClick(Sender: TObject);
begin
close;
end;
procedure TFormempset.Adoemploy1BeforePost(DataSet: TDataSet);
begin
// adoemploy1.FieldByName('kind').asstring:='1';
end;
procedure TFormempset.DBGrid4KeyPress(Sender: TObject; var Key: Char);
begin
dbgrid_keypress(dbgrid4,key);
end;
procedure TFormempset.btnsaveClick(Sender: TObject);
begin
datamod.Adoempplan1.Post;
//datamod.adoempplan.refresh;
end;
procedure TFormempset.btnexitClick(Sender: TObject);
begin
close;
end;
procedure TFormempset.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (activecontrol=dbgrid4) or (activecontrol=dbgrid5) then
exit
else
if key=#13 then
begin
key:=#0;
selectnext(activecontrol,true,true);
end;
end;
procedure TFormempset.DBGrid5KeyPress(Sender: TObject; var Key: Char);
begin
dbgrid_keypress(sender,key);
end;
procedure TFormempset.btncancelClick(Sender: TObject);
begin
datamod.Adoempplan1.CancelUpdates;
end;
procedure TFormempset.n11Click(Sender: TObject);
begin
datamod.adoempplan1.append;
end;
procedure TFormempset.N12Click(Sender: TObject);
begin
datamod.adoempplan1.edit;
end;
procedure TFormempset.n13Click(Sender: TObject);
begin
datamod.adoempplan1.delete;
end;
procedure TFormempset.MenuItem1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to fcount do
if dbgrid5.SelectedIndex =findex[i] then
begin
fsort[i]:='ASC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=dbgrid5.selectedindex;
fsort[fcount]:='ASC';
dbgrid5.Columns[dbgrid5.selectedindex].Color :=clgray;
end;
end;
procedure TFormempset.n2Click(Sender: TObject);
var i:integer;
begin
for i:=1 to fcount do
if dbgrid5.SelectedIndex =findex[i] then
begin
fsort[i]:='DESC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=dbgrid5.selectedindex;
fsort[fcount]:='DESC';
dbgrid5.Columns[dbgrid5.selectedindex].Color :=clgray;
end;
end;
procedure TFormempset.N4Click(Sender: TObject);
var i:1..5;
sortexp:string;
begin
sortexp:='';
for i:=1 to fcount do
begin
if dbgrid5.Columns[findex[i]].Color=clgray then
begin
sortexp :=sortexp+dbgrid5.Columns[findex[i]].FieldName+' '+fsort[i];
if i<fcount then sortexp:=sortexp+',';
end;
end;
if sortexp<>'' then datamod.Adoempreq.Sort :=sortexp;
end;
procedure TFormempset.MenuItem3Click(Sender: TObject);
var i:1..5;
begin
for i:=1 to fcount do
dbgrid5.Columns[findex[i]].Color :=clwindow;
fcount:=0;
end;
procedure TFormempset.FormActivate(Sender: TObject);
begin
getdbgridwidth(dbgrid4,'p'+'empset');
getdbgridwidth(dbgrid5,'p'+'empset');
datetimepicker1.DateTime:=date;
end;
procedure TFormempset.tbnviewClick(Sender: TObject);
begin
if not assigned(formview) then
formview:=tformview.create(application);
formview.show;
end;
procedure TFormempset.ToolButton1Click(Sender: TObject);
begin
if Datamod.Adoempplan.Modified then
Datamod.Adoempplan.Post;
end;
procedure TFormempset.ExportData(Table:TDataset);
var
RangeE: Excel97.Range;
I, Row: Integer;
Bookmark: TBookmarkStr;
begin
ExcelApplication1.Visible [0] := True;
ExcelApplication1.Workbooks.Add (NULL, 0);
RangeE := ExcelApplication1.ActiveCell;
for I := 0 to Table.Fields.Count - 1 do
begin
RangeE.Value := Table.Fields [I].DisplayLabel;
RangeE := RangeE.Next;
end;
Table.DisableControls;
try
Bookmark := Table.Bookmark;
try
if Table.State=dsInactive then
Table.Open;
Table.First;
Row := 2;
while not Table.EOF do
begin
RangeE := ExcelApplication1.Range ['A' + IntToStr (Row),
'A' + IntToStr (Row)];
for I := 0 to Table.Fields.Count - 1 do
begin
RangeE.Value := Table.Fields [I].AsString;
RangeE := RangeE.Next;
end;
Table.Next;
Inc (Row);
end;
finally
Table.Bookmark := Bookmark;
end;
finally
Table.EnableControls;
end;
RangeE:=ExcelApplication1.Activecell;
RangeE.AutoFormat(3,NULL,Null,null,null,null,null);
end;
procedure TFormempset.DateTimePicker1CloseUp(Sender: TObject);
begin
datamod.Adoempplan.FieldByName('plandate').asstring :=datetostr(datetimepicker1.date);
end;
procedure TFormempset.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_F1 then
begin
//showmessage('ok!')
//MessageDlg(Key + ' has been pressed', mtInformation, [mbOK], 0);
Application.HelpFile :=Extractfilepath(application.ExeName)+ 'help\pasahelp.hlp';
application.HelpJump('SHM_CONTENTS0047');
end;
end;
procedure TFormempset.TbnprintClick(Sender: TObject);
begin
if not assigned(printsetup1) then
printsetup1:=tprintsetup1.create(self);
printsetup1.show;
end;
procedure TFormempset.DBGrid4DblClick(Sender: TObject);
begin
if dbgrid4.SelectedIndex=1 then
begin
datamod.Adoempplan1.Edit;
panel5.Visible:=true;
adodataset1.Open;
dbgrid1.SetFocus;
end;
end;
procedure TFormempset.DBGrid1DblClick(Sender: TObject);
begin
if dbgrid4.SelectedIndex=1 then
begin
datamod.Adoempplan1.Edit;
datamod.Adoempplan1.FieldByName('rno').asstring:=adodataset1.fieldbyname('rno').asstring;
datamod.adoempplan1.FieldByName('rprof').asstring:=adodataset1.fieldbyname('rprof').asstring;
datamod.Adoempplan1.FieldByName('rcourse').asstring:=adodataset1.fieldbyname('rcourse').asstring;
datamod.Adoempplan1.FieldByName('rdegree').asstring:=adodataset1.fieldbyname('rdegree').asstring;
datamod.Adoempplan1.FieldByName('boys').asinteger:=adodataset1.fieldbyname('boys').asinteger;
datamod.Adoempplan1.FieldByName('girls').asinteger:=adodataset1.fieldbyname('girls').asinteger;
datamod.Adoempplan1.fieldbyname('rdate').asdatetime:=adodataset1.fieldbyname('hopedate').asdatetime;
datamod.Adoempplan1.FieldByName('mem').asstring:=adodataset1.fieldbyname('memo').asstring;
end;
panel5.Visible:=false;
end;
procedure TFormempset.DBGrid1Exit(Sender: TObject);
begin
panel5.visible:=false;
adodataset1.Close;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?