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 21: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
//---------------------------------
// Déclencheur : routine de services
//--------------------------------
// Arguments : atv, référence à un treeVieuw 
//        atv_itemCurrent, référence à l'item du treeVieuw dont on soihaite récupérer tous les enfants
//        atv_item[], tableau qui sera retourne par référence avec tous les fils de l'item atv_item, le tableau 
//    lors du premier appel contient la référence à l'item dont on souhaite obtenir les enfants
//------------------------------------------------------------------------------------------------------------------------------------------------

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        // Dimension du tableau atv_item[] afin d'insérer à un niveau supérieur les items


li_dimItem  =  upperBound(atv_item[]) + 1
atv_item[li_dimItem]  =  atv_itemCurrent    // Insertion de l'item passé en argument

ltvi_handleItem = atv_itemCurrent.itemhandle                  // Récupération du pointeur de l'item    
atv.ExpandItem (ltvi_handleItem)                    // Déploie un niveau de l'item

ltvi_handleItemChild  = atv.FindItem(ChildTreeItem!,ltvi_handleItem)  // Recherche des enfants pour l'item courant

If ltvi_handleItemChild <> - 1 then        // L'item courant possède t'il des enfants ?
  atv.GetItem(ltvi_handleItemChild,ltv_itemScan)     // Récupération de la référence
  of_scanTreeVieuw(atv,ltv_itemScan,atv_item[])                           // Ré-appel récursive
End if
                                
// Une fois l'appel des enfants terminé, on parcours ses voisins

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)            // Déploie un niveau de l'item
  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)        // Récupération de la référence
    of_scanTreeVieuw(atv,ltv_itemScan,atv_item[])        // Ré-appel récursive
  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 21:09:21)

Hors ligne

 

#2 17-11-2008 08: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,776,000

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