📄 empreq.pas
字号:
unit empreq;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, RXDBCtrl, StdCtrls, DBCtrls, Buttons, Mask, ImgList,
ExtCtrls, ComCtrls, ToolWin, Db, ADODB, Menus, OleCtrls;
type
TFormempreq = class(TForm)
ImageList1: TImageList;
Panel2: TPanel;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label16: TLabel;
Label17: TLabel;
Label6: TLabel;
Label13: TLabel;
Label18: TLabel;
DBEdit2: TDBEdit;
DateTimePicker1: TDateTimePicker;
DBEdit10: TDBEdit;
DBEdit11: TDBEdit;
DBEdit13: TDBEdit;
DBEdit14: TDBEdit;
DBEdit15: TDBEdit;
DBEdit17: TDBEdit;
DBComboBox3: TDBComboBox;
DBGrid2: TDBGrid;
ScrollBox1: TScrollBox;
btsave: TBitBtn;
btcancel: TBitBtn;
btclose: TBitBtn;
DataSource1: TDataSource;
Panel4: TPanel;
DBGrid1: TDBGrid;
Panel3: TPanel;
DBGrid3: TDBGrid;
Panel5: TPanel;
DBMemo1: TDBMemo;
ScrollBox2: TScrollBox;
Label4: TLabel;
Splitter1: TSplitter;
PopupMenu1: TPopupMenu;
n12: TMenuItem;
n13: TMenuItem;
n11: TMenuItem;
PopupMenu2: TPopupMenu;
MenuItem1: TMenuItem;
n2: TMenuItem;
N4: TMenuItem;
MenuItem3: TMenuItem;
Splitter2: TSplitter;
ToolBar1: TToolBar;
toolbutton3: TToolButton;
tbnsort: TToolButton;
tbnfind: TToolButton;
tbnprint: TToolButton;
TBEXIT: TToolButton;
DBNav: TDBNavigator;
Aqy1: TADOQuery;
procedure Label10Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Label3Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure DateTimePicker3Change(Sender: TObject);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure DBGrid2KeyPress(Sender: TObject; var Key: Char);
procedure btcloseClick(Sender: TObject);
procedure TBEXITClick(Sender: TObject);
procedure btsaveClick(Sender: TObject);
procedure btcancelClick(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure DBGrid3DblClick(Sender: TObject);
procedure Panel3Exit(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure n2Click(Sender: TObject);
procedure DBGrid1TitleClick(Column: TColumn);
procedure DBGrid2TitleClick(Column: TColumn);
procedure tbnsortClick(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure n11Click(Sender: TObject);
procedure n12Click(Sender: TObject);
procedure n13Click(Sender: TObject);
procedure tbnfindClick(Sender: TObject);
procedure tbnprintClick(Sender: TObject);
procedure toolbutton3Click(Sender: TObject);
procedure DBComboBox3Exit(Sender: TObject);
procedure DBComboBox3Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DateTimePicker1CloseUp(Sender: TObject);
procedure DBGrid3Exit(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
Formempreq: TFormempreq;
implementation
uses main,datamol,publicfunction, formzonghe, formdepatment, viewreq,
repprintsetup;
{$R *.DFM}
procedure TFormempreq.Label10Click(Sender: TObject);
begin
case (sender as tlabel).tag of
0:formmain.personal_edu.Click;
1:formmain.personal_kind.Click;
2:formmain.personal_prof.Click;
end;
end;
procedure TFormempreq.FormClose(Sender: TObject; var Action: TCloseAction);
begin
setdbgridwidth(dbgrid1,'p'+'empsave');
setdbgridwidth(dbgrid2,'p'+'empsave');
formempreq:=nil;
action:=cafree;
end;
procedure TFormempreq.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (activecontrol=dbgrid1) or (activecontrol=dbgrid2) then
exit
else
if key=#13 then
begin
key:=#0;
selectnext(activecontrol,true,true);
end;
end;
procedure TFormempreq.Label3Click(Sender: TObject);
begin
if not assigned(formdept) then
formdept:=tformdept.create(application);
formdept.show;
end;
procedure TFormempreq.FormActivate(Sender: TObject);
begin
getdbgridwidth(dbgrid1,'p'+'empreq');
getdbgridwidth(dbgrid2,'p'+'empreq');
dbcombobox3.Items.Clear;
with datamod.adoquery1 do
begin
sql.Clear;
sql.add('select * from pub05010');
open;
while not eof do
begin
dbcombobox3.Items.Add(fieldbyname('dno').asstring);
next;
end;
close;
end;
end;
procedure TFormempreq.DateTimePicker3Change(Sender: TObject);
begin
dbedit15.text:=formatdatetime('yyyy'+dateseparator+'mm'+dateseparator+'dd',datetimepicker1.date)
end;
procedure TFormempreq.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
dbgrid_keypress(dbgrid1,key);
end;
procedure TFormempreq.DBGrid2KeyPress(Sender: TObject; var Key: Char);
begin
dbgrid_keypress(dbgrid2,key);
end;
procedure TFormempreq.btcloseClick(Sender: TObject);
begin
close;
end;
procedure TFormempreq.TBEXITClick(Sender: TObject);
begin
close;
end;
procedure TFormempreq.btsaveClick(Sender: TObject);
begin
if datamod.adoempreq1.Modified then
begin
datamod.Adoempreq1.Post;
datamod.Adoempreq.Refresh;
end;
end;
procedure TFormempreq.btcancelClick(Sender: TObject);
begin
datamod.Adoempreq1.CancelUpdates;
end;
procedure TFormempreq.DBGrid1DblClick(Sender: TObject);
begin
if (dbgrid1.SelectedIndex =1) or (dbgrid1.SelectedIndex =2) or (dbgrid1.SelectedIndex=5)or (dbgrid1.SelectedIndex=8) then
begin
panel3.Visible :=true;
with Aqy1 do
begin
case dbgrid1.selectedindex of
1:begin
close;
sql.clear;
sql.Add('select * from per05010'); //科系
open;
Fields[0].DisplayLabel:='科系代码';
Fields[1].DisplayLabel:='科系名称';
end;
2:begin
close;
sql.clear;
sql.Add('select * from per04010');//学历
open;
Fields[0].DisplayLabel:='学历代码';
Fields[1].DisplayLabel:='学历名称';
end;
5:begin
close;
sql.clear;
sql.Add('select * from per01010');//职务
open;
Fields[0].DisplayLabel:='职务代码';
Fields[1].DisplayLabel:='职务名称';
end;
8:begin
close;
sql.Clear;
sql.add('select * from per03010'); //籍贯
open;
Fields[0].DisplayLabel:='籍贯代码';
Fields[1].DisplayLabel:='籍贯名称';
end;
end;
end;
end;
end;
procedure TFormempreq.DBGrid3DblClick(Sender: TObject);
begin
datamod.adoempreq1.edit;
case dbgrid1.SelectedIndex of
1:datamod.adoempreq1Rcourse.asstring:=aqy1.fields[1].AsString;
2:datamod.adoempreq1Rdegree.asstring:=aqy1.fields[1].AsString;
5:datamod.adoempreq1Rprof.asstring:=aqy1.fields[1].AsString;
8:datamod.adoempreq1Rprov.asstring:=aqy1.fields[1].AsString;
end;
end;
procedure TFormempreq.Panel3Exit(Sender: TObject);
begin
panel3.Visible:=false;
end;
procedure TFormempreq.N3Click(Sender: TObject);
var i:1..5;
begin
for i:=1 to fcount do
dbgrid2.Columns[findex[i]].Color :=clwindow;
fcount:=0;
end;
procedure TFormempreq.N1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to fcount do
if dbgrid2.SelectedIndex =findex[i] then
begin
fsort[i]:='ASC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=dbgrid2.selectedindex;
fsort[fcount]:='ASC';
dbgrid2.Columns[dbgrid2.selectedindex].Color :=clgray;
end;
end;
procedure TFormempreq.n2Click(Sender: TObject);
var i:integer;
begin
for i:=1 to fcount do
if dbgrid2.SelectedIndex =findex[i] then
begin
fsort[i]:='DESC';
exit;
end;
if fcount<5 then
begin
fcount:=fcount+1;
findex[fcount]:=dbgrid2.selectedindex;
fsort[fcount]:='DESC';
dbgrid2.Columns[dbgrid2.selectedindex].Color :=clgray;
end;
end;
procedure TFormempreq.DBGrid1TitleClick(Column: TColumn);
begin
if f='DESC' then
f:='ASC'
else
f:='DESC';
datamod.ADOempreq1.Sort :=column.FieldName+' '+f;
end;
procedure TFormempreq.DBGrid2TitleClick(Column: TColumn);
begin
if f='DESC' then
f:='ASC'
else
f:='DESC';
datamod.ADOempreq.Sort :=column.FieldName+' '+f;
end;
procedure TFormempreq.tbnsortClick(Sender: TObject);
var i:1..5;
begin
if manyfield then
begin
manyfield:=false;
tbnsort.hint:='设定多字段排序';
popupmenu2.Items[0].Enabled :=false;
popupmenu2.Items[1].Enabled :=false;
popupmenu2.Items[2].Enabled :=false;
popupmenu2.Items[3].Enabled :=false;
end
else begin
manyfield:=true;
tbnsort.hint:='取消多字段排序'; //说明现在dbgrid1正处于多字段排序中
f:='';
popupmenu2.Items[0].Enabled :=true;
popupmenu2.Items[1].Enabled :=true;
popupmenu2.Items[2].Enabled :=true;
popupmenu2.Items[3].Enabled :=true;
fcount:=0;
for i:=1 to 5 do
begin
findex[i]:=0;
fsort[i]:='';
end;
end;
end;
procedure TFormempreq.N4Click(Sender: TObject);
var i:1..5;
sortexp:string;
begin
sortexp:='';
for i:=1 to fcount do
begin
if dbgrid2.Columns[findex[i]].Color=clgray then
begin
sortexp :=sortexp+dbgrid2.Columns[findex[i]].FieldName+' '+fsort[i];
if i<fcount then sortexp:=sortexp+',';
end;
end;
if sortexp<>'' then datamod.Adoempreq.Sort :=sortexp;
end;
procedure TFormempreq.n11Click(Sender: TObject);
begin
datamod.ADOempreq1.append;
end;
procedure TFormempreq.n12Click(Sender: TObject);
begin
datamod.Adoempreq1.Edit;
end;
procedure TFormempreq.n13Click(Sender: TObject);
begin
datamod.Adoempreq1.Delete;
end;
procedure TFormempreq.tbnfindClick(Sender: TObject);
begin
findrecorder(datamod.adoempreq1,'Adoempreq1','emp06011'); //调用publicfuction中的查询功能
end;
procedure TFormempreq.tbnprintClick(Sender: TObject);
begin
if not assigned(printsetup) then
printsetup:=tprintsetup.create(self);
printsetup.show;
end;
procedure TFormempreq.toolbutton3Click(Sender: TObject);
begin
if not assigned(formview) then
formview:=Tformview.create(application);
formview.show;
end;
procedure TFormempreq.DBComboBox3Exit(Sender: TObject);
var ary:Tadoquery;
begin
ary:=Tadoquery.Create(application);
ary.Connection :=datamod.Database1;
with ary do
begin
sql.Clear;
sql.Add ('select * from pub05010 where dno='''+dbcombobox3.text+''' ');
open;
if eof then
begin
Application.messagebox('没有此部门','提示',mb_ok+mb_iconinformation);
close;
end
else begin
dbcombobox3.Hint :=fieldbyname('dept').asstring;
dbedit11.Text :=fieldbyname('sumperson').asstring;
close;
sql.Clear;
sql.Add ('select count(*) from per24010 where deptno='''+dbcombobox3.text+''' ');
open;
if not eof then
dbedit10.text:=fields[0].AsString;
close;
end;
end;
end;
procedure TFormempreq.DBComboBox3Change(Sender: TObject);
var ary:Tadoquery;
begin
ary:=Tadoquery.Create(application);
ary.Connection :=datamod.Database1;
with ary do
begin
sql.Clear;
sql.Add ('select * from pub05010 where dno='''+dbcombobox3.text+''' ');
open;
if eof then
begin
Application.messagebox('没有此部门','提示',mb_ok+mb_iconinformation);
close;
end
else begin
dbcombobox3.Hint :=fieldbyname('dept').asstring;
datamod.Adoempreq.FieldByName('sumperson').asstring :=fieldbyname('sumperson').asstring;
close;
sql.Clear;
sql.Add ('select count(*) from per24010 where deptno='''+dbcombobox3.text+''' ');
open;
if not eof then
datamod.Adoempreq.FieldByName('nowperson').asstring:=fields[0].AsString;
close;
end;
end;
end;
procedure TFormempreq.FormCreate(Sender: TObject);
begin
with datamod do
begin
Adoempreq.close;
Adoempreq1.close;
Adoempreq.CursorType :=ctKeyset;
Adoempreq.LockType :=ltpessimistic;
Adoempreq1.CursorType :=ctKeyset;
Adoempreq1.LockType :=ltpessimistic;
Adoempreq.Open;
Adoempreq1.Open;
end;
datetimepicker1.date:=date;
end;
procedure TFormempreq.DateTimePicker1CloseUp(Sender: TObject);
begin
datamod.adoempreq.fieldbyname('rdate').asstring:=formatdatetime('yyyy'+dateseparator+'mm'+dateseparator+'dd',datetimepicker1.date)
end;
procedure TFormempreq.DBGrid3Exit(Sender: TObject);
begin
panel3.visible:=false;
end;
procedure TFormempreq.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_CONTENTS0046');
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -