Parcours récursif Treeview ( Neuds + branches ) ... ??

Parcours récursif Treeview ( Neuds + branches ) ... ?? - Delphi/Pascal - Programmation

Marsh Posté le 01-04-2005 à 20:29:52    

bonjour,
 
Je recherche un bout de code qui permette le parcours complet d'un treeview afin d'en recuperer le text de chaque noeud et chaque branche. Le plus propre serait de parcourir en récursif mais je n'arrive pas à le faire et je n'arrive pas à trouver d'exemple à ce sujet ... n'auriez-vous pas un petit bout de code ou un lien qui me permettrait de trouver ca ?
 
Si quelqu'un à une autre idée, je suis preneur !
 
merci par avance de vos réponses.

Reply

Marsh Posté le 01-04-2005 à 20:29:52   

Reply

Marsh Posté le 02-04-2005 à 20:36:17    

pour info, j'ai trouvé une solution :
 
function GetNodeByText(ATree: THTMLTreeView; StringSearch: string): TTreeNode;
var i: Integer;
    iItem: string;
begin
  if (ATree = nil) or (StringSearch = '') then Exit;
 
  for i := 0 to ATree.Items.Count-1 do
  begin
    iItem := ATree.Items[i].Text;
 
    if Pos(StringSearch, iItem) > 0 then
    begin
      Result := ATree.Items[i];
      Exit;
    end  
    else  
    begin
      Result := nil;
    end;
  end;
end;
 
Voilà, en espérant que ca servira a quelqu'un !!!  
 
a+

Reply

Marsh Posté le 27-05-2005 à 17:30:17    

Salut,
 
En cherchant sur google, je suis tombé sur ton message. Je cherche aussi à parcourir un treeview récursivement mais par les noeuds enfants du noeud courant.
Dans ton dernier code, je ne vois pas de récursivité. As-tu d'autres infos stp ?
 
Merci

Reply

Marsh Posté le 29-05-2005 à 12:47:28    

Up ?

Reply

Marsh Posté le 07-08-2008 à 01:14:00    

salut
 
je doit construire une phrase à partir de TTreeView telque les noeud sont les opérateurs logique et les derniére feuilles sont les phrases.cela dit que mon treeview est un arbre abstrait. la meilleur solution est de faire un parcour recursif pour construire ce texte (enssemble de phrase et opérateur). j'ai simplifier le pb et je me dit il faut esseyer avec les expréssion arithmétique au debut.
voila ma fonction recursive mais je ne connai pas le pb car cette fonction est biensur fausse.
 
si quelqu'un peut m'aider  !!!
//------------------------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
S="";
Edit1->Text=fonction(TreeView1->Items->GetFirstNode());
}
//---------------------------------------------------------------------------
String fonction(TTreeNode *Nodef)
{
int i;
TTreeNode *Node,*f,*l,*par;
 
Node=Nodef;
if(Node->HasChildren)
  {
  par=Node->getFirstChild();
 while(par!=Node->GetLastChild())
       {
       S=S+fonction(par)+"  "+Node->Text;
       par=par->GetNext();
       }
       S=S+fonction(par);
       return(S);
  }
  else return(Node->Text);
}
//------------------------------------------------------------------------------------------
exemple  
*
|  *
|   |--+
|   |    |---a
|   |    |---b
|   |
|   |--+
|   |    |---c
|   |    |---d
|   |
|   |
|
|--/
|--e
|---f     ----->   ((a+b)*(c+d))*(e/f)
 


---------------
d
Reply

Marsh Posté le 07-08-2008 à 01:57:51    

salut
 
je doit construire une phrase à partir de TTreeView telque les noeud sont les opérateurs logique et les derniére feuilles sont les phrases.cela dit que mon treeview est un arbre abstrait. la meilleur solution est de faire un parcour recursif pour construire ce texte (enssemble de phrase et opérateur). j'ai simplifier le pb et je me dit il faut esseyer avec les expréssion arithmétique au debut.
voila ma fonction recursive mais je ne connai pas le pb car cette fonction est biensur fausse.
 
si quelqu'un peut m'aider  !!!
//------------------------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
S="";
Edit1->Text=fonction(TreeView1->Items->GetFirstNode());
}
//---------------------------------------------------------------------------
String fonction(TTreeNode *Nodef)
{
int i;
TTreeNode *Node,*f,*l,*par;
 
Node=Nodef;
if(Node->HasChildren)
  {
  par=Node->getFirstChild();
 while(par!=Node->GetLastChild())
       {
       S=S+fonction(par)+"  "+Node->Text;
       par=par->GetNext();
       }
       S=S+fonction(par);
       return(S);
  }
  else return(Node->Text);
}
//------------------------------------------------------------------------------------------
exemple  
*
|  *
|   |--+
|   |    |---a
|   |    |---b
|   |
|   |--+
|   |    |---c
|   |    |---d
|   |
|   |
|
|--/
|--e
|---f     ----->   ((a+b)*(c+d))*(e/f)
 


---------------
d
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed