关于TreeView的问题(难题)

KOB325 2004-05-04 11:43:52
现有一张表如下:
VillageName RusticName Gangname
东升 白衣 1
东升 白衣 2
东升 白衣 3
东升 石佛 1
东升 石佛 2
东升 石佛 3
东升 石佛 4
黄龙溪 菜坝 1
黄龙溪 菜坝 2
黄龙溪 菜坝 3
黄龙溪 毡帽 1
黄龙溪 毡帽 2
黄龙溪 毡帽 3

VillageName代表乡RusticName代表村Gangname代表社,如何生成TreeView。
乡中包含村,村中包含社。


...全文
72 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
真如实观 2004-05-05
你先定义一个字段:parrentID smallint not null。
如:MyID parrentID child_name
1 1 xxx
2 1 //注意了没有?xxx
3 3 xxx
4 3 xxx
5 3 xxx
6 6 xxx
7 6 xxx

然后~~~~
rNode=Tree->Items->Add(TreeView1->Selected,"TTreeView测试");//根节点
rNode->ImageIndex=0;
rNode->SelectedIndex=0;
while(!TreeViewQuery->Eof)
{
sDate=dm->TreeViewQuery->FieldByName("mydate")->AsDateTime.FormatString("yyyy-mm-dd");//TreeView的Caption是日期,形如:2004-05-05
nid=dm->TreeViewQuery->FieldByName("MyID")->AsInteger;
nparrent=dm->TreeViewQuery->FieldByName("parrentid")->AsInteger;
nchildname=dm->TreeViewQuery->FieldByName("child_name")->AsInteger;//子节点
if(nparrent==nid)
{
cNode=Tree->Items->AddChild(rNode,sDate);
mNode=Tree->Items->AddChild(cNode,IntToStr(nchildname));
}
if(nparrent!=nid)
{
mNode=Tree->Items->AddChild(cNode,IntToStr(nchildname));
}
cNode->ImageIndex=1;
cNode->SelectedIndex=1;
mNode->ImageIndex=2;
mNode->SelectedIndex=2;
TreeViewQuery->Next();
}
  • 打赏
  • 举报
回复
fengxia0078 2004-05-05
顺带问一下::
我加了两级节点后,想在rootnode.chilrennode下在加,怎么写?
TTreeNode *Node
TreeView1->Items->Add(NULL, "rootnode");
Node = TreeViewXZLB->Items->Item[0];
TreeView1->Items->Add(Node, "childrennode");
...??
  • 打赏
  • 举报
回复
diligent_boy 2004-05-05
upup!!
关键还是获取信息呀!
别的都能在help内找到
  • 打赏
  • 举报
回复
ekin7913046 2004-05-05
我把答案给你发到邮箱了。给分吧!
  • 打赏
  • 举报
回复
robbyzi 2004-05-04
这里只要嵌套三重循环,来生成树就可以了。

至于如何生成树结点。大把书有介绍了。呵
  • 打赏
  • 举报
回复
xugeng 2004-05-04
你可以参考下面的建树过程

//建类别树
TTreeNode *Node[6]; //最多可以有6级
TreeViewXZLB->Items->Clear();

//加一个根节点
TreeViewXZLB->Items->Add(NULL, "类别");
Node[0] = TreeViewXZLB->Items->Item[0];

//设展开图像
Node[0]->ImageIndex=0;
Node[0]->SelectedIndex =1;

//定义变量
int CurrentItem=0,
LastNode=0,
CurrentNode=0,
XZLBBHLen;

//从表中取记录,插入树
DM->ADOTableXZLB->First();
while(!(DM->ADOTableXZLB->Eof ))
{
XZLBBH=DM-> ADOTableXZLB->FieldByName("类别编号")->AsString.Trim();
XZLB=DM->ADOTableXZLB->FieldByName("类别")->AsString.Trim();
XZLBBHLen =XZLBBH.Length() ;
CurrentItem=CurrentItem+1;
CurrentNode=XZLBBHLen/2; //注意这里除2是为了确定树节点级别,具体说明见后

TreeViewXZLB->Items->AddChild(Node[CurrentNode-1],XZLB);

Node[CurrentNode] = TreeViewXZLB->Items->Item[CurrentItem];

// 设展开图像
Node[CurrentNode]->ImageIndex=0;
Node[CurrentNode]->SelectedIndex =1;

if (CurrentNode!=LastNode)
{
LastNode=CurrentNode;
}

DM-> ADOTableXZLB->Next() ;
}
  • 打赏
  • 举报
回复
free1688 2004-05-04
头坑,我来顶
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ Builder
加入

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2004-05-04 11:43
社区公告
暂无公告