PB à toute heure et à tout moment. (à parcourir avec modération)

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-08-2012 15:59:08

Kyoshiro  
Membre Geek
Lieu: Montpellier
Date d'inscription: 24-11-2008
Messages: 59
Pépites: 52
Banque: 0

[RESOLU] Repositionnement systématique sur la 1ere ligne de la datawindow

Bonjour à tous,

J'ai un petit souci qui est à n'en pas douter assez peu compliqué, mais auquel je ne trouve pas de remède immédiat. Je m'explique.

J'ai une datawindow avec beaucoup de lignes : l’ascenseur vertical apparait. Si je vais jusqu'en bas de ma liste et que je modifie un item, je suis systématiquement repositionné sur la première ligne de ma liste. Or, un tel comportement est vite problématique. Par exemple, sur chacune de mes lignes, j'affiche une case à cocher pour gérer la suppression. Donc si je veux supprimer les 5 dernieres lignes de ma liste, je dois cocher une case, puis je suis repositionné en haut de la liste, je redescends, je coche une case, je suis repositionné en haut de la liste, je redescends, je coche une cas,... etc.
Pourtant, je ne vois rien dans mon évènement itemchanged qui pourrait causer ça... Encore une fois, il s'agit peut être d'un truc tout bête, il n'empêche que je serais ravi si quelqu'un pouvait me fournir quelques éléments de réponse sur ce comportement ?

Merci pour votre aide

Powerbuilder 10.5.1

Dernière modification par Kyoshiro (14-08-2012 09:19:37)


Saying Java is good because it works on all operating systems is like saying anal sex is good because it works on all genders.

Hors ligne

 

#2 13-08-2012 17:52:38

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Repositionnement systématique sur la 1ere ligne de la datawindow

Salut, il y a quoi dans ton itemchanged?


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#3 14-08-2012 07:28:14

Kyoshiro  
Membre Geek
Lieu: Montpellier
Date d'inscription: 24-11-2008
Messages: 59
Pépites: 52
Banque: 0

Re: [RESOLU] Repositionnement systématique sur la 1ere ligne de la datawindow

Dans le itemchanged, il n'y a quasiment rien mis à part un contrôle sur les données... Par contre, dans le itemchanged de son ancêtre, je fais appel à une fonction, dans laquelle je trouve la ligne suivante : dw_liste.GroupCalc().
Apparemment, c'est après cette ligne que mon curseur est repositionné au début de ma liste. J'ai regardé la doc de PB10.5 et cette fonction est décrite comme "Recalculates the breaks in the grouping levels in a DataWindow." Je comprends donc bien que cela sert à recalculer les montants des groupes en cas de modification. Je ne peux donc pas m'en passer.

Y a t'il un moyen de me repositionner sur ma ligne aprés le GroupCalc() ?
J'ai essayé SelectRow() mais ça ne fait que sélectionner (mettre en surbrillance) ma ligne : je reste en haut de la liste alors que ma ligne est tout en bas de la liste.


Saying Java is good because it works on all operating systems is like saying anal sex is good because it works on all genders.

Hors ligne

 

#4 14-08-2012 08:28:32

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Repositionnement systématique sur la 1ere ligne de la datawindow

Bonjour, essaye avec setrow et/ou scrolltorow


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 14-08-2012 08:33:45

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Repositionnement systématique sur la 1ere ligne de la datawindow

je te propose de surcharger comme suit ton groupcalc() au niveau de l'ancetre :

Code: pb

int ret
long row
row = getRowIDFromRow( getRow() )
ret=super::groupcalc()
setRow( GetRowFromRowID( row )
ScrollToRow( row )
return ret


j'ai pas testé, mais l'idée est là


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#6 14-08-2012 09:19:01

Kyoshiro  
Membre Geek
Lieu: Montpellier
Date d'inscription: 24-11-2008
Messages: 59
Pépites: 52
Banque: 0

Re: [RESOLU] Repositionnement systématique sur la 1ere ligne de la datawindow

Je viens de tester et ça marche.

J'ai également conditionné l'appel à la fonction GroupCalc(). Si je coche une case, il n'y a rien à recalculer donc si mon itemchanged concerne ma case (dwo.Name="bl_select"), je ne lance pas le GroupCalc(), sinon je lance le GroupCalc() avec le SetRow() + le ScrollToRow().

C'est parfait, merci pour votre aide !


Saying Java is good because it works on all operating systems is like saying anal sex is good because it works on all genders.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22