Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Le parcours d'un treevuew de manière à récupérer toutes les références des items enfants d'un item est assez fastidieux à mettre au point compte tenu d'un double appel recursif.
Pour tous ceux qui seraient confronté à ce problème :
Notez que chaque item doit se déployer afin que l'on puise acceder à ses enfants, il conviendra si besoin de "reployer" le treeVieuw en fin de traitement
//--------------------------------------------------------------------------------------------------------------------------------------------- // Nom de la routine of_scanTreeVieuw() //---------------------------------- // Objet : A partir d'un item d'un treeVieuw aliment un tabeau de tous ses fils //--------------------------------- //-------------------------------- //------------------------------------------------------------------------------------------------------------------------------------------------ Long ltvi_handleItem // Identifiant d'un item de treeVieuw Long ltvi_handleItemChild // Identifiant d'un enfant de ltvi_handleItem TreeViewItem ltv_itemScan // Item du treeVieuw en cours de balayage Int li_dimItem li_dimItem = upperBound(atv_item[]) + 1 atv_item[li_dimItem] = atv_itemCurrent ltvi_handleItem = atv_itemCurrent.itemhandle atv.ExpandItem (ltvi_handleItem) ltvi_handleItemChild = atv.FindItem(ChildTreeItem!,ltvi_handleItem) // Recherche des enfants pour l'item courant If ltvi_handleItemChild <> - 1 then atv.GetItem(ltvi_handleItemChild,ltv_itemScan) of_scanTreeVieuw(atv,ltv_itemScan,atv_item[]) End if ltvi_handleItem = atv.FindItem(nextTreeItem!,ltvi_handleItem) // Recherche des voisins pour l'item Do while ltvi_handleItem <> -1 // Balayage tant qui il y a des voisins li_dimItem = upperBound(atv_item[]) + 1 atv.getItem(ltvi_handleItem ,atv_item[li_dimItem]) // Enregistrement de l'item courant dans le tableau atv.ExpandItem (ltvi_handleItem) ltvi_handleItemChild = atv.FindItem(ChildTreeItem!,ltvi_handleItem) // If ltvi_handleItemChild <> - 1 then // Le voisin a t'il des enfants ? atv.GetItem(ltvi_handleItemChild,ltv_itemScan) of_scanTreeVieuw(atv,ltv_itemScan,atv_item[]) End if ltvi_handleItem = atv.FindItem(nextTreeItem!,ltvi_handleItem) // Puis tant qu'il y a des voisins, on les parcours Loop
Dernière modification par Dadone (14-11-2008 22:09:21)
Hors ligne
à toi
Hors ligne
Pages: 1