Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 13-11-2008 22:00:18

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

[SOURCE] Récupération de toutes les références des enfants d'un item appartenant à un treeVieuw

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

Code: pb

//---------------------------------------------------------------------------------------------------------------------------------------------
// 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

 

#2 17-11-2008 09:04:04

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,775,808

Re: [SOURCE] Récupération de toutes les références des enfants d'un item appartenant à un treeVieuw

à toi


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22