BlouMan
Messages postés93Date d'inscriptionmardi 15 mars 2005StatutMembreDernière intervention 2 juillet 2007
-
25 mars 2005 à 14:12
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
5 avril 2005 à 23:20
est-il possible de copier le contenu d'un TreeView dans un autre?...
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 ;
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
BlouMan
Messages postés93Date d'inscriptionmardi 15 mars 2005StatutMembreDerniè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....
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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.
BlouMan
Messages postés93Date d'inscriptionmardi 15 mars 2005StatutMembreDerniè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)...