关于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。
乡中包含村,村中包含社。


...全文
96 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
真如实观 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
  • 打赏
  • 举报
回复
头坑,我来顶

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧