Parcours récursif Treeview ( Neuds + branches ) ... ?? - Delphi/Pascal - Programmation
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+
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
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)
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)
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.