📄 ustainfo.pas
字号:
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 + -