📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls, DB, ADODB, Grids, DBGrids;
type
pStr = ^String;
TMainForm = class(TForm)
StatusBar1: TStatusBar;
Panel1: TPanel;
Panel2: TPanel;
DepTree: TTreeView;
Panel3: TPanel;
ExitBtn: TButton;
DelDepBtn: TButton;
AddChildDepBtn: TButton;
AddDepBtn: TButton;
FindDepBtn: TButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure ExitBtnClick(Sender: TObject);
procedure DepTreeClick(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
procedure CreateChildDep(const ParentNode: TTreeNode; const ParentDepNo: String);
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.CreateChildDep(const ParentNode: TTreeNode; const ParentDepNo: String);
var
TempQry: TADOQuery;
DepName, DepNo: String;
CurNode: TTreeNode;
p: pStr;
begin
TempQry:=TADOQuery.Create(Application);
try
try
TempQry.Connection:=ADOConnection1;
TempQry.SQL.Clear;
TempQry.SQL.Add('Select * from DepTab where SupDep='+ParentDepNo);
TempQry.Prepared;
TempQry.Open;
except
Application.MessageBox('数据库出错!','部门结构',mb_IconError+mb_OK);
exit;
end;
TempQry.First;
while not TempQry.Eof do
begin
DepName:=TempQry.FieldByName('DepName').AsString;
DepNo:=IntToStr(TempQry.FieldByName('DepNo').AsInteger);
new(p);
p^:=DepNo;
CurNode:=DepTree.Items.AddChildObject(ParentNode, DepName, p);
CreateChildDep(CurNode, DepNo);
CurNode.Expand(True);
TempQry.Next;
end;
finally
TempQry.Close;
TempQry.Free;
end;
end;
procedure TMainForm.FormCreate(Sender: TObject);
var
CurNode: TTreeNode;
p: pStr;
DepName, DepNo: String;
begin
if not ADOConnection1.Connected then
ADOConnection1.Open;
if ADOQuery1.Active then
ADOQuery1.Close;
try
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from DepTab where SupDep=0');
ADOQuery1.Prepared;
ADOQuery1.Open;
except
Application.MessageBox('数据库出错!','部门结构',mb_IconError+mb_OK);
end;
if (ADOQuery1.IsEmpty) or (ADOQuery1.RecordCount>1) then
begin
Application.MessageBox('数据库出错!','部门结构',mb_IconError+mb_OK);
exit;
end;
ADOQuery1.First;
DepName:=ADOQuery1.FieldByName('DepName').AsString;
DepNo:=IntToStr(ADOQuery1.FieldByName('DepNo').AsInteger);
new(p);
p^:=DepNo;
CurNode:=DepTree.Items.AddChildObject(nil, DepName, p);
CreateChildDep(CurNode, DepNo);
CurNode.Expand(True);
finally
ADOQuery1.Close;
end;
end;
procedure TMainForm.ExitBtnClick(Sender: TObject);
begin
Close;
end;
procedure TMainForm.DepTreeClick(Sender: TObject);
begin
StatusBar1.Panels[0].Text:=pStr(DepTree.Selected.Data)^;
end;
procedure TMainForm.FormPaint(Sender: TObject);
begin
StatusBar1.Panels[0].Text:=pStr(DepTree.Selected.Data)^;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -