Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Maverich - Luglio 28, 2012, 06:32:13 pm

Titolo: [Risolto] gestione Directory su TreeView
Inserito da: Maverich - Luglio 28, 2012, 06:32:13 pm
apro connessione su server FTp
leggo i files e se di tipo Directory la scrivo su un TTreView
ottengo una struttura simile, mi posizione sulla radice (path = /)
e leggo i files eventualmente presenti
Citazione
/          radice
Immagini
Test1
  ---> 1  figli di Test1
         2
         3
         A
         ---> A1 figli di A
                A2
Test2
Test3
mi sposto su Test1 ,il mio path sarà
Path := Path + '/' + TTreeView.Selected.Text  => /Test1

mi sposto ancora su A
Path := Path + '/' + TTreeView.Selected.Text  => /Test1/A

ad ogni clisk su TTreeView scatta l'evento OnChange
Codice: [Seleziona]
procedure TForm1.TTreeView1Change(Sender: TObject; Node: TTreeNode);
begin
   nNodoAttivo := TVFolder.Selected;
  iIdxAssolutoNodo := nNodoAttivo.AbsoluteIndex;
end;
il problema esiste quando torno indietro es click su Test1
non ho riferimenti per risctruire il Path;
Citazione
conosco l'indice assoluto del nodo
posso fare un ciclo tra tutti i nodi presenti in TreeView1
fino ad incontrare iIdxAssolutoNodo.

ma il Path che costruisco e' sicuramente sbagliato.
es: Path = /Immagini/Test1 (errato) doveva essere /Test1

devo ottenere un comportamento simile a DirectoryListBox di Delphi, o ancora meglio a FileZilla.
Titolo: Re:gestione Directory su TreeView
Inserito da: bonmario - Luglio 29, 2012, 07:35:23 am
Se ho capito ciò che chiedi, ogni nodo dovrebbe avere la proprietà "Parent" con cui identifichi il padre del nodo stesso.

Ciao, Mario
Titolo: Re:gestione Directory su TreeView
Inserito da: xinyiman - Luglio 29, 2012, 01:44:29 pm
Se ho capito ciò che chiedi, ogni nodo dovrebbe avere la proprietà "Parent" con cui identifichi il padre del nodo stesso.

Ciao, Mario
Penso anche io che questa sia la strada corretta!  ;)
Titolo: Re:gestione Directory su TreeView
Inserito da: Maverich - Luglio 29, 2012, 10:16:58 pm
ho usato sia Parent che Level, ma in nessun caso avveo la garanzia della costruzione del Path;

cosi' ad ogni aggiunta di un nodo, memorizzo in una TStringList AbsoluteIndex, Level, Text ed il Path completo ,
Citazione
0*0*Immagini*/WA/Immagini
1*0*Test1*/WA/Test1
2*0*Test2*/WA/Test2
...
8*1*A1*/WA/Test1/A/A1
9*1*A2*/WA/Test1/A/A1/A2
quando scatta l'evento OnChange del TreeView, leggo l'indice assoluto del nodo, il livello ed il testo
quindi scorro quanto creato in precedenza.

se vi e' corrispondenza tra AbosulteIndex; Level; Text con i valori letti su OnChange, estraggo i lPath
avevdo la certezza della sua correttezza, in quanto non ricostruito ma scritto in fase di creazione Nodi.
Citazione
se e' stato cliccato su A1 : IndiceAssoluto = 8 LIvello = 1 Testo = A1
quando i valori coincidono il path sara' /WA/Test1/A/A1