如何判断一个已知结点是否有子结点?
我用的是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;
begin
CurItem := TreeView1.Items.GetFirstNode;
while CurItem <> nil do
begin
CurItem.StateIndex := 2 ;//或者1, 看你的程序中逻辑状态了
end;
end;
2>如果有一子结点为被选状态,怎么设置父结点为“实心”状态?
TTreeNode 这个结点类, Parent 属性指向父结点,,,
TTreeNode有全面的属性,成员函数来实现你的想要的功能.至于上面这两点功能,可以在TreeView的click事件,或者,OnChange事件中编写相关的处理代码好像应该是OnChange事件比较好