Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Alors revoici la vieille Agi avec ses questions tordues...
Le problème du jour conciste à récupérer la première row d'un groupe quand l'utilisateur clique sur le header de ce groupe.
Sachant que le clicked Event nous donne une row = 0 pffff
Des suggestions, Events, Fonctions... qui pourraient nous permettre d'avancer ?
Merci les gars !
bises,
Agi
Dernière modification par Agimation (05-06-2007 13:01:17)
Hors ligne
la fonction FindGroupChange() peut etre ?
Hors ligne
Hè non...
Comme quel que soit le header de groupe cliqué, Row est à 0, impossible donc d'utiliser la fonction qui demande un numéro de row à partir duquel chercher .
Hors ligne
tout ceci dans un group de la datawindow ? c'est bien cela ?
Hors ligne
Et bien à l'exécution, on propose une DW comprenant des groupes à l'utilisateur, si il clique sur le header d'un groupe, on a besoin de savoir de quel groupe il s'agit et d'en récupérer la première row.
Comme si par exemple on donnait une liste de noms avec une rupture sur le pays, genre:
BELGIQUE
Albert
Michel
FRANCE
Pierre
Pol
Jacques
SUISSE
Joseph
Jules
Et que quand l'utilisateur clique sur "FRANCE" on sache que c'est le 2ème groupe et qu'on puisse récupérer "Pierre" qui est le premier "record" de ce groupe.
Fastoche en théorie non ?
Hors ligne
voila, tu peux te baser sur un compute ?
en mettant un compute field sur le header du group
et en mettant cela comme expression
first( getrow() for group 1 )
et la, ca te renvoie le premier row de chaque groupe.
Hors ligne
D'acord mais comment je récupère ça dans le cliqued event ??
Je reçois en arguments les coordonnées du pointeur ainsi que row (à 0) et dwo... pas de data ni rien...
Hors ligne
Ah ahhhh attends... j'ai une piste avec le GetBandAtPointer() ... j'ai bon espoir !
Hors ligne
alors tu as trouvé ?
voila une solution...
tu recuperes un n° de ligne avec le GetBandAtPointer(),
il faut que tu decortiques...
apres,
tu as juste cela à faire :
ls_ligne = string(this.object.compute_premierligne[ll_row]) // avec l'objet compute field cité auparavant
et le tour est joué !
la, tu recuperes à chque fois le premier row de chaque groupe.
Hors ligne
Les treeview font ca tres bien...
sinon tu peux utiliser la fonction getobjectatpointer
//recupération du premier row correspondant a l'entete cliqué, quelquesoit son niveau ls_string = this.GetObjectAtPointer() if ls_string <> '' then ll_clicked_row = long(mid(ls_string, pos(ls_string, "~t") + 1, len(ls_string))) end if
Dernière modification par hellkinder (05-06-2007 12:20:25)
Hors ligne
Merci les gars
Pick Ouic en effet, c'est bien de cette manière que nous avons procédé... ça fonctionne !
Hellkinder, c'est vrai que je n'avais pas pensé aux TreeViews... mais comme nous sommes tjrs en PB9, c'est un peu du chipo pour les garnir... vivement la 10 pour pouvoir expérimenter les DW TreeView !
Je crois que les hautes instances peuvent appliquer un beau "RESOLU" sur ce cas
Dernière modification par Agimation (05-06-2007 12:51:42)
Hors ligne
tu peux essayer de le mettre toi meme ? "RESOLU" , pour voir si mon changement hier soir fonctionne...
Hors ligne
Hors ligne
Pages: 1