Pas de problème (pb), que du PowerBuilder (PB) ^^

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