Newsgroup: it.comp.lang.delphi
Titolo: Come popolare un treeview a runtime?(delphi)

Ciao, vorrei sapere qual'e' la procedura per creare e popolare un treeview a 
run-time?
Inoltre non capisco questi 2 messaggi di errore(so cosa vogliono dire ma nn 
so come ovviare):
ERRORE 1 : Treeview1.items.Add('DIR: '+TSC.Name);  //errore : Incompatible 
types: 'TTreeNode' and 'String'
sono d'accordo visto che nell'help dice  : Treeview1.items.Add(myNode, 
'nomenodo') OK!
ERRORE 2 : Pero' se metto var mynode: TTreNode e scrivo il testo sopra mi 
dice che node non viene mai inizailizzato!!
Ma come faccio io quindi a passargli delle string risultanti da una funzione 
che mi esplora cartelle, sottocartelle e file di una path!?
Grazie
P.S Nell'help spiega come popolare un treeview ma staticamente e nn capisco 
come farlo a runtime!!

 che mi esplora cartelle, sottocartelle e file di una path!?
ri-ripeto: hai letto la guida x cio che riguarda il metodo Add?
Io credo prp di no.
A.

 hai letto la guida x cio che riguarda il metodo Add?
Adesso ho capito:
    MyTreeNode1 := treeview1.items.Add(nil, 'RootTreeNode1'); { Add a root 
node }
    { Add a child node to the node just added }
    treeview1.items.AddChild(MyTreeNode1,'ChildNode1');
Quindi dovrei creare prima una variabile MyTreeNode1 di tipo Ttreenode che 
sara' il mio nodo principale? giusto?
Pero' nel momento che faccio la mia ricorsione :
_____________________________________
if FindFirst(Path+'\*.*', faAnyFile, TSC) = 0 then
..
...
Contenitore.Add('DIR: '+TSC.Name);                    //aggiunge il suffisso 
dir quando riconosce che' una directory e
prendifile(path+'\'+TSC.Name, Contenitore);          //richiama la funzione 
ed esplora entrando nella directory trovata
..
...
Contenitore.Add('FILE: '+TSC.Name);  // aggiunge il suffisso file quando 
riconosce che' un file
______________________________________
e diaciamo che incontra una directory e dentro ne ha nidificate altre come 
faccio a nidificare anche nella treeview, oppure quando esce dalle cartelle 
e ritorna alla principale e trova dei file in questo caso come mi comporto?
Grazie Daniel
P.S ho quasi risolto seguendo un'altra strada, in questo modo pero' c' e' un 
altro problema:
procedure TForm1.Button1Click(Sender: TObject);
var
  T: TStringList;
  I: Integer;
  begin
  ListBox1.clear;
  T := TStringList.Create;
  try
  PrendiFile(Combobox1.Text, T);
  for  I:=0 to T.count-1 do
  ListBox1.Items.Add(T.Strings[I]);
  ListBox1.Items.SaveToFile('file.txt');
  TreeView1.LoadFromFile(ExtractFilePath(Application.ExeName) +
'file.txt');
  finally
   T.Free;
  end;
 end;
Cosi copio tutte le cartelle esplorate in un file, e poi creo il treeview 
con un bel difetto: nessun nodo, e' tutto sullo stesso piano!, questo 
perche' il file che legge ha bisogno di tabulazione chei il treeview usa per 
capire le gerarchie(che come dice il sig. Marco Cantù bisogna sbirciare in 
TTreestrings.GetBufStrart che non riesco a trovare....nel caso in cui sapete 
dove trovare queste info, come potre tabulare il testo mentre chiamo la 
ricorsione che mi scorre tutti i file e cartelle? ).
Ciao
Daniel 

 faccio a nidificare anche nella treeview
e' un problema di logica. ad ogni cartella devi creare un nodo nella
root e sotto questo nodo vai ad aggiungere n nodi uno x ogni file
contenuto nella cartella
A.

 ha scritto nel messaggio 
news:1149674131....@c74g2000cwc.googlegroups.com...

Risolto ora funziona se puo' servire a qualcuno eccola:
procedure prendifileT(Path: String; Treeview: TTreeView; parente: 
TTreenode);
var
TSC: TSearchRec;
node: TTreenode;
begin
  try
    if FindFirst(Path+'\*.*', faAnyFile, TSC) = 0 then
    begin
      repeat
        if (TSC.Name <> '.') and (TSC.Name <> '..') then
        begin
          if ((TSC.Attr and faDirectory) <> 0) then
          begin
            node:=Treeview.items.Add(node, TSC.Name);
            prendifileT(path+'\'+TSC.Name, Treeview, node);
          end
          else
           node:=TreeView.items.Addchild(parente, TSC.Name);
        end;
      until FindNext( TSC ) <> 0;
    end;
  finally
    FindClose( TSC );
  end;
end;
Grazie a tutti
Daniel