Hola...
Tienes que hacer que el método sea recursivo. Algo como:
Código Delphi
[-]
procedure TFrmSeguridad.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Node := TreeView1.GetNodeAt(X, Y);
if Assigned(Node) then
CheckNodes(Node)
end;
procedure TFrmSecuridad.CheckNodes(Node: TTreeNode);
var
F: TTreeNode;
p: TPoint;
b: Boolean;
begin
b := TreeView1.GetChecked(Node);
for I := 0 to Pred(Node.Count) do
begin
TreeView1.SetChecked(Node[i], b);
if Node[i].HasChildren then
CheckNodes(Node[i])
end
end;
Este código lo hice de memoria y no lo he probado, pero te puede dar una idea de cómo lo debes hacer.
Saludos...