Powerbuilder pour les completement Geeks !

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 30-03-2007 13:15:22

elbrizzio  
Bienfaiteur du site
Award: bf
Lieu: Leuven
Date d'inscription: 12-03-2007
Messages: 206
Pépites: 33,275
Banque: 2,109,818,425,070

[RESOLU] PB10.5 - DW treeview - quel est le niveau ?

Salut à tous,

J'ai une DW treeview associée à des DW détail.
Via une option de menu, je peux insérer une ligne détail mais à la condition qu'au moins le treeview ai été
ouvert jusqu'à un certain niveau. Et c'est là que je coince ...

Quelqu'un sait-il comment récupérer le dernier niveau séléctionné dans une DW de type treeview ?

Il ya bien la fonction IsExpanded(row,grouplevel) mais elle exige un N° de ligne en paramètre, N° que je ne connais pas

merci d'avance

Hors ligne

 

#2 30-03-2007 13:40:05

hellkinder  
Kinder Surprise
Award: chocomordutk6
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 902
Pépites: 0
Banque: 10,524,230,367,490

Re: [RESOLU] PB10.5 - DW treeview - quel est le niveau ?

Ok avec ce qui suit tu devrais pouvoir réussir pas mal de choses. Voilà toutes les astuces :

sur event clicked de la datawindow type treeview

Declaration

Code: pb

string ls_string
string ls_check
int i
long ll_clicked_row,ll_level,ll_level_bis

récupere l'objet cliqué.. quelquesoit ce que tu veux faire de ce qu'il y a en dessous tu dois faire ca :

Code: pb

ls_string = this.GetObjectAtPointer()

recupération du premier row correspondant a l'entete cliqué, quelquesoit son niveau

Code: pb

ll_clicked_row = long(mid(ls_string, pos(ls_string, "~t") + 1, len(ls_string)))

recupération du numero de niveau sur lequel on a cliqué

Code: pb

ls_check = Left(ls_string, Pos(ls_string, "~t") - 1)
 for i=1 to 2
  ls_check = right(ls_check,len(ls_check) - len(right(ls_check,Pos(ls_check, "."))) )
 next
 ll_level = long(ls_check)

Le bout de code ci_dessous te permet de refermer tout l'arbre sauf la branche que tu parcours.
Admettons que tu sois en train de parcourir les voitures, dans voitures tu regardes les marques....puis soudain du clique sur la categorie moto, dans ce cas la branche voiture et marque se ferment et la branche moto s'ouvre te laissant parcourir les marques de moto (je sais pas si c'est clair..mais bon)

Code: pb

 if this.isexpanded( ll_clicked_row, ll_level) then
  this.collapse(ll_clicked_row, ll_level)
 else
  if ll_level > 0 then
   this.Collapseall()
   for ll_level_bis = 1 to ll_level
    this.expand(ll_clicked_row, ll_level_bis)
   next
  else
   ll_level = 4
   ll_clicked_row = row
  end if
 end if


[edit] http://pbadonf.fr/forum/img/puntoolbar/smooth/bt_pre.png [ code=pb ]

Dernière modification par hellkinder (30-03-2007 13:41:08)


http://img510.imageshack.us/img510/4229/userbar1204625572ha9.gif
"Pour la première fois dans l'histoire de l'humanité, tous les peuples de la Terre ne forment qu'un"

Hors ligne

 

#3 30-03-2007 13:45:41

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] PB10.5 - DW treeview - quel est le niveau ?

Bonjour,

Pour récupérer la ligne courante, je suppose que la méthode GetRow marche aussi sur ce type de datawindow.

Sinon, dans l'aide PB 10.5, je viens de trouver ça:

Expanded Event

Description

Occurs when a node in a TreeView DataWindow has expanded.
PowerBuilder event information   
Event ID: pbm_dwnexpanded
Expanded is not a standard PowerBuilder event. To write a script for this event, you must first define a user-defined event for the event ID pbm_dwnexpanded.

Argument    Description
row    Long by value. The number of the first row in the group that has been expanded.
grouplevel    Long by value. The TreeView level of the group that has been expanded.
Return value

There are no return codes.

Usage

A TreeView node expands when the user clicks the State icon (+) in the TreeView DataWindow or uses any of the Expand methods.
The Expanding event occurs before the Expanded event.

Dès lors, je suppose qu'il te sera facile de stocker le row et le grouplevel dans des variables d'instance lors de l'exécution de cet événement.

Mais bon, c'est à tester...

Dernière modification par foon (30-03-2007 13:54:41)


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#4 30-03-2007 13:46:38

elbrizzio  
Bienfaiteur du site
Award: bf
Lieu: Leuven
Date d'inscription: 12-03-2007
Messages: 206
Pépites: 33,275
Banque: 2,109,818,425,070

Re: [RESOLU] PB10.5 - DW treeview - quel est le niveau ?

Merci Hellkinder,

Je vais voir ce que je peux faire avec cela, je crois quand même que ça va coincer car l'objet cliqué à ce moment-là est
le menu et non plus la DW.
En fin je vais voir çà de plus près ...

Hors ligne

 

#5 30-03-2007 13:51:05

elbrizzio  
Bienfaiteur du site
Award: bf
Lieu: Leuven
Date d'inscription: 12-03-2007
Messages: 206
Pépites: 33,275
Banque: 2,109,818,425,070

Re: [RESOLU] PB10.5 - DW treeview - quel est le niveau ?

Foon,

peut-être que passer par un event PB et stocker les valeurs dans des variables d'instance est une piste intéressante ...
je vais regarder cela

Merci

Hors ligne

 

#6 30-03-2007 15:10:36

hellkinder  
Kinder Surprise
Award: chocomordutk6
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 902
Pépites: 0
Banque: 10,524,230,367,490

Re: [RESOLU] PB10.5 - DW treeview - quel est le niveau ?

Tiens nous au courrant quand tu as la solution.


http://img510.imageshack.us/img510/4229/userbar1204625572ha9.gif
"Pour la première fois dans l'histoire de l'humanité, tous les peuples de la Terre ne forment qu'un"

Hors ligne

 

#7 03-04-2007 06:48:59

elbrizzio  
Bienfaiteur du site
Award: bf
Lieu: Leuven
Date d'inscription: 12-03-2007
Messages: 206
Pépites: 33,275
Banque: 2,109,818,425,070

Re: [RESOLU] PB10.5 - DW treeview - quel est le niveau ?

Voici ce que j'ai adpoté comme solution :

2  variables d'instance : il_row et il_level

Ces variable sont mises à jour dans 3 events :
1) le clicked event de la DW Treeview via le instructions

Code: pb

ls_dw_band = this.GetBandAtPointer()
my_band = wf_parse_bandinfo (ls_dw_band) // parse l'info dans un structure : row + level (ex: 'Detail' ou 'tree.level.1')
IF my_band.band = 'detail' THEN
  ll_level = 0
ELSE
  ll_level = long(right(my_band.band,1))
END IF  
il_row = my_band.row

2) user event sur la DW Treeview : ue_expand(row,grouplevel) qui pointe vers l'event ID pbm_dwexpanding

Code: pb

il_row = row
il_level = grouplevel
RETURN 0

3) user event sur la DW Treeview : ue_collapse(row,grouplevel) qui pointe vers l'event ID pbm_dwcollapsing
code identique au 2)

Ainsi où que clique l'utilisateur, je capte la ligne et le niveau


Merci à Foon et aux autres


[edit] http://pbadonf.fr/forum/img/puntoolbar/smooth/bt_pre.png [ code=pb ]

Dernière modification par elbrizzio (03-04-2007 06:56:03)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22