我想做个树型显示窗体,来显示地区分类,具体样式如下:--东北
--辽宁
--沈阳
--大连
--吉林
--黑龙江
--北京
--上海通过另外一个窗体来实现添加和删除节点,要求在在树型窗体显示时树型图自动显示,这样的结构如何通过数据库来实现,数据库如何建立?最好能提供事例代码!
--辽宁
--沈阳
--大连
--吉林
--黑龙江
--北京
--上海通过另外一个窗体来实现添加和删除节点,要求在在树型窗体显示时树型图自动显示,这样的结构如何通过数据库来实现,数据库如何建立?最好能提供事例代码!
解决方案 »
- 怎么隐藏dll
- DELPHI里SQL.查询时,为什么用and后面在加上条件就报错
- 浏览照片时遇到的错误提示jpeg error #42,应该怎么处理?
- 怎样传递控件?通过TWinControl吗?
- CPU窗口
- 请教模糊查询的问题!!adoquery+access2000(在线等待!解决就给分)
- 初学者的问题~~大虾们能进来看看吗?谢谢
- 设置数据集的Action为True时提示:“未指定的错误”,怎么回事??
- 如何拷贝出access的mdb的几张表?
- 请教如何使用TWebConnection。如何通过它的AppServer属性调用应用服务组件的方法。
- delphi的最新版本是多少,哪裡有下載?
- 救命呀!!加急
--部门1
--员工1
--员工2
--...
--部门2
--员工3
...... ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
//////////数据库结构: //////////
//////////department: name:部门名称,char //////////
////////// d_no:部门号,int //////////
//////////worker: name:员工姓名,char //////////
////////// w_no:员工号,int //////////
////////// d_no:部门号,int //////////
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, Db, ADODB;type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
ADOQuery1: TADOQuery; //连接department
ADOQuery2: TADOQuery; //连接worker
Edit1: TEdit; //结点信息
procedure Button1Click(Sender: TObject);//生成树
procedure TreeView1Click(Sender: TObject);//显示结点信息
procedure FormClose(Sender: TObject; var Action: TCloseAction);//释放p_data
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
p_data:pstring;
implementation{$R *.DFM}//生成树
procedure TForm1.Button1Click(Sender: TObject);
var
fn,sn:ttreenode; //fn:部门结点 sn:员工结点
begin
treeview1.Items.BeginUpdate;
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from department');
adoquery1.open;
treeview1.Items.Clear;
new(p_data);
p_data^:='root';
fn:=treeview1.Items.AddObject(nil,'root',p_data);
while not adoquery1.Eof do
begin
with treeview1.Items do
begin
new(p_data);
p_data^:=adoquery1.fieldbyname('d_no').asstring;
sn:=treeview1.Items.AddChildobject(fn,adoquery1.fieldbyname('name').asstring,p_data); adoquery2.close;
adoquery2.sql.Clear;
adoquery2.sql.add('select * from worker where d_no=:d_no');
adoquery2.Parameters.ParamByName('d_no').value:=p_data^;
adoquery2.open;
while not adoquery2.Eof do
begin
new(p_data);
p_data^:=adoquery2.fieldbyname('w_no').asstring;
treeview1.Items.addchildobject(sn,adoquery2.fieldbyname('name').asstring,p_data);
adoquery2.Next;
end;
end;
adoquery1.Next;
end;
adoquery1.Close;
adoquery2.close;
treeview1.Items.EndUpdate;
end;//显示结点信息
procedure TForm1.TreeView1Click(Sender: TObject);
begin
if treeview1.Selected=nil then exit; case treeview1.Selected.Level of
1:begin
edit1.text:='部门号:'+pstring(treeview1.selected.Data)^;
end;
2:begin
edit1.text:='工号:'+pstring(treeview1.selected.Data)^;
end;
end;
end;
//释放p_data
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if p_data<> nil then Dispose(p_data);
end;end.
partable
code name
1 东北
2 华北
3 华南
countytable
partcode countycode name
1 1 黑龙江
1 2 吉林
1 3 辽宁等等,我觉得代码也不是很困难,应该写得出来