如何判断一个已知结点是否有子结点?
我用的是CheckTree ,就是treeview的扩展,每个结点带checkbox的。条件判断:1>如果父结点是被选状态,如何设置她的所有子结点也为被选状态,
2>如果有一子结点为被选状态,怎么设置父结点为“实心”状态?
我的简单程序:
procedure TFrmMain.ShowTreeView;
var
SQLStr1, SQLStr2:string;
i:Integer;
begin
for i := 0 to Self.Special_treeview.Items.Count - 1 do
begin
SQLStr1 := Self.Special_treeview.Items[i].Text;
SQLStr2 := 'select * from T_人员权限表 ' +
'where 姓名 = ' +
#39 + DM.DSetUser.FieldByName('姓名').AsString + #39
+ 'and 基本权限 = ' +
#39 + SQLStr1 + #39;
ExecQuery(DM.DSetCheckTree, SQLStr2);
if DM.DSetCheckTree.RecordCount > 0 then
//就是下面的代码怎么写,谢谢了!
Self.Special_treeview.Items[i].StateIndex := 2
else
Self.Special_treeview.Items[i].StateIndex := 1;
end;
end;
我用的是CheckTree ,就是treeview的扩展,每个结点带checkbox的。条件判断:1>如果父结点是被选状态,如何设置她的所有子结点也为被选状态,
2>如果有一子结点为被选状态,怎么设置父结点为“实心”状态?
我的简单程序:
procedure TFrmMain.ShowTreeView;
var
SQLStr1, SQLStr2:string;
i:Integer;
begin
for i := 0 to Self.Special_treeview.Items.Count - 1 do
begin
SQLStr1 := Self.Special_treeview.Items[i].Text;
SQLStr2 := 'select * from T_人员权限表 ' +
'where 姓名 = ' +
#39 + DM.DSetUser.FieldByName('姓名').AsString + #39
+ 'and 基本权限 = ' +
#39 + SQLStr1 + #39;
ExecQuery(DM.DSetCheckTree, SQLStr2);
if DM.DSetCheckTree.RecordCount > 0 then
//就是下面的代码怎么写,谢谢了!
Self.Special_treeview.Items[i].StateIndex := 2
else
Self.Special_treeview.Items[i].StateIndex := 1;
end;
end;
解决方案 »
- 如何用API函数实现阻塞非阻塞 和同步异步的 网络通讯?select函数具体作用是什么?
- 求adoquery的带变量的插入记录语句!
- 问用ADOTble怎么在表中增加字段?
- 用程序代码来控制在这两个数据库中实现通信!!! 在线等
- 我想调用一个API,怎么调用?
- 100分求sql server 7.0 版下载地址,在线等待,能下马上给分!!!!!!!!!!1
- 字符串转换为数值的问题!!!!!请高手帮忙!
- 请问如何在Delphi程序中调用-Chm帮助文件?
- 哥们哪儿有可用的EHLIB2.5下载(我在黄昏狼上下载的不能用)
- taozc(陶),windflow(我的未来不是梦),多谢你们的函数,一点小分...
- 功能树的问题 如何动态生成树后自动展开
- indy控件发邮件,收件人地址字符串最多可以多长?
begin
CurItem := TreeView1.Items.GetFirstNode;
while CurItem <> nil do
begin
CurItem.StateIndex := 2 ;//或者1, 看你的程序中逻辑状态了
end;
end;
2>如果有一子结点为被选状态,怎么设置父结点为“实心”状态?
TTreeNode 这个结点类, Parent 属性指向父结点,,,
TTreeNode有全面的属性,成员函数来实现你的想要的功能.至于上面这两点功能,可以在TreeView的click事件,或者,OnChange事件中编写相关的处理代码好像应该是OnChange事件比较好