树型目录的实现

feiyu9992 2005-11-29 04:51:14
如何实现像csdn论坛左边的树?点击一个结点后才加载其节点下的内容!不点就不加载
...全文
194 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
duchuan 2005-11-30
  • 打赏
  • 举报
回复
这个问题还是有点复杂,何以参考这个程序:
http://www.onlinedown.net/soft/41414.htm
wf2091139 2005-11-30
  • 打赏
  • 举报
回复
“我希望点1年级时” 只点节点一下,节点是不会展开的。
如果你希望在点击一下的时候就可以加载数据,那在OnClick 事件中做就可以了,
如果你希望在节点展开时加载数据就在OnExpanding 事件中操作
(不过看你的意思好象是后者,呵呵)

void __fastcall TfmMainDate::tvSortExpanding(TObject *Sender,
TTreeNode *Node, bool &AllowExpansion)
{
//在初始化的时候每个节点附加一个子节点 起text = "NULL"
TTreeNode * node = Node->getFirstChild();
AnsiString text = node->Text;
if(text == "NULL")//如果已经展开过就不需要再操作
{//尚未展开过。
Node->DeleteChildren();//删除附加节点
ptbl = new TTableInfo;
ptbl = (TableInfo *)Node->Data;
TQuery * qry = new TQuery(Application);
try
{
qry->DatabaseName = DM->dbMain->DatabaseName;
qry->Close();
qry->SQL->Clear();
qry->SQL->Add("Exec pr_ClassObjectsManage_SelectObjectFirstNode '"+ptbl->SortTbl+"' ");
qry->Open();
while(!qry->Eof)
{
AnsiString Caption = qry->FieldByName("SortID")->AsString + " " + qry->FieldByName("SortName")->AsString;
tvSort->Items->AddChild(Node,Caption);//对当前节点加载子节点
qry->Next();
}
}
catch(...){}
}
}
feiyu9992 2005-11-30
  • 打赏
  • 举报
回复
我想建成这样的树型
+学校
|—一年级
| |-1班
| |-2班
| |-3班
|—2年级
| |-1班
| |-2班
| |-3班
|
一直往下延续……
在树的右边是dbgrid ,里面显示
学生学号 姓名 出生日期 家庭情况
…… …… …… ……


我希望点1年级时,就从数据库读取1年级的1、2、3班,2年级则不需要读取,等点2年级时再加载,不点则不加载。这样比一打开窗口就加载所有年级的所有班级,有选择性些,速度快了很多。不知道怎么做啊,有资料吗
alloutoflove 2005-11-29
  • 打赏
  • 举报
回复
看一下CSDN的js文件先...^_^
BCB中的那个我想应该是响应OnExpanding事件完成相应的展开吧.

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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