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

📄 ygdagl.pas

📁 服务信息管理系统
💻 PAS
字号:
unit ygdagl;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls, ImgList, ToolWin, ExtCtrls,
  LbButton, DB, DBTables, DBCtrls, Mask, ToolEdit, RXDBCtrl, DBCtrlsEh;

type
  Tfrmygdagl = class(TForm)
    CoolBar1: TCoolBar;
    oToolBar: TToolBar;
    ygaddButton: TToolButton;
    ygDeleteButton: TToolButton;
    PrintButton: TToolButton;
    PrintviewButton: TToolButton;
    ToolButton7: TToolButton;
    ToolButton14: TToolButton;
    ImageList: TImageList;
    ygbmddButton: TToolButton;
    Splitter1: TSplitter;
    Panel1: TPanel;
    bmmlView: TTreeView;
    Panel2: TPanel;
    Image1: TImage;
    BitBtnSave: TLbButton;
    BitBtnCancel: TLbButton;
    ygxxQuery: TQuery;
    ygdaDataSource: TDataSource;
    BmmlQuery: TQuery;
    Panel3: TPanel;
    ScrollBox1: TScrollBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    ygbhDBEditEh: TDBEditEh;
    ygxmDBEditEh: TDBEditEh;
    DBComboBoxEh1: TDBComboBoxEh;
    DBImage1: TDBImage;
    DBNumberEditEh1: TDBNumberEditEh;
    DBEditEh3: TDBEditEh;
    DBDateTimeEditEh1: TDBDateTimeEditEh;
    DBComboBoxEh2: TDBComboBoxEh;
    DBDateTimeEditEh2: TDBDateTimeEditEh;
    DBEditEh4: TDBEditEh;
    DBComboBoxEh3: TDBComboBoxEh;
    DBDateTimeEditEh3: TDBDateTimeEditEh;
    DBEditEh5: TDBEditEh;
    DBEditEh6: TDBEditEh;
    DBEditEh7: TDBEditEh;
    DBEditEh8: TDBEditEh;
    DBEditEh9: TDBEditEh;
    DBEditEh10: TDBEditEh;
    Query1: TQuery;
    Label20: TLabel;
    zjmDBEditEh: TDBEditEh;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ToolButton14Click(Sender: TObject);
    procedure BitBtnCancelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ygbhDBEditEhChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure bmmlViewClick(Sender: TObject);
    procedure BitBtnSaveClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure ygaddButtonClick(Sender: TObject);
    procedure bmmlViewChange(Sender: TObject; Node: TTreeNode);
    procedure ygDeleteButtonClick(Sender: TObject);
    procedure ygbmddButtonClick(Sender: TObject);
  private
    { Private declarations }
    function dataverify(Verify_lx: string): Boolean; //数据校验事件
    function datasave: Boolean; //数据保存函数
    function Getmaxygbh: string; //员工编号生成器;
  public
    { Public declarations }
  end;

var
  frmygdagl: Tfrmygdagl;
  ygdagl_bjzt, ygdagl_ybh, ygdagl_bmbh: string;
  firstNode: TTreeNode;
  ygdagl_first: integer;
implementation

uses ygbmdd;

{$R *.dfm}

procedure Tfrmygdagl.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  frmygdagl := nil;
end;

procedure Tfrmygdagl.ToolButton14Click(Sender: TObject);
begin
  Close;
end;

procedure Tfrmygdagl.BitBtnCancelClick(Sender: TObject);
begin
  Close;
end;

procedure Tfrmygdagl.FormShow(Sender: TObject);
begin
  if bmmlView.Items.Count <> 0 then
    begin
      bmmlView.Items[0].Selected := True;
    end
  else
    begin
      ygDeleteButton.Enabled := False;
      ygbmddButton.Enabled := False;
    end;
  BitBtnSave.Enabled := False;
  ygdagl_bjzt := 'ygdaedit';
  if ygdagl_first = 1 then firstNode.Selected := True;
  bmmlView.OnClick(sender);
end;

procedure Tfrmygdagl.ygbhDBEditEhChange(Sender: TObject);
begin
  BitBtnSave.Enabled := True;
end;

procedure Tfrmygdagl.FormCreate(Sender: TObject);
var
  pCode, yCode, pName, lsbl_bmbh, lsbl_ygbh, lsbl_ygxm: string;
  MainNode, yNode, zNode, ygNode: TTreeNode;
begin
  MainNode := TTreeNode.Create(bmmlView.Items);
  yNode := TTreeNode.Create(bmmlView.Items);
  zNode := TTreeNode.Create(bmmlView.Items);
  ygdagl_first := 0;
  bmmlView.Items.Clear;
  with BmmlQuery do
    begin
      Prepare;
      Open;
    end;
  BmmlQuery.first;
  yCode := Trim(BmmlQuery.FieldByName('bm_bh').AsString);
  bmmlView.Items.BeginUpdate;
  while not bmmlQuery.eof do
    begin
      pCode := Trim(BmmlQuery.FieldByName('bm_bh').AsString);
      pName := Trim(BmmlQuery.FieldByName('bm_mc').AsString);
      lsbl_bmbh := pCode;
      case length(pCode) of
        3:
          begin
            MainNode := bmmlView.Items.AddChild(nil, pCode + ' ' + pName);
            yNode := MainNode;
          end;
        6:
          begin
            pCode := Copy(pCode, 4, 3);
            MainNode := bmmlView.Items.AddChild(yNode, pCode + ' ' + pName);
            zNode := MainNode;
          end;
        9:
          begin
            pCode := Copy(pCode, 7, 3);
            MainNode := bmmlView.Items.AddChild(zNode, pCode + ' ' + pName)
          end;
      end;
      Mainnode.SelectedIndex := 16;
      Mainnode.ImageIndex := 17;
      with ygxxQuery do
        begin
          SQL.clear;
          SQL.Add('select * from ygdasjk where Trim(yg_bmbh)=:ygcx_dqbh');
          ParamByName('ygcx_dqbh').AsString := lsbl_bmbh;
          Prepare;
          open;
          First;
          if Trim(FieldByName('yg_bh').AsString) <> '' then
            begin
              while not eof do
                begin
                  lsbl_ygbh := Trim(FieldByName('yg_bh').AsString);
                  lsbl_ygxm := Trim(FieldByName('yg_xm').AsString);
                  ygNode := bmmlView.Items.AddChild(MainNode, lsbl_ygbh + ' ' + lsbl_ygxm);
                  if ygdagl_first = 0 then
                    begin
                      firstNode := ygNode;
                      ygdagl_first := 1;
                    end;
                  ygNode.SelectedIndex := 19;
                  ygNode.ImageIndex := 19;
                  Next;
                end;
            end;
          Close;
        end;
      bmmlQuery.Next;
    end;
  bmmlView.Items.EndUpdate;
  BmmlQuery.Close;
  with ygxxquery do
    begin
      SQL.Clear;
      SQL.Add('select * from ygdasjk where yg_bh=:ygcx_ygbh');
      RequestLive := True;
    end;
end;

procedure Tfrmygdagl.bmmlViewClick(Sender: TObject);
var
  lsbl_cxygbh, lsbl_bmbh, lsbl_bmbh2: string;
  lsbl_word: integer;
  lsbl_bmjb, lsbl_x: Integer;
  lsbl_node: TTreeNode;
begin
  LockWindowUpdate(handle);
  ygdagl_bjzt := 'ygdaedit';
  ygdagl_ybh := '';
  BitBtnSave.Enabled := True;
  if bmmlView.Selected <> nil then
    begin
      if bmmlView.Selected.ImageIndex = 19 then
        begin
          lsbl_cxygbh := bmmlView.Selected.Text;
          lsbl_word := Pos(' ', lsbl_cxygbh);
          lsbl_cxygbh := Copy(lsbl_cxygbh, 1, lsbl_word - 1);
          with ygxxquery do
            begin
              Close;
              ParamByName('ygcx_ygbh').AsString := lsbl_cxygbh;
              Prepare;
              open;
              if FieldByName('yg_bh').AsString = '' then
                begin
                  MessageDlg('没有找到此员工的详细信息,可能已被其他用户删除', mtError, [mbOk], 0);
                  Scrollbox1.Visible := False;
                  ygDeleteButton.Enabled := False;
                  ygbmddButton.Enabled := False;
                end
              else
                begin
                  Scrollbox1.Visible := True;
                  ygDeleteButton.Enabled := True;
                  ygbmddButton.Enabled := True;
                  ygdagl_ybh := Trim(FieldByName('yg_bh').AsString);
                  ygdagl_bmbh := Trim(FieldByName('yg_bmbh').AsString);
                end;
            end;
        end
      else
        begin
          Scrollbox1.Visible := False;
          ygDeleteButton.Enabled := False;
          ygbmddButton.Enabled := False;
          lsbl_node := bmmlView.Selected;
          lsbl_bmjb := bmmlView.Selected.Level;
          lsbl_bmbh := Trim(bmmlView.Selected.Text);
          lsbl_word := Pos(' ', lsbl_bmbh);
          lsbl_bmbh := Copy(lsbl_bmbh, 1, lsbl_word - 1);
          for lsbl_x := 0 to lsbl_bmjb - 1 do
            begin
              lsbl_bmbh2 := Trim(lsbl_node.Parent.Text);
              lsbl_word := Pos(' ', lsbl_bmbh2);
              lsbl_bmbh2 := Copy(lsbl_bmbh2, 1, lsbl_word - 1);
              lsbl_bmbh := lsbl_bmbh2 + lsbl_bmbh;
              lsbl_node := lsbl_node.Parent;
            end;
          ygdagl_bmbh := lsbl_bmbh; //当前选中地区的编号
        end;
    end;
  BitBtnSave.Enabled := False;
  LockWindowUpdate(0);
end;

procedure Tfrmygdagl.BitBtnSaveClick(Sender: TObject);
var
  lsbl_node: TTreeNode;
  lsbl_text: string;
begin
  if dataverify('11') = True then
    begin
      if datasave() = True then
        begin
          lsbl_text := Trim(ygbhDBEditEh.Text) + ' ' + Trim(ygxmDBEditEh.Text);
          BitBtnSave.Enabled := False;
          if ygdagl_bjzt = 'ygdaadd' then
            begin
              if bmmlView.selected.ImageIndex = 19 then
                lsbl_Node := bmmlView.Items.AddChild(bmmlView.selected.Parent, lsbl_text)
              else
                lsbl_Node := bmmlView.Items.AddChild(bmmlView.selected, lsbl_text);
              lsbl_Node.ImageIndex := 19;
              lsbl_Node.SelectedIndex := 19;
              ygaddButton.OnClick(Sender);
            end;
          if ygdagl_bjzt = 'ygdaedit' then
            begin
              bmmlView.Selected.text := lsbl_text;
            end;
        end;
    end;
end;

function Tfrmygdagl.datasave: Boolean; //数据保存函数
begin
  try
    ygxxquery.Post;
    Result := True;
  except
    MessageDlg('数据保存失败', mtError, [mbOk], 0);
    Result := False;
  end;
end;

function Tfrmygdagl.dataverify(Verify_lx: string): Boolean; //数据校验函数
var
  lsbl_message: string;
begin
  Result := True;
  if (copy(Verify_lx, 1, 1) = '1') then
    if ygbhDBEditEh.Text = '' then
      begin
        MessageDlg('员工编号不能为空', mtError, [mbOk], 0);
        Result := False;
        exit;
      end;
  if (copy(Verify_lx, 2, 1) = '1') then
    if ygxmDBEditEh.Text = '' then
      begin
        MessageDlg('员工姓名不能为空', mtError, [mbOk], 0);
        Result := False;
        exit;
      end;
  if (ygdagl_bjzt = 'ygdaadd') or ((ygdagl_bjzt = 'ygdaedit') and (Trim(ygbhDBEditEh.Text) <> ygdagl_ybh)) then
    begin
      with query1 do
        begin
          SQL.Clear;
          SQL.Add('select yg_bh,yg_xm from ygdasjk where Trim(yg_bh)=:ygbhcx_bh');
          ParamByName('ygbhcx_bh').AsString := Trim(ygbhDBEditEh.Text);
          Prepare;
          open;
          if FieldByName('yg_bh').AsString <> '' then
            begin
              lsbl_message := '已存在编号为【' + FieldByName('yg_bh').AsString + ' ';
              lsbl_message := lsbl_message + FieldByName('yg_xm').AsString + '】的员工';
              Messagedlg(lsbl_message, mtError, [mbOk], 0);
              Close;
              Result := False;
              ygbhDBEditEh.Text := ygdagl_ybh;
              ygbhDBEditEh.SetFocus;
              ygbhDBEditEh.SelectAll;
              exit;
            end
          else
            begin
              Close;
              result := True;
            end;
        end;
    end;
end;

procedure Tfrmygdagl.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    begin
      key := #0;
      SelectNext(ActiveControl, True, True);
      if ActiveControl is TDBEditEh then
        begin
          TDBEditEh(ActiveControl).Text := Trim(TDBEditEh(ActiveControl).Text);
          TDBEditEh(ActiveControl).SelectAll;
        end;
    end;
end;

procedure Tfrmygdagl.ygaddButtonClick(Sender: TObject);
begin
  ygdagl_bjzt := 'ygdaadd';
  ygxxQuery.Append;
  ygxxQuery.FieldByName('yg_bmbh').AsString := ygdagl_bmbh;
  ygbhDBEditEh.text := Getmaxygbh();
  ygbhDBEditEh.SelectAll;
  BitBtnSave.Enabled := False;
  Scrollbox1.Visible := True;
  ygbhDBEditEh.SetFocus;
end;

function Tfrmygdagl.Getmaxygbh: string; //员工编号生成器;
var
  lsbl_ygbh: string;
begin
  with query1 do
    begin
      SQL.Clear;
      SQL.Add('select max(yg_bh) as yg_maxbh from ygdasjk');
      Prepare;
      open;
      if FieldByName('yg_maxbh').AsString <> '' then
        begin
          lsbl_ygbh := FieldByName('yg_maxbh').AsString;
          lsbl_ygbh := inttostr(strtoint(lsbl_ygbh) + 1);
          lsbl_ygbh := Copy('000000', 1, 6 - length(lsbl_ygbh)) + lsbl_ygbh;
          Result := lsbl_ygbh
        end
      else
        begin
          Result := '000001';
        end;
      Close;
    end;
end;

procedure Tfrmygdagl.bmmlViewChange(Sender: TObject; Node: TTreeNode);
begin
  bmmlView.OnClick(Sender);
end;

procedure Tfrmygdagl.ygDeleteButtonClick(Sender: TObject);
var
  lsbl_text: string;
begin
  if Bmmlview.selected <> nil then
    begin
      lsbl_text := '确定要删除员工【' + Bmmlview.selected.Text + '】码?';
      if Messagedlg(lsbl_text, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
        begin
          BmmlView.Selected.Delete;
          ygxxquery.Delete;
        end;
    end;
end;

procedure Tfrmygdagl.ygbmddButtonClick(Sender: TObject);
var
  lsbl_word: integer;
  lsbl_bmmc: string;
begin
  if Scrollbox1.Visible = True then
    begin
      frmygbmdd := Tfrmygbmdd.Create(Self);
      with frmygbmdd do
        begin
          lsbl_bmmc := BmmlView.Selected.Parent.Text;
          lsbl_word := Pos(' ', lsbl_bmmc);
          lsbl_bmmc := Copy(lsbl_bmmc, lsbl_word + 1, length(lsbl_bmmc));
          Label1.Caption := '将员工【' + BmmlView.Selected.Text + '】从';
          Edit1.Text := ygdagl_bmbh + ' ' + lsbl_bmmc;
          ShowModal;
        end;
    end;
end;

end.

⌨️ 快捷键说明

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