uemp.~pas

来自「DELPHI编程入门篇.从基础入手,浅显易懂,一定物有所值.」· ~PAS 代码 · 共 277 行

~PAS
277
字号
unit Uemp;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, Grids, StdCtrls, ExtCtrls, DB, ADODB;

type
  Tfrmemp = class(TForm)
    StringGrid1: TStringGrid;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    ComboBox1: TComboBox;
    ADOQuery1: TADOQuery;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure StringGrid1Click(Sender: TObject);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmemp: Tfrmemp;
  ifupdate:boolean;

implementation

uses Udatamodule;

{$R *.dfm}

procedure Tfrmemp.FormCreate(Sender: TObject);
var
  arow:integer;
begin
  ifupdate:=false;
  stringgrid1.Cells[0,0]:='员工编号';
  stringgrid1.Cells[1,0]:='员工名称';
  stringgrid1.Cells[2,0]:='分店号';
  stringgrid1.Cells[3,0]:='职务';
  stringgrid1.Cells[4,0]:='身份证';
  adoquery1.SQL.Text:='select * from empinfo';
  adoquery1.Open;
  if adoquery1.RecordCount > 0 then
  stringgrid1.RowCount:=adoquery1.RecordCount+1;
  arow:=1;
  while not adoquery1.Eof do
  begin
    stringgrid1.Cells[0,arow]:=adoquery1.FieldValues['empid'];
    stringgrid1.Cells[1,arow]:=adoquery1.FieldValues['empname'];
    stringgrid1.Cells[2,arow]:=adoquery1.FieldValues['filid'];
    stringgrid1.Cells[3,arow]:=adoquery1.FieldByName('duty').AsString;
    stringgrid1.Cells[4,arow]:=adoquery1.FieldByName('idcard').AsString;
    adoquery1.Next;
    inc(arow);
  end;
  adoquery1.Close;
  adoquery1.SQL.Text:='select filid from filiale order by filid';
  adoquery1.Open;
  while not adoquery1.Eof do
  begin
    combobox1.Items.Add(adoquery1.FieldValues['filid']);
    adoquery1.Next;
  end;  
  adoquery1.Close;  
end;

procedure Tfrmemp.SpeedButton1Click(Sender: TObject);
var
  newempid:string;
begin
  edit2.Enabled:=true;
  edit3.Enabled:=true;
  edit4.Enabled:=true;
  combobox1.Enabled:=true;
  adoquery1.SQL.Text:='select max(empid) as empcode from empinfo';
  adoquery1.Open;
  newempid:=adoquery1.fieldbyname('empcode').AsString;
  adoquery1.Close;
  if newempid = '' then
    edit1.Text:='00001'
  else begin
    edit1.Text:=inttostr(strtoint(newempid)+1);
    while length(edit1.Text) < 5 do
      edit1.Text:='0'+edit1.Text;
  end;
  speedbutton1.Enabled:=false;
  speedbutton2.Enabled:=false;
  speedbutton3.Enabled:=false;
  speedbutton4.Enabled:=true;
  speedbutton5.Enabled:=true;
  speedbutton6.Enabled:=false;
end;

procedure Tfrmemp.SpeedButton2Click(Sender: TObject);
begin
  ifupdate:=true;
  edit2.Enabled:=true;
  edit3.Enabled:=true;
  edit4.Enabled:=true;
  combobox1.Enabled:=true;
  edit1.Text:=stringgrid1.Cells[0,stringgrid1.Row];
  edit2.Text:=stringgrid1.Cells[1,stringgrid1.Row];
  combobox1.Text:=stringgrid1.Cells[2,stringgrid1.Row];
  edit3.Text:=stringgrid1.Cells[3,stringgrid1.Row];
  edit4.Text:=stringgrid1.Cells[4,stringgrid1.Row];
  speedbutton1.Enabled:=false;
  speedbutton2.Enabled:=false;
  speedbutton3.Enabled:=false;
  speedbutton4.Enabled:=true;
  speedbutton5.Enabled:=true;
  speedbutton6.Enabled:=false;
end;

procedure Tfrmemp.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
  key:=chr(0);
end;

procedure Tfrmemp.SpeedButton3Click(Sender: TObject);
var
  i:integer;
begin
  if ((stringgrid1.Row > 0) and (stringgrid1.Cells[0,stringgrid1.Row]<>'')) then
  begin
    if messagedlg('真的要删除吗?',mtconfirmation,[mbYes, mbNo],0) = mrYes then
    begin
      adoquery1.SQL.Text:='delete from empinfo where empid = '''+stringgrid1.Cells[0,stringgrid1.Row]+'''';
      adoquery1.ExecSQL;
      adoquery1.Close;
      if stringgrid1.RowCount = 2 then
        stringgrid1.Rows[1].Clear
      else begin
        for i:=stringgrid1.Row to stringgrid1.RowCount-2 do
          stringgrid1.Rows[i]:=stringgrid1.Rows[i+1];
        stringgrid1.rows[stringgrid1.RowCount-1].Clear;
        stringgrid1.RowCount:=stringgrid1.RowCount-1;
      end;
    end;
  end;        
end;

procedure Tfrmemp.SpeedButton6Click(Sender: TObject);
begin
  self.Close;
end;

procedure Tfrmemp.SpeedButton5Click(Sender: TObject);
begin
  edit1.Clear;
  edit2.Clear; edit2.Enabled:=false;
  edit3.Clear; edit3.Enabled:=false;
  edit4.Clear; edit4.Enabled:=false;
  combobox1.Text:=''; combobox1.Enabled:=false;
  speedbutton1.Enabled:=true;
  speedbutton2.Enabled:=true;
  speedbutton3.Enabled:=true;
  speedbutton4.Enabled:=false;
  speedbutton5.Enabled:=false;
  speedbutton6.Enabled:=true;
  ifupdate:=false;
end;

procedure Tfrmemp.SpeedButton4Click(Sender: TObject);
var
  i:integer;
begin
  if edit2.Text = '' then
  begin
    showmessage('请输入员工名称');
    exit;
  end;
  if combobox1.Text = '' then
  begin
    showmessage('请选择分店');
    exit;
  end;
  if ifupdate then
  begin
    adoquery1.SQL.Text:='update empinfo set empname = '''+edit2.Text+''',filid = '''+combobox1.Text+''',duty = '''+edit3.Text+''',idcard = '''+edit4.Text+''' where empid = '''+edit1.Text+'''';
    adoquery1.ExecSQL;
    adoquery1.close;
    for i:= 1 to stringgrid1.RowCount -1 do
    begin
      if stringgrid1.Cells[0,i] = edit1.Text then
      begin
        stringgrid1.Cells[1,i]:= edit2.Text;
        stringgrid1.Cells[2,i]:= combobox1.Text;
        stringgrid1.Cells[3,i]:= edit3.Text;
        stringgrid1.Cells[4,i]:= edit4.Text;
      end;
    end;
  end
  else begin
    adoquery1.SQL.Text:='insert into empinfo values("'+edit1.Text+'","'+edit2.Text+'","'+combobox1.Text+'","'+edit3.Text+'","'+edit4.Text+'")';
    adoquery1.ExecSQL;
    adoquery1.Close;
    if stringgrid1.Cells[0,1] <> '' then
      stringgrid1.RowCount:=stringgrid1.RowCount+1;
    stringgrid1.Cells[0,stringgrid1.RowCount-1]:=edit1.Text;
    stringgrid1.Cells[1,stringgrid1.RowCount-1]:=edit2.Text;
    stringgrid1.Cells[2,stringgrid1.RowCount-1]:=combobox1.Text;
    stringgrid1.Cells[3,stringgrid1.RowCount-1]:=edit3.Text;
    stringgrid1.Cells[4,stringgrid1.RowCount-1]:=edit4.Text;
  end;
  edit1.Clear;
  edit2.Clear; edit2.Enabled:=false;
  edit3.Clear; edit3.Enabled:=false;
  edit4.Clear; edit4.Enabled:=false;
  combobox1.Text:=''; combobox1.Enabled:=false;
  speedbutton1.Enabled:=true;
  speedbutton2.Enabled:=true;
  speedbutton3.Enabled:=true;
  speedbutton4.Enabled:=false;
  speedbutton5.Enabled:=false;
  speedbutton6.Enabled:=true;
  ifupdate:=false;
end;

procedure Tfrmemp.StringGrid1Click(Sender: TObject);
begin
  if ifupdate then
  begin
    edit1.Text:=stringgrid1.Cells[0,stringgrid1.Row];
    edit2.Text:=stringgrid1.Cells[1,stringgrid1.Row];
    combobox1.Text:=stringgrid1.Cells[2,stringgrid1.Row];
    edit3.Text:=stringgrid1.Cells[3,stringgrid1.Row];
    edit4.Text:=stringgrid1.Cells[4,stringgrid1.Row];
  end;  
end;

procedure Tfrmemp.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
  if (( not(key in ['0'..'9'])) and (key <> #8) and (key <> #22)) then
  begin
    showmessage('输入数字');
    key:=chr(0);
    exit;
  end;
end;

procedure Tfrmemp.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if not speedbutton6.Enabled then
  begin
    canclose:=false;
    showmessage('请先保存数据然后退出');
  end;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?