Vale, he avanzado algo... He estado jugando con la propiedad OnExpand del TreeView y se me ha ocurrido esto:
Código Delphi
[-]
procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
CurrentDir := CurrentDir+Node.Text+'\';
TreeListing(CurrentDir,TreeView1.Items,Node);
end;
Ahora sólo hay un problema, al expandir una carpeta se añaden las carpetas y se muestra que se pueden expandir, perfecto, lo que yo queria, pero... ¡Se muestran las mismas carpetas dos veces! unas con la posibilidad de expandir y la otra no... No habria alguna forma de en vez de añadir un item substituirlo si este ya existe?