1、选中某节点,其子节点被选中
procedure SetChildState(Node:TTreeNode; State:Integer);
var
Level:Integer;
begin
Level:=Node.Level;
Node:=Node.getFirstChild;
while (Node<>nil) and (Node.Level>Level) do
begin
Node.StateIndex:=State;
Node:=Node.GetNext;
end;
end;
2、选中子节点时父节点也被选中,需要用到递归
procedure SetParentState(Node: TTreeNode);
var
Flag: Integer;
PNode:TTreeNode;
begin
PNode:=Node.Parent;
if PNode<>nil then
begin
PNode:=PNode.getFirstChild;
Flag:=PNode.StateIndex;
while PNode<>nil do
begin
if PNode.StateIndex<>Flag then Flag:=2;
PNode:=PNode.getNextSibling;
end;
Node.Parent.StateIndex:=flag;
SetParentState(Node.Parent);
end;
end;