📄 unit_employee.pas
字号:
unit Unit_Employee;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, Grids,DB, ExtDlgs;
type
Tfrm_employee = class(TForm)
pnlTop: TPanel;
sbtn_front: TSpeedButton;
sbtn_back: TSpeedButton;
sbtn_append: TSpeedButton;
sbtn_edit: TSpeedButton;
sbtn_save: TSpeedButton;
sbtn_print: TSpeedButton;
sbtn_close: TSpeedButton;
sbtn_delete: TSpeedButton;
PageControl1: TPageControl;
sht_main: TTabSheet;
sg: TStringGrid;
sht_content: TTabSheet;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Img_Photo: TImage;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
sbtn_AddEmpType: TSpeedButton;
Label17: TLabel;
edt_Empno: TEdit;
edt_Empname: TEdit;
dtp_Birthday: TDateTimePicker;
edt_Idcard: TEdit;
edt_Address: TEdit;
edt_Phone: TEdit;
edt_Mobile: TEdit;
mm_Remark: TMemo;
bbSelect: TBitBtn;
cbb_Sex: TComboBox;
edt_Zipcode: TEdit;
cbb_Type: TComboBox;
dtp_Indate: TDateTimePicker;
bbCancel: TBitBtn;
OpenPictureDialog1: TOpenPictureDialog;
procedure sbtn_frontClick(Sender: TObject);
procedure sbtn_backClick(Sender: TObject);
procedure sbtn_appendClick(Sender: TObject);
procedure sbtn_editClick(Sender: TObject);
procedure sbtn_saveClick(Sender: TObject);
procedure sbtn_deleteClick(Sender: TObject);
procedure sbtn_printClick(Sender: TObject);
procedure sbtn_closeClick(Sender: TObject);
procedure sgDblClick(Sender: TObject);
procedure sgSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure sht_contentShow(Sender: TObject);
procedure sht_mainShow(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbSelectClick(Sender: TObject);
procedure bbCancelClick(Sender: TObject);
private
{ Private declarations }
PageIndex : integer;
AppendOrEdit,DoChange : boolean;
Empno : string;
procedure ClearInfo();
procedure GetInfo();
procedure SearchInfo();
function SaveInfo():boolean;
procedure MakeEnabled(temp:boolean);
public
{ Public declarations }
procedure ref();
end;
var
frm_employee: Tfrm_employee;
implementation
uses Unit_DataModule,unit_TotalPublic,PublicFunOrPro, Unit_Customer;
{$R *.dfm}
{************************************************}
procedure Tfrm_employee.ref ();
begin
pagecontrol1.ActivePage := sht_main;
with sg do
begin
Cells[0,0] := '员工编号';
Cells[1,0] := '员工姓名';
Cells[2,0] := '性别';
Cells[3,0] := '生日';
Cells[4,0] := '职务';
end;
formresize(nil);
SearchInfo();
sbtn_append.Enabled := GetPower(SysUserId,'员工信息','修改权');
sbtn_edit.Enabled := sbtn_append.Enabled ;
sbtn_delete.Enabled := sbtn_append.Enabled;
sbtn_print.Enabled := GetPower(SysUserId,'员工信息','打印权');
end;
{**** procedure used to clear information ****}
procedure Tfrm_employee.ClearInfo ();
begin
edt_Empno.Text := '';
edt_Empname.Text := '';
cbb_Sex.Text := '';
dtp_Birthday.Date := Date;
dtp_Indate.Date := Date;
edt_Idcard.Text := '';
edt_Address.Text := '';
edt_Zipcode.Text := '';
edt_Phone.Text := '';
edt_Mobile.Text := '';
cbb_Type.Text := '';
mm_Remark.Text := '';
Img_photo.Picture := nil;
edt_Empno.SetFocus ;
end;
procedure Tfrm_employee.SearchInfo();
var
i :integer;
begin
StringGridClear(sg);
with dmod.qrydata do
begin
close;
SQL.Text := 'select emp_no,emp_name,emp_sex,emp_birthday,emp_type from employee ' +
'order by emp_indate desc,emp_no';
Open;
i:=1;
while not eof do
begin
sg.Cells[0,i] := FieldByName('emp_no').AsString ;
sg.Cells[1,i] := FieldByName('emp_name').AsString ;
sg.Cells[2,i] := FieldByName('emp_sex').AsString ;
sg.Cells[3,i] := FieldByName('emp_birthday').AsString ;
sg.Cells[4,i] := FieldByName('emp_type').AsString ;
inc(i);
next;
end;
end;
if i<>1 then sg.RowCount := i+1;
sbtn_front.Enabled := false;
sbtn_back.Enabled := false;
if sg.RowCount > 3 then sbtn_back.Enabled := true;
end;
{**** procedure used to set status of button ****}
procedure Tfrm_employee.MakeEnabled(temp:boolean);
begin
if sbtn_append.Enabled then
sbtn_save.Enabled := temp
else
sbtn_save.Enabled := false;
sbtn_delete.Enabled := false;
edt_Empno.Enabled := temp;
edt_Empname.Enabled := temp;
cbb_Sex.Enabled := temp;
dtp_Birthday.Enabled:= temp;
dtp_Indate.Enabled := temp;
edt_Idcard.Enabled := temp;
edt_Address.Enabled := temp;
edt_Zipcode.Enabled := temp;
edt_Phone.Enabled := temp;
edt_Mobile.Enabled := temp;
cbb_Type.Enabled := temp;
mm_Remark.Enabled := temp;
bbSelect.Enabled := temp;
bbCancel.Enabled := temp;
sbtn_AddEmpType.Enabled:=temp;
if temp then edt_Empno.SetFocus;
end;
{**** procedure used to retrieve data from db according to empno ****}
procedure Tfrm_employee.GetInfo();
var
fileStream :TFileStream;
//blobStream:TBlobStream;
begin
//to select employee information in detail;
if sg.Cells[0,sg.row]='' then exit;
Empno := sg.Cells[0,sg.Row];
with dmod.qrydata do
begin
close;
SQL.Text := 'select * from employee where emp_no='+#39+Empno+#39;
open;
edt_Empno.Text := Empno;
edt_Empname.Text := FieldByName('Emp_name').AsString ;
cbb_Sex.Text := FieldByName('Emp_sex').AsString ;
dtp_Birthday.Date := FieldByName('Emp_birthday').AsDateTime ;
dtp_Indate.Date := FieldByName('Emp_indate').AsDateTime ;
edt_Idcard.Text := FieldByName('Emp_idcard').AsString ;
edt_Address.Text := FieldByName('Emp_address').AsString ;
edt_Zipcode.Text := FieldByName('Emp_zipcode').AsString ;
edt_Phone.Text := FieldByName('Emp_phone').AsString ;
edt_Mobile.Text := FieldByName('Emp_mobile').AsString ;
cbb_Type.Text := FieldByName('Emp_type').AsString ;
//showmessage(inttostr(TBlobField(FieldByName('Emp_photo')).BlobSize));
if TBlobField(FieldByName('Emp_photo')).BlobSize > 1 then
begin
fileStream := TFileStream.Create('temp.jpg',fmCreate);
TBlobField(FieldByName('Emp_photo')).SaveToStream(fileStream);
fileStream.Free;
Img_Photo.Picture.RegisterFileFormat('*'+'jpg','',TGraphic);
Img_Photo.Height := 145;
Img_Photo.Width := 129;
LoadImage(Img_Photo,'temp.jpg');
end else Img_photo.Picture.Graphic :=nil;
DeleteFile('temp.jpg');
mm_Remark.Text := FieldByName('Emp_remark').AsString ;
end;
end;
{**** function used to determine employee information is saved or not ****}
function Tfrm_employee.SaveInfo ():boolean;
var
MemStream : TMemoryStream;
temp_type : string;
begin
result := true;
DoChange := true;
//to determine if the following two fields are filled or not
if trim(edt_Empno.Text)='' then
begin
MessageBox(handle,'请输入员工编号!','提示',mb_ok+mb_iconinformation);
result := false;
DoChange := false;
edt_Empno.SetFocus ;
exit;
end;
if trim(edt_Empname.Text)='' then
begin
MessageBox(handle,'请输入员工姓名!','提示',mb_ok+mb_iconinformation);
result := false;
DoChange := false;
edt_Empname.SetFocus ;
exit;
end;
//to determine whether the employee has existed or not
Empno := trim(edt_Empno.Text );
if AppendOrEdit then
with dmod.qrydata do
begin
close;
SQL.Text := 'select Emp_no from employee where Emp_no=:no';
ParamByName('no').AsString := Empno;
open;
if not eof then
begin
MessageBox(self.Handle ,'该员工编号已经存在,请重新确认!','提示',mb_ok+mb_iconinformation);
edt_Empno.SetFocus ;
result := false;
exit;
end;
end;
with dmod.qrydata do
begin
close;
SQL.Text := 'select Emp_no from employee where Emp_name=:name';
ParamByname('name').AsString := trim(edt_Empname.Text);
open;
if not eof then
if FieldByName('Emp_no').AsString <> Empno then
begin
MessageBox(self.Handle ,'该员工姓名已经存在,请重新确认!','提示',mb_ok+mb_iconinformation);
edt_Empname.SetFocus ;
result := false;
exit;
end;
end;
//try to save the information
temp_type:=trim(cbb_Type.Text);
try
dmod.Database.StartTransaction ;
with dmod.qrydata do
begin
close;
SQL.Text := 'delete from employee where emp_no='+#39+Empno+#39;
ExecSQL;
close;
SQL.Text := 'insert into employee(emp_no,emp_name,emp_sex,emp_birthday' +
',emp_indate,emp_idcard,emp_address,emp_zipcode,emp_phone,emp_mobile,emp_type,emp_photo'+
',emp_remark) values (:no,:name,:sex,:birthday,:indate,:idcard,:address' +
',:zipcode,:phone,:mobile,:type,:photo,:remark)';
ParamByName('no').AsString := trim(edt_Empno.Text);
ParamByName('name').AsString := trim(edt_Empname.Text );
ParamByName('sex').AsString := trim(cbb_Sex.Text );
ParamByName('birthday').AsDate := dtp_Birthday.Date ;
ParamByName('indate').AsDate := dtp_Indate.Date ;
ParamByName('idcard').AsString := trim(edt_Idcard.Text );
ParamByName('address').AsString := trim(edt_Address.Text );
ParamByName('zipcode').AsString := trim(edt_Zipcode.Text );
ParamByName('phone').AsString:= trim(edt_Phone.Text );
ParamByName('mobile').AsString := trim(edt_mobile.Text );
ParamByName('type').AsString := StringGetChar(temp_type,'-') ;
if img_photo.Picture.Graphic <>nil then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -