有关TREEVIEW的使用(100分)

  • 主题发起人 主题发起人 sunyb
  • 开始时间 开始时间
S

sunyb

Unregistered / Unconfirmed
GUEST, unregistred user!
我想从数据库里读出一个字段动态生成TREEVIEW:
root 有受理案件(已手工建立)
|----A类
| |-a001
| -a002
|----B类
| |-b001
...
其中分类已从“项目分类表”中读出并建立了NODE,但是从“受理记录表”中读取编号时
一个分类编号读完怎么移到下一个分类上再建立NODE呢?
目前的程序是把所有编号读到了第一个分类上。

procedure TFrmLabg.FormCreate(Sender: TObject);
var ajfl: String; //案件分类
ajlb: String; //案件类别s,g...
ajbh: String; //案件编号
Node: TTreeNode;
ParentIndex: Integer; //添加父节点的Index
begin
ajfl := '';
ajbh := '';
ParentIndex := 1;
with frmdata.AdoQuery1 do
begin
close;
SQL.text:='SELECT * from 项目分类表 where 项目='+''''+'案件分类'+'''';
open;
first;
While Not EOF do
Begin
ajfl := trim(FieldByName('分类').AsString);
Node := Treeview1.Items[0];
Treeview1.Items.AddChild(Node,ajfl);
with AdoQuery1 do
begin
close;
ajlb:=copy(ajfl,1,1);
SQL.text:='SELECT * from 受理记录表 where 案件编号 like '+''''+ajlb+'%'+'''';
open;
first;
Node := Treeview1.Items[ParentIndex];
While Not EOF do
begin
Treeview1.Items.AddChild(Node,FieldByName('案件编号').AsString);//再添加子节点
next;
end;
end;
Next;
//在这里应该写什么呢?
end;
close;
end;
end;
 
问题出在这句话:
Node := Treeview1.Items[ParentIndex];
也就是说你每次添加的node都创建在Treeview1.Items[1]上了。
建议修改为:
RootNode:TTreeNode;
FlNode:TTreeNode;
>>Node := Treeview1.Items[0];
RootNode := TreeView1.Items[0];
>>Treeview1.Items.AddChild(Node,ajfl);
FlNode := TreeView1.Items.AddChild(RootNode,ajfl);
>>Treeview1.Items.AddChild(Node,FieldByName('案件编号').AsString);//再添加子节点
TreeView1.Items.AddChild(FlNode,FieldByName('案件编号').AsString);//再添加子节点
 
问题解决了,谢谢,我还从来没用过TREEVIEW,所以对于它的一些属性、方法、事件都
不清楚,楼上专家能否指点一二?
 
接受答案了.
 
后退
顶部