Copie d'un TreeView

BlouMan Messages postés 93 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 2 juillet 2007 - 25 mars 2005 à 14:12
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 5 avril 2005 à 23:20
est-il possible de copier le contenu d'un TreeView dans un autre?...


<HR>
BLOU BLOU POWAA

15 réponses

vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006
25 mars 2005 à 14:40
Tout simplement comme ceci :



TreeView_vers.Items := TreeView_depuis.Items

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans
0
BlouMan Messages postés 93 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 2 juillet 2007
25 mars 2005 à 16:45
j'avais déjà essayer ça.... (je suis loin d'être un dieu du delphi mais j'ai pas non plus le QI d'une huitre...)

le problème c'est que ça ne copie que le noeud racine et ses fils; pas ses petits-fils, arrière-petit-fils....


<HR>
BLOU BLOU POWAA
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
25 mars 2005 à 21:22
procedure CloneArbre(source, destination : TTreeView ) ;


procedure CloneNoeud ( S, NoeudDest : TTreeNode ) ;
var
NoeudSource : TTreeNode ;
begin
NoeudSource := S ;
while Assigned(NoeudSource) do
begin
Destination.Items.AddChild(NoeudDest,NoeudSource.Text);
NoeudSource := NoeudSource.getNextSibling ;
end ;
end ;


var
i : integer ;
begin
if ( Source = destination )
or ( source = nil )
or ( destination = nil )
or ( Source.Items.count = 0 )
then Exit ;


Destination.Items.Clear ;


CloneNoeud( Source.Items[0], nil ) ;
for i:=0 to Source.Items.count-1 do
begin
CloneNoeud( Source.Items[i].getFirstChild, Destination.Items[i] ) ;
end ;
end ;


Appel :
CloneArbre( treeview1, treeview2 ) ;

Cordialement.
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
25 mars 2005 à 22:12
Il y a beaucoup plus simple !
Utiliser la méthode Assign qui est redéfinie pour chaque composant et qui consiste à copier le contenu de l'un dans l'autre.
Exemple : copier dans TreeView2 les éléments de TreeView1 :
TreeView2.Items.Assign(TreeView1.Items);

A l'intention de vincentstryckmans :
TreeView_vers.Items := TreeView_depuis.Items

ne copie pas les éléments de TreeView_Depuis dans TreeView_Vers mais fait pointer TreeView_Vers vers TreeView_Depuis.
C'est complètement différent. Mets TreeView_Depuis à Nil et tu verras la différence en voulant utiliser TreeView_Vers ! (plantage garanti )

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

Cliquez
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
25 mars 2005 à 22:43
Effectivement, je l'avais oublié celui là :oP
Bon, je remballe ma micro usine de clonage alors, lol.

Cordialement.
0
BlouMan Messages postés 93 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 2 juillet 2007
29 mars 2005 à 10:48
vos deux techniques donnent le même résultats :
ça ne copie que les fils du noeuds, pas les petit-fils, arrière-petit-fils....etc..


<HR>
BLOU BLOU POWAA
0
vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006
29 mars 2005 à 10:55
Petite leçon de Delphi pour ma pomme.
Merci à toi Delphiprog.

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans
0
BlouMan Messages postés 93 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 2 juillet 2007
29 mars 2005 à 14:35
je viens de remarquer que si tous les noeuds de l'arbre sont 'expanded' alors ça marche.... le problème est que si je veux copier un arbre contenant le file system, le temsp de tout ouvrir les noeuds c'est assez long....


<HR>
BLOU BLOU POWAA
0
BlouMan Messages postés 93 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 2 juillet 2007
29 mars 2005 à 16:07
peut-etre une solution :

--> ajouter les petit-fils lors de l'expand.

Mais je ne trouve pas comment faire pour trouver l'équivalent du noeud de l'arbre destination dans l'arbre source....


<HR>
BLOU BLOU POWAA
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 mars 2005 à 23:15
Si tous les noeuds sont déjà créés avant d'appeler assign (expanded ou pas expanded), alors ils seront créés à l'identique dans l'arbre de destination (enfants, petits-enfants, arrières petits-enfants, etc.).
La raison de ce comportement est surement ailleurs.


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
BlouMan Messages postés 93 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 2 juillet 2007
30 mars 2005 à 12:19
mais où?... :(


<HR>
BLOU BLOU POWAA
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
30 mars 2005 à 13:20
Le contenu de ton message privé serait plus utile ici pour que chacun comprenne bien ton problème.


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
BlouMan Messages postés 93 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 2 juillet 2007
30 mars 2005 à 13:24
euh oui....

voila :

>le remplissage est appelé dans l'evenement : Form.activate;
>
>mais j'ai remarqué que si les noeuds sont 'expanded' ça copie tous les niveaux... le
>probléme c'est que l'arbre source représente le file system.... et ouvrir tous les noeuds
>du file system c'est long...
>
>en fait je copie d'un ShellTreeview vers un TreeView (plus exactement vers un RzCheckTreeView)...


<HR>
BLOU BLOU POWAA
0
BlouMan Messages postés 93 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 2 juillet 2007
4 avril 2005 à 12:21
maintenant plus personne ne répond... :(


<HR>
BLOU BLOU POWAA
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
5 avril 2005 à 23:20
Tu le sors de où ce RzCheckTreeView ?

0
Rejoignez-nous