📄 ufrm_main.~pas
字号:
unit Ufrm_main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, ComCtrls , StdCtrls, DB, DBTables;
type
Tfrm_main = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBox1: TGroupBox;
DBGrid1: TDBGrid;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
GroupBox3: TGroupBox;
Edit10: TEdit;
Edit11: TEdit;
GroupBox4: TGroupBox;
Label10: TLabel;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
TabSheet3: TTabSheet;
GroupBox5: TGroupBox;
Label11: TLabel;
DBGrid2: TDBGrid;
Button10: TButton;
StatusBar1: TStatusBar;
Label12: TLabel;
Label13: TLabel;
Button4: TButton;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Button5: TButton;
DataSource1: TDataSource;
Table1: TTable;
DataSource2: TDataSource;
Table2: TTable;
Button6: TButton;
procedure Button10Click(Sender: TObject);
procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Edit12KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit5KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit6KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit7KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frm_main: Tfrm_main; user:string;
implementation
{$R *.dfm}
procedure Tfrm_main.Button10Click(Sender: TObject);
begin
table1.Close;
table2.Close;
close;
end;
procedure Tfrm_main.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Edit1.Text := Table1.FieldByName('编号').AsString;
Edit2.Text := Table1.FieldByName('姓名').AsString;
Edit3.Text := Table1.FieldByName('性别').AsString;
Edit4.Text := Table1.FieldByName('年龄').AsString;
Edit5.Text := Table1.FieldByName('部门').AsString;
Edit6.Text := Table1.FieldByName('专业').AsString;
Edit7.Text := Table1.FieldByName('职称').AsString;
Edit8.Text := Table1.FieldByName('工资').AsString;
Edit9.Text := Table1.FieldByName('津贴').AsString;
Edit12.Text := Table1.FieldByName('部门').AsString;
edit13.Clear;
edit14.Clear;
edit15.Clear;
end;
procedure Tfrm_main.FormCreate(Sender: TObject);
begin
table1.Open ;
table2.Open;
Edit1.Text := Table1.FieldByName('编号').AsString;
Edit2.Text := Table1.FieldByName('姓名').AsString;
Edit3.Text := Table1.FieldByName('性别').AsString;
Edit4.Text := Table1.FieldByName('年龄').AsString;
Edit5.Text := Table1.FieldByName('部门').AsString;
Edit6.Text := Table1.FieldByName('专业').AsString;
Edit7.Text := Table1.FieldByName('职称').AsString;
Edit8.Text := Table1.FieldByName('工资').AsString;
Edit9.Text := Table1.FieldByName('津贴').AsString;
Edit12.Text := Table1.FieldByName('部门').AsString;
end;
procedure Tfrm_main.Button4Click(Sender: TObject);
var
wage,commission,i : integer;
begin
table1.First;
wage :=0;
commission :=0;
for i:=1 to table1.RecordCount do
begin
wage := wage + strtoint(Table1.FieldByName('工资').AsString);
commission :=commission + strtoint(Table1.FieldByName('津贴').AsString);
if not(Table1.Eof) then Table1.Next;
end;
edit10.Text :=inttostr(wage);
edit11.Text :=inttostr(commission);
end;
procedure Tfrm_main.Button5Click(Sender: TObject);
var
wage,commission,i ,mark ,num: integer;
begin
table1.First;
mark :=0;
for i:=1 to table1.RecordCount do
begin
if (edit12.Text = Table1.FieldByName('部门').AsString) then
begin
mark :=1;
break;
end;
if not(Table1.Eof) then Table1.Next;
end;
if(mark=0) then
begin
showmessage('该部门不存在。');
exit;
end;
table1.First;
wage :=0;
commission :=0;
num:=0;
for i:=1 to table1.RecordCount do
begin
if (Table1.FieldByName('部门').AsString = edit12.Text ) then
begin
wage := wage + strtoint(Table1.FieldByName('工资').AsString);
commission :=commission + strtoint(Table1.FieldByName('津贴').AsString);
num:=num+1;
end;
if not(Table1.Eof) then Table1.Next;
end;
edit13.Text := inttostr(num);
edit14.Text :=inttostr(wage);
edit15.Text :=inttostr(commission);
end;
procedure Tfrm_main.Button1Click(Sender: TObject);
var
temp:integer;
gender1,gender2,t1,t2:bool;
begin
gender1:= (edit3.Text='男');
gender2 := (edit3.Text='女');
if not(gender1 or gender2) then
begin
showmessage('性别要填"男"或"女"');
edit3.clear;
exit;
end;
try
temp := StrToint(edit4.Text);
except
on E: EConvertError do
begin
ShowMessage('年龄必须是一个数字。');
edit4.clear;
exit;
end ;
end ;
t1:= temp<61;
t2:=temp>14 ;
if not( t1 and t2 )then
begin
ShowMessage('一个正常职工年龄必须在15-60岁之间。');
edit4.clear;
exit;
end;
try
temp := StrToint(edit8.Text);
except
on E: EConvertError do
begin
ShowMessage('薪水必须是一个数字。');
edit8.clear;
exit;
end ;
end ;
t1:= temp<30001;
t2:=temp>0 ;
if not( t1 and t2 )then
begin
ShowMessage('一个正常职工薪水应该在1元--3万元之间。');
edit8.clear;
exit;
end;
try
temp := StrToint(edit9.Text);
except
on E: EConvertError do
begin
ShowMessage('津贴必须是一个数字。');
edit9.clear;
exit;
end ;
end ;
t1:= temp<10001;
t2:=temp>0 ;
if not( t1 and t2 )then
begin
ShowMessage('一个正常职工津贴应该在1元--1万元之间。');
edit9.clear;
exit;
end;
if not Table1.Active then
begin
ShowMessage('数据集未打开,请先设置数据集信息。');
Exit;
end;
if Table1.FindKey([edit1.text]) then
begin
ShowMessage('此员工编号已经存在,请重新输入。');
Exit;
end;
If not(MessageDlg('你确定要插入新成员吗?',mtConfirmation,
[mbYes,mbno],0)=mrYes) then exit;
Table1.InsertRecord([edit1.Text, edit2.text,edit3.Text , edit4.Text,
edit5.Text, edit6.Text, edit7.Text,edit8.Text,edit9.Text]);
Table1.Refresh;
Table2.InsertRecord([inttostr(table2.RecordCount+1), FormatDatetime('yyyy-mm-dd', date() ),
'插入新员工', '无',edit1.Text,user]);
Table2.Refresh;
end;
procedure Tfrm_main.Button2Click(Sender: TObject);
begin
if Table1.IsEmpty then
begin
ShowMessage('没有可删除的记录。');
Exit;
end;
If not(MessageDlg('你确定要删除此条记录吗?',mtConfirmation,
[mbYes,mbno],0)=mrYes) then exit;
Table2.InsertRecord([inttostr(table2.RecordCount+1), FormatDatetime('yyyy-mm-dd', date() ),
'删除员工', edit1.Text,'无', user]);
Table2.Refresh;
Table1.Delete;
Table1.Refresh;
end;
procedure Tfrm_main.Button3Click(Sender: TObject);
begin
Table1.edit;
if not (Table1.FieldByName('编号').AsString = edit1.Text) then
begin
showmessage('请不要改动员工编号');
exit;
end;
If not(MessageDlg('你确定要更新此条记录吗?',mtConfirmation,
[mbYes,mbno],0)=mrYes) then exit;
if not (Table1.FieldByName('姓名').AsString = edit2.text) then
begin
Table2.InsertRecord([inttostr(table2.RecordCount+1), FormatDatetime('yyyy-mm-dd', date() ),
'姓名', Table1.FieldByName('姓名').AsString,edit2.text, user+'-'+edit1.Text]);
Table1.FieldByName('姓名').AsString := edit2.text;
end;
if not (Table1.FieldbyName('性别').AsString = edit3.Text)then
begin
Table2.InsertRecord([inttostr(table2.RecordCount+1), FormatDatetime('yyyy-mm-dd', date() ),
'性别', Table1.FieldByName('性别').AsString,edit3.text, user+'-'+edit1.Text]);
Table1.FieldByName('性别').AsString := edit3.text;
end;
if not (Table1.FieldbyName('年龄').AsString = edit4.Text)then
begin
Table2.InsertRecord([inttostr(table2.RecordCount+1), FormatDatetime('yyyy-mm-dd', date() ),
'年龄', Table1.FieldByName('年龄').AsString,edit4.text, user+'-'+edit1.Text]);
Table1.FieldByName('年龄').AsString := edit4.text;
end;
if not ( Table1.FieldByName('部门').AsString = edit5.text) then
begin
Table2.InsertRecord([inttostr(table2.RecordCount+1), FormatDatetime('yyyy-mm-dd', date() ),
'部门', Table1.FieldByName('部门').AsString,edit5.text, user+'-'+edit1.Text]);
Table1.FieldByName('部门').AsString := edit5.text;
end;
if not (Table1.FieldByName('专业').AsString = edit6.text)then
begin
Table2.InsertRecord([inttostr(table2.RecordCount+1), FormatDatetime('yyyy-mm-dd', date() ),
'专业', Table1.FieldByName('专业').AsString,edit6.text, user+'-'+edit1.Text]);
Table1.FieldByName('专业').AsString := edit6.text;
end;
if not(Table1.FieldByName('职称').AsString = edit7.text)then
begin
Table2.InsertRecord([inttostr(table2.RecordCount+1), FormatDatetime('yyyy-mm-dd', date() ),
'职称', Table1.FieldByName('职称').AsString,edit7.text, user+'-'+edit1.Text]);
Table1.FieldByName('职称').AsString := edit7.text;
end;
if not(Table1.FieldByName('工资').AsString = edit8.text)then
begin
Table2.InsertRecord([inttostr(table2.RecordCount+1), FormatDatetime('yyyy-mm-dd', date() ),
'工资', Table1.FieldByName('工资').AsString,edit8.text, user+'-'+edit1.Text]);
Table1.FieldByName('工资').AsString := edit8.text;
end;
if not(Table1.FieldByName('津贴').AsString = edit9.text)then
begin
Table2.InsertRecord([inttostr(table2.RecordCount+1), FormatDatetime('yyyy-mm-dd', date() ),
'津贴', Table1.FieldByName('津贴').AsString,edit9.text, user+'-'+edit1.Text]);
Table1.FieldByName('津贴').AsString := edit9.text;
end;
Table2.Refresh;
Table1.Post;
Table1.Refresh;
end;
procedure Tfrm_main.Button6Click(Sender: TObject);
begin
if Table2.IsEmpty then
begin
ShowMessage('没有可删除的记录。');
Exit;
end;
Table2.Delete;
Table2.Refresh;
end;
procedure Tfrm_main.Edit12KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if length(edit12.Text)>12 then
begin
showmessage('部门的名称不得长于6个汉字。');
edit12.clear;
exit;
end;
end;
procedure Tfrm_main.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if length(edit1.Text)>10 then
begin
showmessage('编号不得长于10位。');
edit1.clear;
exit;
end;
end;
procedure Tfrm_main.Edit2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if length(edit2.Text)>10 then
begin
showmessage('名字不得多于5个汉字。');
edit2.clear;
exit;
end;
end;
procedure Tfrm_main.Edit5KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if length(edit5.Text)>12 then
begin
showmessage('部门的名称不得长于6个汉字。');
edit5.clear;
exit;
end;
end;
procedure Tfrm_main.Edit6KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if length(edit6.Text)>16 then
begin
showmessage('部门的名称不得长于8个汉字。');
edit6.clear;
exit;
end;
end;
procedure Tfrm_main.Edit7KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if length(edit7.Text)>4 then
begin
showmessage('部门的名称不得长于4个汉字。');
edit7.clear;
exit;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -