📄 personunit.pas
字号:
unit personunit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Mask, DBCtrls, Buttons, ToolWin,
ComCtrls, ExtCtrls, DB, ADODB;
type
Tpersonform = class(TForm)
Panel1: TPanel;
ToolBar1: TToolBar;
sb_add: TSpeedButton;
sb_edit: TSpeedButton;
sb_del: TSpeedButton;
sb_save: TSpeedButton;
sb_cancel: TSpeedButton;
sb_close: TSpeedButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Panel2: TPanel;
Label2: TLabel;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBMemo1: TDBMemo;
DBGrid1: TDBGrid;
Panel3: TPanel;
Label6: TLabel;
DBLookupComboBox1: TDBLookupComboBox;
DBComboBox1: TDBComboBox;
BitBtn1: TBitBtn;
DBGrid2: TDBGrid;
Label7: TLabel;
a: TADODataSet;
DataSource1: TDataSource;
aDSDesigner: TStringField;
aDSDesigner2: TStringField;
aDSDesigner3: TStringField;
aDSDesigner4: TStringField;
aDSDesigner5: TStringField;
procedure FormCreate(Sender: TObject);
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure sb_closeClick(Sender: TObject);
procedure DBComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure sb_addClick(Sender: TObject);
procedure sb_editClick(Sender: TObject);
procedure sb_delClick(Sender: TObject);
procedure sb_saveClick(Sender: TObject);
procedure sb_cancelClick(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure DBLookupComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBComboBox1Enter(Sender: TObject);
procedure DBComboBox1Exit(Sender: TObject);
procedure DBEdit1Enter(Sender: TObject);
procedure DBEdit1Exit(Sender: TObject);
procedure DBMemo1Enter(Sender: TObject);
procedure DBMemo1Exit(Sender: TObject);
procedure DBGrid2TitleClick(Column: TColumn);
procedure DBGrid1TitleClick(Column: TColumn);
private
//colorder:array[0..4]of boolean;//各个列排序状态变量
{ Private declarations }
public
{ Public declarations }
end;
var
personform: Tpersonform;
implementation
uses dmunit;
{$R *.dfm}
procedure Tpersonform.FormCreate(Sender: TObject);
var i:integer;
begin
keypreview:=true;
dm.bm.Open ;
dm.bm.First ;
for i:=0 to dm.bm.RecordCount -1 do
begin
dbcombobox1.Items.Add(dm.bm.FieldValues['部门编号']) ;
dm.bm.Next ;
end;
pagecontrol1.ActivePage:=tabsheet1;
dm.person.Close;
dm.person.CommandText:='select * from 职工';
dm.person.Open ;
end;
procedure Tpersonform.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
begin
if dm.person.RecordCount =0 then
begin
messagebox(self.Handle,'没有主档数据,不能转换界面','提示信息',mb_iconinformation);
allowchange:=false;
end;
if sb_save.Enabled =true then
begin
messagebox(self.Handle,'请确定是保存还是取消数据。','提示信息',mb_iconinformation);
allowchange:=false;
end;
end;
procedure Tpersonform.sb_closeClick(Sender: TObject);
begin
if sb_save.Enabled =true then
begin
messagebox(self.Handle,'请确定是保存还是取消','提示信息',mb_iconinformation);
exit;
end;
dm.bm.Active:=false;
dm.person.Active:=false;
dm.detail.Active:=false;
close;
end;
procedure Tpersonform.DBComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
selectnext(sender as twincontrol,true,true);
end;
procedure Tpersonform.sb_addClick(Sender: TObject);
begin
try
dbedit1.ReadOnly:=false; dbedit2.ReadOnly :=false;
dbedit3.ReadOnly:=false; dbmemo1.ReadOnly:=false;
dbcombobox1.ReadOnly:=false;
dbcombobox1.SetFocus ;
dbgrid1.Enabled:=false;
sb_add.Enabled :=false; sb_edit.Enabled :=false;
sb_del.Enabled :=false; sb_save.Enabled :=true;
sb_cancel.Enabled :=true;
dm.person.Append;
except
messagebox(self.Handle,'增加数据失败','提示信息',mb_iconinformation);
end;
end;
procedure Tpersonform.sb_editClick(Sender: TObject);
begin
if dm.person.RecordCount =0 then
exit;
try
dm.person.Edit ;
dbedit1.ReadOnly:=false; dbedit2.ReadOnly :=false;
dbedit3.ReadOnly:=false; dbmemo1.ReadOnly:=false;
dbcombobox1.ReadOnly:=false;
dbcombobox1.SetFocus ;
dbgrid1.Enabled:=false;
sb_add.Enabled :=false; sb_edit.Enabled :=false;
sb_del.Enabled :=false; sb_save.Enabled :=true;
sb_cancel.Enabled :=true;
except
messagebox(self.Handle,'编辑数据失败','提示信息',mb_iconinformation);
end;
end;
procedure Tpersonform.sb_delClick(Sender: TObject);
begin
if dm.person.RecordCount =0 then
exit;
dm.detail.Close;
dm.detail.CommandText:='select * from 明细表 where 职工编号=:id';
dm.detail.Parameters.ParamByName('id').Value:=dm.person.FieldValues['职工编号'];
dm.detail.Open ;
if dm.detail.RecordCount >0 then
begin
messagebox(self.Handle,'该职工不能删除,因为存在他的业务数据!','提示信息',mb_iconinformation);
exit;
end;
try
if messagebox(self.Handle,'确定要删除当前数据吗?','提示信息',mb_yesno+mb_iconquestion)=idyes then
dm.person.Delete ;
except
messagebox(self.Handle,'删除当前数据失败','提示信息',mb_iconinformation);
end;
end;
procedure Tpersonform.sb_saveClick(Sender: TObject);
begin
try
dm.person.Post;
dbedit1.ReadOnly:=true; dbedit2.ReadOnly :=true;
dbedit3.ReadOnly:=true; dbmemo1.ReadOnly:=true;
dbcombobox1.ReadOnly:=true ;
dbgrid1.Enabled:=true;
sb_add.Enabled :=true; sb_edit.Enabled :=true;
sb_del.Enabled :=true; sb_save.Enabled :=false;
sb_cancel.Enabled :=false;
except
messagebox(self.Handle,'保存数据失败','提示信息',mb_iconinformation);
end;
end;
procedure Tpersonform.sb_cancelClick(Sender: TObject);
begin
try
dm.person.cancel;
dbedit1.ReadOnly:=true; dbedit2.ReadOnly :=true;
dbedit3.ReadOnly:=true; dbmemo1.ReadOnly:=true;
dbcombobox1.ReadOnly:=true;
dbgrid1.Enabled:=true;
sb_add.Enabled :=true; sb_edit.Enabled :=true;
sb_del.Enabled :=true; sb_save.Enabled :=false;
sb_cancel.Enabled :=false;
except
messagebox(self.Handle,'取消数据失败','提示信息',mb_iconinformation);
end;
end;
procedure Tpersonform.PageControl1Change(Sender: TObject);
begin
case pagecontrol1.ActivePageIndex of
0:
begin
sb_add.Enabled :=true; sb_edit.Enabled :=true;
sb_del.Enabled :=true; sb_save.Enabled :=false;
sb_cancel.Enabled :=false;
end;
1:
begin
sb_add.Enabled :=false; sb_edit.Enabled :=false;
sb_del.Enabled :=false; sb_save.Enabled :=false;
sb_cancel.Enabled :=false;
end;
end;
end;
procedure Tpersonform.DBLookupComboBox1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=13 then
bitbtn1.SetFocus;
end;
procedure Tpersonform.BitBtn1Click(Sender: TObject);
begin
a.Close;
a.CommandText:='select* from 职工 where 部门编号=:id ';
a.Parameters.ParamByName('id').Value:=dm.bm.FieldValues['部门编号'];
a.Open ;
label7.Caption:='共 '+inttostr(a.RecordCount)+' 人';
end;
procedure Tpersonform.FormActivate(Sender: TObject);
begin
dbcombobox1.SetFocus ;
end;
procedure Tpersonform.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=113 then
if sb_add.Enabled =true then
sb_add.Click ;
if key=114 then
if sb_edit.Enabled =true then
sb_edit.Click ;
if key=115 then
if sb_del.Enabled =true then
sb_del.Click ;
if key=116 then
if sb_save.Enabled =true then
sb_save.Click ;
if key=117 then
if sb_cancel.Enabled =true then
sb_cancel.Click ;
if key=119 then
sb_close.Click ;
end;
procedure Tpersonform.DBComboBox1Enter(Sender: TObject);
begin
dbcombobox1.Color:=clwhite;
end;
procedure Tpersonform.DBComboBox1Exit(Sender: TObject);
begin
dbcombobox1.Color:=$00FFB824;
end;
procedure Tpersonform.DBEdit1Enter(Sender: TObject);
begin
(sender as tdbedit).Color:=clwhite ;
end;
procedure Tpersonform.DBEdit1Exit(Sender: TObject);
begin
(sender as tdbedit).Color:=$00FFB824;
end;
procedure Tpersonform.DBMemo1Enter(Sender: TObject);
begin
dbmemo1.Color:=clwhite;
end;
procedure Tpersonform.DBMemo1Exit(Sender: TObject);
begin
dbmemo1.Color:=$00FFB824;
end;
procedure Tpersonform.DBGrid2TitleClick(Column: TColumn);
begin
a.Sort:=column.FieldName ;
end;
procedure Tpersonform.DBGrid1TitleClick(Column: TColumn);
begin
dm.person.Sort:=column.FieldName;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -