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

📄 ustainfo.pas

📁 此为一个用delphi语言编写的人事管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit uStainfo;

interface        

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls,  StdCtrls, Mask, DBCtrls, ADODB,
  ImgList, DB, Buttons, Grids, DBGrids, jpeg, Menus;


type
  TfrmStainfo = class(TForm)
    sptsta: TSplitter;
    ilt: TImageList;
    aqsta: TADOQuery;
    dst: TDataSource;
    dso: TDataSource;
    aqo: TADOQuery;
    odimg: TOpenDialog;
    pmtree: TPopupMenu;
    pmiSearch: TMenuItem;
    pmiAppend: TMenuItem;
    pmiModify: TMenuItem;
    pmiDelete: TMenuItem;
    mnuExpand: TMenuItem;
    mnuClose: TMenuItem;
    gbper: TLabel;
    Panel1: TPanel;
    tvper: TTreeView;
    pcsta: TPageControl;
    tsinfo: TTabSheet;
    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;
    Label20: TLabel;
    Label21: TLabel;
    Label23: TLabel;
    Label22: TLabel;
    Label24: TLabel;
    pnlimg: TPanel;
    imgi: TImage;
    btnediti: TButton;
    btndeli: TButton;
    dedtstano: TDBEdit;
    dedtname: TDBEdit;
    dedtbirth: TDBEdit;
    dedtsorts: TDBEdit;
    dedtduty: TDBEdit;
    dedtprovi: TDBEdit;
    dedtfolk: TDBEdit;
    dedtspecial: TDBEdit;
    dedtcardno: TDBEdit;
    dedtrecno: TDBEdit;
    dedtpolitics: TDBEdit;
    dedtslevel: TDBEdit;
    dedtindate: TDBEdit;
    dedtbody: TDBEdit;
    dedtbaryear: TDBEdit;
    dedtbarstart: TDBEdit;
    dedtbarend: TDBEdit;
    dedtpcode: TDBEdit;
    dedtaddress: TDBEdit;
    dedtlevel: TDBComboBox;
    dcbomarried: TDBComboBox;
    dedtdes: TDBEdit;
    dcbodep: TDBComboBox;
    dcbosex: TDBComboBox;
    tsexper: TTabSheet;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    dbgexper: TDBGrid;
    dedtsdate: TDBEdit;
    dedtdep: TDBEdit;
    dedtdutyd: TDBEdit;
    dedtedate: TDBEdit;
    dedtcom: TDBEdit;
    tsfami: TTabSheet;
    Label30: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Label34: TLabel;
    dbename: TDBEdit;
    dbecom: TDBEdit;
    dbetel: TDBEdit;
    dbedes: TDBEdit;
    dbgfami: TDBGrid;
    dbcfami: TDBComboBox;
    tsap: TTabSheet;
    Label35: TLabel;
    Label36: TLabel;
    Label37: TLabel;
    Label38: TLabel;
    Label39: TLabel;
    dbgap: TDBGrid;
    dbetopic: TDBEdit;
    dbeddep: TDBEdit;
    dbcsort: TDBComboBox;
    dbedate: TDBEdit;
    dbmdes: TDBMemo;
    tstrain: TTabSheet;
    Label40: TLabel;
    Label41: TLabel;
    Label42: TLabel;
    Label43: TLabel;
    Label44: TLabel;
    Label45: TLabel;
    dbgtrain: TDBGrid;
    dbecourse: TDBEdit;
    dbestdate: TDBEdit;
    dbetrcom: TDBEdit;
    dbedlimit: TDBEdit;
    dbeenddate: TDBEdit;
    dbecerti: TDBEdit;
    btnCancel: TSpeedButton;
    btnPrint: TSpeedButton;
    btnDelete: TSpeedButton;
    btnNext: TSpeedButton;
    btnPre: TSpeedButton;
    btnSearch: TSpeedButton;
    btnAppend: TSpeedButton;
    btnModify: TSpeedButton;
    procedure FormShow(Sender: TObject);
    procedure tvperGetImageIndex(Sender: TObject; Node: TTreeNode);
    procedure tvperCollapsed(Sender: TObject; Node: TTreeNode);
    procedure tvperExpanded(Sender: TObject; Node: TTreeNode);
    procedure tvperGetSelectedIndex(Sender: TObject; Node: TTreeNode);
    procedure tvperClick(Sender: TObject);
    procedure tsinfoShow(Sender: TObject);
    procedure tvperChanging(Sender: TObject; Node: TTreeNode;
      var AllowChange: Boolean);
    procedure tsexperShow(Sender: TObject);
    procedure tsfamiShow(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure dedtsdateEnter(Sender: TObject);
    procedure dbenameEnter(Sender: TObject);
    procedure tsapShow(Sender: TObject);
    procedure dbcsortEnter(Sender: TObject);
    procedure tstrainShow(Sender: TObject);
    procedure dbecourseEnter(Sender: TObject);
    procedure tmrdtTimer(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure btneditiClick(Sender: TObject);
    procedure btndeliClick(Sender: TObject);
    procedure pmiDeleteClick(Sender: TObject);
    procedure mnuExpandClick(Sender: TObject);
    procedure mnuCloseClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure btnPrintClick(Sender: TObject);
    procedure btnNextClick(Sender: TObject);
    procedure btnPreClick(Sender: TObject);
    procedure btnSearchClick(Sender: TObject);
    procedure btnAppendClick(Sender: TObject);
    procedure btnModifyClick(Sender: TObject);
  private
    { Private declarations }
    procedure DrawTree;
    procedure FreeTree;
    procedure FreeTSexper;
    procedure FreeTSfami;
    procedure FreeTSap;
    procedure FreeTStrain;
  public
    { Public declarations }
  end;

var
  frmStainfo: TfrmStainfo;

type
  Psid = ^TNodeData;
  TNodeData = record
    id: integer;
    sno, sen: string;
end;

implementation

uses main, uData, uglobal, udep, ufind;

{$R *.dfm}

var
  id: Integer;

//根据部门名称生成一个节点为员工的树结构  
procedure TfrmStainfo.DrawTree;
var
  aqm01, aqm02: TADOQuery;
  i, j: integer;
  nodeo, nodep: TTreeNode;
  sid: Psid;
begin
  tvper.Items.Clear;
  aqm01 := TADOQuery.Create(nil);
  aqm01.Connection := dmper.acper;
  aqm01.Close;
  aqm01.sql.Clear;
  aqm01.SQL.Text := 'select dep from dept order by ornum';
  aqm01.Open;
  aqm02 := TADOQuery.Create(nil);
  aqm02.Connection := dmper.acper;
  if not aqm01.Eof then
  begin
    tvper.AutoExpand := true;
    tvper.ReadOnly := true;
    nodeo := tvper.Items.AddFirst(nil, '××医院');
    for i := 0 to aqm01.RecordCount - 1 do
    begin
      nodep := tvper.Items.AddChild(nodeo, aqm01.FieldByName('dep').Asstring);
      aqm02.Close;
      aqm02.SQL.Clear;
      aqm02.SQL.Text := 'select id, stano, name, ename from stainfo where dep ="' + aqm01.FieldByName('dep').Value + '" order by name';
      aqm02.Open;
      if not aqm02.Eof then
      for j := 0 to aqm02.RecordCount - 1 do
      begin
        New(sid);
        sid^.id := StrToInt(aqm02.FieldByName('id').AsString);
        sid^.sno := aqm02.FieldByName('stano').AsString;
        sid^.sen := aqm02.FieldByName('ename').AsString;
        tvper.Items.AddChildObject(nodep, aqm02.FieldByName('name').AsString, sid);
        aqm02.Next;
      end;
      aqm01.Next;
    end;
  end;
  aqm02.Free;
  aqm01.Free;
  tvper.SetFocus;
end;

procedure TfrmStainfo.FreeTree;
var
  i: integer;
begin
  for i := 0 to tvper.Items.Count - 1 do
    Dispose(tvper.Items[i].data);
end;

function GetEnChar(cnchar: string): char;
begin
  case Word(cnchar[1]) shl 8 + Word(cnchar[2]) of
    $B0A1..$B0C4: result := 'a';
    $B0C5..$B2C0: result := 'b';
    $B2C1..$B4ED: result := 'c';
    $B4EE..$B6E9: result := 'd';
    $B6EA..$B7A1: result := 'e';
    $B7A2..$B8C0: result := 'f';
    $B8C1..$B9FD: result := 'g';
    $B9FE..$BBF6: result := 'h';
    $BBF7..$BFA5: result := 'j';
    $BFA6..$C0AB: result := 'k';
    $C0AC..$C2E7: result := 'l';
    $C2E8..$C4C2: result := 'm';
    $C4C3..$C5B5: result := 'n';
    $C5B6..$C5BD: result := 'o';
    $C5BE..$C6D9: result := 'p';
    $C6DA..$C8BA: result := 'q';
    $C8BB..$C8F5: result := 'r';
    $C8F6..$CBF9: result := 's';
    $CBFA..$CDD9: result := 't';
    $CDDA..$CEF3: result := 'w';
    $CEF4..$D188: result := 'x';
    $D1B9..$D4D0: result := 'y';
    $D4D1..$D7F9: result := 'z';
  else
    result := char(0);
  end;
end;

Function GetEn(CnString: string): string;
var
  i, len: integer;
begin
  CnString := StringReplace(CnString, ' ', '', [rfReplaceAll]);  //删除空格
  len := Length(CnString) - Length(WideString(CnString));        //汉字个数
  For i :=1 to len do
    result := result + GetEnChar(copy(CnString, 2*i-1, 2));
end;

procedure TfrmStainfo.tmrdtTimer(Sender: TObject);
begin
  DrawTree;
end;

procedure TfrmStainfo.FreeTSexper;
begin
  dbgexper.DataSource := nil;
  dedtsdate.DataSource := nil;
  dedtsdate.DataField := '';
  dedtedate.DataSource := nil;
  dedtedate.DataField := '';
  dedtcom.DataSource := nil;
  dedtcom.DataField := '';
  dedtdep.DataSource := nil;
  dedtdep.DataField := '';
  dedtdutyd.DataSource := nil;
  dedtdutyd.DataField := '';
end;

procedure TfrmStainfo.FreeTSfami;
begin
  dbgfami.DataSource := nil;
  dbename.DataSource := nil;
  dbename.DataField := '';
  dbcfami.DataSource := nil;
  dbcfami.DataField := '';
  dbetel.DataSource := nil;
  dbetel.DataField := '';
  dbecom.DataSource := nil;
  dbecom.DataField := '';
  dbedes.DataSource := nil;
  dbedes.DataField := '';
end;

procedure TfrmStainfo.FreeTSap;
begin
  dbgap.DataSource := nil;
  dbcsort.DataSource := nil;
  dbcsort.DataField := '';
  dbetopic.DataSource := nil;
  dbetopic.DataField := '';
  dbeddep.DataSource := nil;
  dbeddep.DataField := '';
  dbedate.DataSource := nil;
  dbedate.DataField := '';
  dbmdes.DataSource := nil;
  dbmdes.DataField := '';
end;

procedure TfrmStainfo.FreeTStrain;
begin
  dbgtrain.DataSource := nil;
  dbecourse.DataSource := nil;
  dbecourse.DataField := '';
  dbedlimit.DataSource := nil;
  dbedlimit.DataField := '';
  dbestdate.DataSource := nil;
  dbestdate.DataField := '';
  dbeenddate.DataSource := nil;
  dbeenddate.DataField := '';
  dbetrcom.DataSource := nil;
  dbetrcom.DataField := '';
  dbecerti.DataSource := nil;
  dbecerti.DataField := '';
end;      

procedure TfrmStainfo.FormCreate(Sender: TObject);
begin
  tsinfoShow(nil);
end;

procedure TfrmStainfo.FormShow(Sender: TObject);
begin
  self.DoubleBuffered := true;
  DrawTree;
  pcsta.ActivePageIndex := 0;
end;

procedure TfrmStainfo.FormActivate(Sender: TObject);
begin
  pcsta.ActivePage := tsinfo;
end;

procedure TfrmStainfo.tvperGetImageIndex(Sender: TObject; Node: TTreeNode);
begin
  if not node.IsFirstNode then
  begin
    if node.HasChildren then
    begin
      if node.Expanded then
        node.ImageIndex := 1
      else
        node.ImageIndex := 0;
    end
    else
      if node.Level > 1 then
        node.ImageIndex := 2
      else
      if node.Expanded then
        node.ImageIndex := 1
      else
        node.ImageIndex := 0;
  end
  else
  begin
    if node.HasChildren then
      if node.Expanded then
        node.ImageIndex := 4
      else
        node.ImageIndex := 3;
  end;
end;

procedure TfrmStainfo.tvperCollapsed(Sender: TObject; Node: TTreeNode);
begin
  tvper.Repaint;
end;

procedure TfrmStainfo.tvperExpanded(Sender: TObject; Node: TTreeNode);
begin
  tvper.Repaint;
end;

procedure TfrmStainfo.tvperGetSelectedIndex(Sender: TObject;
  Node: TTreeNode);
begin
  node.SelectedIndex := node.ImageIndex;
end; 

procedure TfrmStainfo.tvperChanging(Sender: TObject; Node: TTreeNode;
  var AllowChange: Boolean);
begin
  if btnDelete.Caption <> '删 除' then  btnDeleteClick(nil);
  if node.IsFirstNode then gbper.Caption := node.Text;
  if not node.IsFirstNode and (node.HasChildren) then gbper.Caption := '部门: ' + node.Text;
  if not node.HasChildren then
  begin
    if node.data <> nil then
    begin
      gbper.Caption := '';
      gbper.Caption := '员工: ' + node.Parent.Text + ' --> ' + node.Text;
      id := Integer(Psid(node.data)^.id);
      btnediti.Enabled := true;
      btndeli.Enabled := true;

      if pcsta.ActivePageIndex = 0 then tsinfoShow(nil);
      if pcsta.ActivePageIndex = 1 then tsexperShow(nil);
      if pcsta.ActivePageIndex = 2 then tsfamiShow(nil);
      if pcsta.ActivePageIndex = 3 then tsapShow(nil);
      if pcsta.ActivePageIndex = 4 then tstrainShow(nil);
    end
    else
    begin
      btnediti.Enabled := false;
      btndeli.Enabled := false;
      if pcsta.ActivePageIndex <> 0 then btnAppend.Enabled := false else btnAppend.Enabled := true
    end;
  end
  else
  begin
    btnediti.Enabled := false;
    btndeli.Enabled := false;
    if pcsta.ActivePageIndex <> 0 then btnAppend.Enabled := false else btnAppend.Enabled := true
  end;
end;

procedure TfrmStainfo.tvperClick(Sender: TObject);
begin
  if not tvper.Selected.HasChildren then
  begin
    if tvper.selected.data <> nil then
    begin
      id := Integer(Psid(tvper.selected.data)^.id);
      btnediti.Enabled := true;
      btndeli.Enabled := true;

      if pcsta.ActivePageIndex = 0 then tsinfoShow(nil);
      if pcsta.ActivePageIndex = 1 then tsexperShow(nil);
      if pcsta.ActivePageIndex = 2 then tsfamiShow(nil);
      if pcsta.ActivePageIndex = 3 then tsapShow(nil);
      if pcsta.ActivePageIndex = 4 then tstrainShow(nil);
    end

⌨️ 快捷键说明

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