fcTreeView的部分选择功能!(100分)

to:sunys
我正在改进,等好我就发给你一份!
 
应该可以了吗?》 发给我做什么呢。[8D]
 
TO:SUNYS 这是我改后的,你看有没有更有效的方法,总觉得很效率不高!

procedure TF_HouseDown.tvHouseToggleCheckbox(TreeView: TfcCustomTreeView;
Node: TfcTreeNode);
var Parentnode,Nodes,Node1:tfctreenode;
bNodeAllCheck,bNodeNotAllCheck,bNodeAllNotCheck:boolean;
begin
if not isActive then exit;
isActive:=False;
Nodes:=Node;
Parentnode:=Nodes.Parent;
while Parentnode<>nil do
begin
Node1:=Parentnode.GetFirstChild;
bNodeAllCheck:=True;
Node1:=Parentnode.GetFirstChild;
while Node1 <> Nil do
begin
if not (Node1.Checked) or (Node1.Grayed) then
begin
bNodeAllCheck:=False;
break;
end;
Node1:=Parentnode.getNextChild(Node1);
end;
bNodeAllNotCheck:=True;
Node1:=Parentnode.GetFirstChild;
while Node1 <> Nil do
begin
if (Node1.Checked) then
begin
bNodeAllNotCheck:=False;
break;
end;
Node1:=parentnode.getNextChild(Node1);
end;
if bNodeAllCheck then
begin
Parentnode.Checked:=True;
Parentnode.Grayed:=False;
end else if bNodeAllNotCheck then
begin
Parentnode.Checked:=False;
Parentnode.Grayed:=False;
end else if (not bNodeAllNotCheck) and (not bNodeAllCheck) then
begin
Parentnode.Checked:=True;
Parentnode.Grayed:=True;
end;
Parentnode:=Parentnode.Parent;
end;
NodeChildCheckfalse(Nodes);
isActive:=true;
end;
procedure TF_HouseDown.NodeChildCheckfalse(Nodes:tfctreenode);
var ChildNode:tfctreenode;
begin
ChildNode:=Nodes.getFirstChild;
while ChildNode<>nil do
begin
Childnode.Checked:=Nodes.Checked;
Childnode.Grayed:=False;
NodeChildCheckfalse(ChildNode);
ChildNode:=Nodes.getNextChild(ChildNode);
end;
end;
 
我也有个问题想问一下:
fctreeview中,checkbox的选择和fctreeview的selected怎么样做到同步;
就是:当check被选的那时候,他所在的NODE就是当前的selectde??
 
你们说的 FcTreeView 什么地方有下啊
 
多人接受答案了。
 
顶部