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

📄 ygxx.pas

📁 有需要的同仁载回去慢慢研究
💻 PAS
字号:
unit YGXX;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Mask, DBCtrls, ExtCtrls, Grids, DBGrids, Buttons, ComCtrls,
  ActnList, Spin;

type
  TFrmYgxx = class(TForm)
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    Panel2: TPanel;
    BtnAppend: TBitBtn;
    BtnDelete: TBitBtn;
    BtnEdit: TBitBtn;
    BtnSure: TBitBtn;
    BtnCancel: TBitBtn;
    BtnExit: TBitBtn;
    SbLbsz: TStatusBar;
    DBNavigator1: TDBNavigator;
    Label1: TLabel;
    CbBm: TComboBox;
    Label3: TLabel;
    EditGh: TEdit;
    Label4: TLabel;
    EditXm: TEdit;
    RGXb: TRadioGroup;
    RGLB: TRadioGroup;
    procedure BtnAppendClick(Sender: TObject);
    procedure BtnSureClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure BtnEditClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BtnCancelClick(Sender: TObject);
    procedure BtnDeleteClick(Sender: TObject);
  private
    MyBmbh : TStrings;
    procedure EditToTable();
  public
    InputStatus : string;
    procedure TableToEdit();
    procedure ShowMyButton();
  end;

var
  FrmYgxx: TFrmYgxx;

implementation

uses DGSDM;

{$R *.DFM}


procedure TFrmYgxx.TableToEdit();
begin
  with DM_GSGL do
  begin
    EditGh.Text:=QryYgxx.FieldByName('工号').AsString;
    EditXm.Text:=QryYgxx.FieldByName('姓名').AsString;
    if QryYgxx.FieldByName('性别').IsNull then
      RGXb.ItemIndex:=-1
    else if QryYgxx.FieldByName('性别').AsBoolean=true then
           RGXb.ItemIndex:=0
         else if QryYgxx.FieldByName('性别').AsBoolean=false then
                RGXb.ItemIndex:=1;
    if QryYgxx.FieldByName('人员类别').IsNull then
      RGLb.ItemIndex:=-1
    else if QryYgxx.FieldByName('人员类别').AsBoolean=true then
           RGLb.ItemIndex:=0
         else if QryYgxx.FieldByName('人员类别').AsBoolean=false then
                RGLb.ItemIndex:=1;
    CbBm.ItemIndex:=MyBmbh.IndexOf(QryYgxx.FieldByName('部门编号').AsString);
  end;
end;

procedure TFrmYgxx.EditToTable();
begin
  with DM_GSGL do
  begin
    QryYgxx.FieldByName('工号').AsString:=EditGh.Text;
    QryYgxx.FieldByName('姓名').AsString:=EditXm.Text;
    if RGXB.ItemIndex=0 then
      QryYgxx.Fieldbyname('性别').AsBoolean:=True;
    if RGXb.ItemIndex=1 then
      QryYgxx.Fieldbyname('性别').AsBoolean:=False;
    if RGLB.ItemIndex=0 then
      QryYgxx.Fieldbyname('人员类别').AsBoolean:=True;
    if RGLb.ItemIndex=1 then
      QryYgxx.Fieldbyname('人员类别').AsBoolean:=False;
    QryYgxx.FieldByName('部门编号').AsString := MyBmbh[Cbbm.ItemIndex];
    QryYgxx.FieldByName('部门名称').AsString := Cbbm.Items[cbbm.ItemIndex];
  end;
end;


procedure TFrmYgxx.BtnAppendClick(Sender: TObject);
begin
  InputStatus := '增加';
  ShowMyButton;
  // 初始化编辑框
  EditGh.Text:='';
  EditGh.MaxLength:=4;
  Editxm.Text := '';
  Editxm.MaxLength:=10;
  RGXb.ItemIndex := -1;
  RGLb.ItemIndex := -1;
  Cbbm.ItemIndex := 0;
// 输入焦点定位
  EditGh.SetFocus;
end;

procedure TFrmYgxx.ShowMyButton();
begin
  if (InputStatus = '浏览') then
  begin
//    SbLbsz.SimpleText := '当前状态:浏览轮班信息(共有' + IntToStr(DMBW_KQ.QryYgxx.RecordCount) + '个轮班)';

    //enable or disable Edits
    EditGh.ReadOnly := True;
    Editxm.ReadOnly := True;
    RgXb.Enabled := False;
    RgLb.Enabled := False;
    CbBm.Enabled := False;
    dbgrid1.Enabled := true;
    DBNavigator1.Enabled := true;

    //Enable or disable Buttons
    BtnAppend.Enabled := True;
    BtnEdit.Enabled := True;
    BtnDelete.Enabled := True;
    BtnExit.Enabled := True;
    BtnSure.Enabled := False;    //Sure Button
    BtnCancel.Enabled := False;  //Cancel Button
  end
  else
  begin
    if (InputStatus = '增加') then
      SbLbsz.SimpleText := '当前状态:增加一个轮班'
    else
      SbLbsz.SimpleText := '当前状态:修改当前轮班';
    //enable or disable Edits
    EditGh.ReadOnly := False;
    Editxm.ReadOnly := False;
    RgXb.Enabled := True;
    RgLb.Enabled := True;
    CbBm.Enabled := True;
    dbgrid1.Enabled := False;
    DBNavigator1.Enabled := False;

    BtnAppend.Enabled := False;
    BtnEdit.Enabled := False;
    BtnDelete.Enabled := False;
    BtnExit.Enabled := False;

    BtnSure.Enabled := True;   //Sure Button
    BtnCancel.Enabled := True; //Cancel Button
  end;
end;


procedure TFrmYgxx.BtnSureClick(Sender: TObject);
var
  tmpstring:string;
begin
  tmpstring:=trim(Editxm.Text);
  if (Length(tmpstring)=0) then
  begin
    MessageDlg('姓名不能为空!',mtError, [mbYes],0);
    Editxm.SetFocus;
    exit;
  end;

  tmpstring:=trim(Editgh.Text);
  if (Length(tmpstring)=0) then
  begin
    MessageDlg('工号不能为空!',mtError, [mbYes],0);
    Editgh.SetFocus;
    exit;
  end;
  with DM_GSGL do
  begin
    if QryTemp.Active=true then
      QryTemp.Close;
    QryTemp.SQL.Clear;
    QryTemp.SQL.Add('select 工号');
    QryTemp.SQL.Add('from 员工信息 where 工号=:pgh');
    QryTemp.ParamByName('pgh').asstring:=tmpstring;
    QryTemp.Open;
    if (not QryTemp.Eof) then
    begin
      if (InputStatus = '增加') then
      begin
        MessageDlg('该工号已被使用!.',mtInformation, [mbYes], 0);
        EditGh.SetFocus;
        Exit;
      end
      else
      begin
        if tmpstring<>trim(QryYgxx.FieldByName('工号').AsString) then
        begin
          MessageDlg('该工号已被使用!.',mtInformation, [mbYes], 0);
          EditGh.SetFocus;
          Exit;
        end;
      end;
    end;
  end;

  if (InputStatus = '增加') then
  begin
    DM_GSGL.QryYgxx.Append;
    EditToTable;
    DM_GSGL.QryYgxx.Post;
    DM_GSGL.QryYgxx.CommitUpdates;
  end;
  if (InputStatus = '修改') then
  begin
    DM_GSGL.QryYgxx.Edit;
    EditToTable;
    DM_GSGL.QryYgxx.Post;
    DM_GSGL.QryYgxx.CommitUpdates;
  end;
  InputStatus := '浏览';
  ShowMyButton;
end;

procedure TFrmYgxx.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  UserSelect : Word;
begin
  if (InputStatus <> '浏览') then
  begin
    UserSelect := MessageDlg('是否保存改动的员工信息?',mtConfirmation, [mbYes, mbNo, mbCancel],0);
    case UserSelect of
      mrYes: BtnSureClick(Sender);
      mrNo: BtnCancelClick(Sender);
      mrCancel: CanClose := False ;
    end;
  end;
end;

procedure TFrmYgxx.BtnEditClick(Sender: TObject);
begin
  InputStatus := '修改';
  ShowMyButton;
  // 输入焦点定位
  EditGh.SetFocus;
end;

procedure TFrmYgxx.FormShow(Sender: TObject);
begin
  with DM_GSGL.QryYgxx do
  begin
    if (Active = true) Then
      close;
    open;
  end;
  Mybmbh := TStringList.Create;
  Cbbm.Items.Clear;
  with DM_GSGL do
  begin
    if (Qrytemp.Active = True) Then
      Qrytemp.Close;
    Qrytemp.sql.clear;
    Qrytemp.SQL.add('select * from 部门信息');
    Qrytemp.Open;
    while (not QryTemp.Eof) do
    begin
      Cbbm.Items.Add(QryTemp.FieldByName('部门名称').AsString);
      Mybmbh.Add(QryTemp.FieldByName('部门编号').AsString);
      QryTemp.Next;
    end;
  end;
  cbbm.itemindex:=0;
  InputStatus := '浏览';
  TableToEdit;
  ShowMyButton;
end;

procedure TFrmYgxx.BtnCancelClick(Sender: TObject);
begin
  InputStatus := '浏览';
  TableToEdit;
  ShowMyButton;
end;

procedure TFrmYgxx.BtnDeleteClick(Sender: TObject);
begin
  if MessageDlg('确认删除该员工以及对应该员工的工时信息吗?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
    with DM_Gsgl do
    begin
      if QryTemp.Active=true then
        QryTemp.Close;
      QryTemp.SQL.Clear;
      QryTemp.SQL.Add('delete from 每日工时');
      QryTemp.SQL.Add('where 工号='+''''+EditGh.Text+'''');
      QryTemp.ExecSQL;
      QryYgxx.Delete;
      DM_GSGL.QryYgxx.CommitUpdates;
    end;
  end;
end;

end.

⌨️ 快捷键说明

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