Le forum (ô combien francophone) des utilisateurs de Powerbuilder.







Bonjour,
J'ai un probleme pour faire un sous total dans ma datawindow. C'est une datawindow avec le style d'affichage Group.
J'ai donc en premier lieu un groupe d'éditeurs qui on chacun un groupe de titre (chque titre pouvant avoir differentes parutions).
Dans la partie détail j'affiche les détails concernant le titre mais j'ai aussi un champ calculé qui me permet de savoir si la ligne est selectionnée où non
Champ tot_nb
if (IsSelected (), 1, 0)
Dans l'application déjà existante il y avait déjà un total des lignes selectionnées avec un total d'autres champs liés aux lignes : j'avais donc x lignes selectionnées pour les editeurs A,B,C,...
Désormais il faut que je rajoute le nombre de lignes selectionnées par editeur. J'ai donc rajouté des champs calculés dans mon trailer group id_editeur.
Seulement celà ne fonctionne plus pour récupérer le nombre de lignes selectionnées pour un editeur :
Champ sous_tot_nb_sel : le nombre de ligne selectionnées par editeur
sum( tot_nb for group 1 )
Champ tot_nb_sel : le nombre de ligne selectionnées total
sum (tot_nb for all)
J'ai a chaque fois 0 pour le champ sous_tot_nb_sel alors que le champ tot_nb_sel s'incremente bien au fur et a mesure que je selectionne (décrémente si je deselectionne des lignes)
Je ne vois pas trop où est ce que j'aurais fait une erreur donc si vous pouvez m'aider ça serait super
Merci d'avance pour vos reponses
Dernière modification par Nephtis (20-08-2007 14:26:46)
Hors ligne










Il faut peut etre un groupcalc() après chaque selection
Hors ligne







Merci pour ta reponse, maintenant ça marche bien
Mais j'ai une autre question. Depuis que j'ai codé les groupCalc(), le focus sur la datawindow revient à la toute première ligne. Est ce qu'il existe un moyen de rester sur la ligne où on avait cliqué ou est ce qu'il faut que je code un truc dans le genre :
je recupère ma ligne
je fais mon groupCalc()
je me repositionne sur la ligne que j'ai récupéré
Hors ligne
Nephtis a écrit:
Merci pour ta reponse, maintenant ça marche bien
Mais j'ai une autre question. Depuis que j'ai codé les groupCalc(), le focus sur la datawindow revient à la toute première ligne. Est ce qu'il existe un moyen de rester sur la ligne où on avait cliqué ou est ce qu'il faut que je code un truc dans le genre :
je recupère ma ligne
je fais mon groupCalc()
je me repositionne sur la ligne que j'ai récupéré
Avec un dw.SetRedraw(False) avant et un dw.SetRedraw(True) après et ça devrait être pas mal.
Par contre à ta place j'utiliserais un find sur des champs clés sauvegardés avant pour me repositionner car même si l'ordre des lignes change tu sera toujours sur la bonne ligne...
Hors ligne







Ok je voyais souvent des SetRedraw() mais je savais pas trop à quoi ça servais (je teste ça demain parce que là je suis retourné sur un projet java)
Hors ligne







J'ai codé ce script à la fin de mon évenement mais le curseur remonte toujours sur la première ligne :
dw_1.SetRedraw(False) dw_1.GroupCalc() dw_1.SetRedraw(True)
Est ce que j'ai fait une erreur?
Hors ligne











Bonjour,
Tu as juste oublié de te re-positionner sur ta ligne avant de faire le SetRedraw(True)
Hors ligne







Ben au final je m'en sors avec le code suivant
dw_1.SetRedraw(False) dw_1.GroupCalc() dw_1.SetRedraw(True) dw_1.ScrollToRow(row)
Dans l'évenement clicked c'est assez simple de retrouver la ligne sur laquelle on se trouve
J'avais testé sans les SetRedraw mais ça génère un petit cliping, pas génant mais qui au final sera assez désagréable (surtout pour deux lignes de code)
Dernière modification par Nephtis (21-08-2007 09:55:53)
Hors ligne











Par contre, si tu veux éviter que l'utilisateur ne voit que le curseur se déplace, il vaut mieux coder:
dw_1.SetRedraw(False) dw_1.GroupCalc() dw_1.ScrollToRow(row) dw_1.SetRedraw(True)
Hors ligne