⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit_employee.pas

📁 用delphi开发的美容院管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -