Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Voila, dans une datawindow j'ai mis un bouton à chaque ligne du tableau, lorsque je click dessus ça marche super (pour se faire j'utilise l'évènement buttonclicked de la dw, il y a en paramètre la ligne du bouton que j'ai clické), mais je veux que sa marche aussi par appuis sur la touche "+"
Comment faire??????
Hors ligne
avec l'évenement key peut etre?
Hors ligne
Moi aussi je pense qu'il faut utiliser l'évènement key de la fenêtre mais comment lancer un évènement avec des paramètres
Voici l'évènement que je doit appeler: buttonclicked(long row, long actionreturncode, dwobject dwo) returns long[pbm_dwnbuttonclicked]
Hors ligne
LaDW.event nomDetonEvenement(parametre)
Hors ligne
Pour ma part, j'utilise un événement créé sur l'objet datawindow:
//we_dwnkey( keycode key, unsignedlong keyflags ) returns long //event_ID [pbm_dwnkey] Long l_l_actionreturncode IF Key = 43 THEN RETURN ( This.Event buttonclicked(This.GetRow(), l_l_actionreturncode, This.Object) ) END IF
Hors ligne
sa marche bien mais le problème c'est lorsque je déplace le focus dans la datawindow et j'appuis sur la touche "+", c'est tjrs le même bouton qui s'actionne, il ne suit pas le focus
Voici mon code que j'ai mis dans l'évènement KEY():
choose case key case keyadd! dw_1.event buttonclicked(dw_1.getrow() ,0,dw_1.object) end choose
Hors ligne
eu désolé mais cest pas clair pour moi tu peux faire un screen pour m'éclaircir?
Hors ligne
poche a écrit:
sa marche bien mais le problème c'est lorsque je déplace le focus dans la datawindow et j'appuis sur la touche "+", c'est tjrs le même bouton qui s'actionne, il ne suit pas le focus
Voici mon code que j'ai mis dans l'évènement KEY():Code: pb
choose case key case keyadd! dw_1.event buttonclicked(dw_1.getrow() ,0,dw_1.object) end choose
Tu as vérifié que ton dw_1.getrow() a bien changé lorsque tu déplaces le focus?
Sinon, il faudra le forcer en faisant un SetRow() à chaque changement de ligne.
Hors ligne
sinon j'ai essayé ton code "foon" et sa marche mais sa pose le même problème : c'est lorsque je déplace le focus dans la datawindow et j'appuis sur la touche "+", c'est tjrs le même bouton qui s'actionne, il ne suit pas le focus.
Dans le code ci-dessous, je pense que c'est le paramètre qui n'est pas le bon -> This.GetRow(), ici on sélection la ligne et non ou est le focus mais je ne me rappel plus comment faire!!!!!
This.Event buttonclicked(This.GetRow(), l_l_actionreturncode, This.Object)
Hors ligne
Dans l'évènement rowfocuschanged de la datawindow j'ai mis :
long curr_row //dé-sélectionner tout selectRow(0,false) //trouver la ligne courante curr_row = dw_1.getRow( ) //sélectionner la ligne courante dw_1.selectRow( curr_row, true) dw_1.setrow( curr_row)
et lorsque je fait un getrow(), c'est tjrs le même problème!!
Hors ligne
Normalement, le GetRow prend la ligne courante dans la datawindow.
Pour récupérer la ligne sélectionnée, il faut utiliser la méthode GetSelectedRow.
Hors ligne
si j'utilise getselectedrow(), en paramètre faut que je lui donne ou est le focus????
comment faire!!!!!!!!!
Hors ligne
HS : Serais-tu un débutant ?
Hors ligne
poche a écrit:
si j'utilise getselectedrow(), en paramètre faut que je lui donne ou est le focus????
comment faire!!!!!!!!!
Au niveau de GetSelectedRow, il faut que tu lui passes en paramètre le numéro de la ligne à partir de laquelle
tu souhaites rechercher la première ligne sélectionnée. Dans ton cas, je pense qu'il faut mettre 0,
mais je n'ai pas suffisamment d'éléments pour en être sûr.
Sinon, tu as utilisé le débugger PB pour tester le retour de dw_1.GetRow()?
Hors ligne
la je pense que tu as tous les éléments pour réussir
Hors ligne
En effet, je suis un débutant, je suis apprentis dans une entreprise et j'ai commencé sur PB que depuis Octobre 2006. Je développe sur PB seuleument deux semaines par mois. Donc voilà pourquoi mon niveau est faible!!!
Excusez moi si des fois mes questions sont primaires, mais je vous remercis beaucoup pour votre aide, elle m'ai très précieuse et très enrichissante.
Sinon je viens juste de résoudre mon problème: je n'avais pas appelé la fonction Scrolltorow et je faisais un setfilter trop tôt dans le programme.
Merci encore pour votre aide.
Hors ligne
De rien.
Tu verras, ce qu'il y a de bien avec PB, c'est qu'on arrive toujours à ses fins
Hors ligne