Suponiendo que ya tienes la parte de los checkbox, para seleccionar todos los sub-nodos del nodo que has seleccionado, tienes que hacer una búsqueda recursiva de estos.
Código Delphi
[-]
procedure CheckSubNodes(ANode: TTreeNode);
var
I: Integer;
begin
ANode.Checked := True; if ANode.HasChildren then
for I := 0 to ANode.Count - 1 do
CheckSubNodes(ANode.Item[i])
end;
procedure TForm1.TreeView1OnChange(Sender: Object; Node: TTreeNode);
begin
CheckSubNodes(Node)
end;
Saludos...