Gracias Maeyanes
En realidad los otros niveles si tienen el nodo.data asignado pero a un entero
nodo.data := integer(iCliente) por eso la funcion mejorada de liberacion de nodos quedo asi
Código Delphi
[-]procedure TfrmMain.FreeNodes2(ARaiz: TTreeNode);
var
I: Integer;
RecNode: PRecNode;
begin
for I := 0 to Pred(ARaiz.Count) do
if (ARaiz.level = 3) then
begin
RecNode := PRecNode(ARaiz.Data);
Dispose(RecNode)
end
else
FreeNodes2(ARaiz[i])
end;
la liberacion de memoria sigue estando lenta pero lo solucione impidiendo que cierre el formulario. Cuando se cierre el aplicativo (cosa que si se hace rapidamente) supongo que windows eliminara automaticamente todos los punteros creados por el aplicativo... o opor los menos eso espero