Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Je cherche à provoquer l'évènement "clicked" d'un "CommandButton" lorsqu'il a le focus et que l'on presse une des touches "Enter".
Pour cela j'ai voulu ajouter un "event" (pbm_keydown) avec un "TriggerEvent(Clicked!)", cela fonctionne bien lors du "Run" ou du "Debug".
La compilation est ok. Par contre lorsque je veux faire un "Deploy" => Violent plantage, l'appli se ferme sans plus d'explication.
Et après, une migration est nécessaire pour pouvoir ouvrir les DW dans l'environement de dèv.
Quelqu'un a t'il une explication ?
Merci
Dernière modification par cdtit (31-10-2007 13:35:27)
Hors ligne
Bonjour,
On peut voir le code de ton événement pbm_keydown?
Tu es sous quelle version PB, avec quel SGBD et sous quel OS?
Hors ligne
Dans Event ue_valide(keycode key, unsignedlong keyflags) returns long [pbm_keydown]
( user event de type "Event ID = pbm_keydown") , d'un commandbutton
if KeyDown(KeyEnter!) then this.TriggerEvent(Clicked!)
PB 10.5 build 4523, DB2 V7, W2K server.
Hors ligne
Par avoir le focus, c'est peut-être pas le terme exact, j'entendais :
"TabOrder specifies the order in which the control will receive focus when the user tabs among controls within a window. Setting the TabOrder for a control to 0 means that the control cannot be tabbed to."
Donc la possibilité de clicker un boutton par le clavier quand on se déplace dans l'écran par la touche "tab"
Hors ligne
tu ne peux pas detecter, au moment ou le tab se trouve sur le bouton, de quel bouton il s'agit et mettre ce bouton par defaut ?
Hors ligne
Tu dois absolument utiliser la touche Enter je suppose ? parceque sinon par défaut quand un bouton a le focus il suffit d'appuyer sur "barre d'espace" pour faire comme si on cliquait sur le bouton
Hors ligne
ta réponse me laisse à penser qu'un user event "pbm_keydown" n'est pas compatible avec un commandbutton ?
Hors ligne
rincevent a écrit:
Tu dois absolument utiliser la touche Enter je suppose ? parceque sinon par défaut quand un bouton a le focus il suffit d'appuyer sur "barre d'espace" pour faire comme si on cliquait sur le bouton
c'est pas le plus intuitif pour les utilisateurs.
mais je cherche avec les event "losefocus" et "getfocus" du commandbutton, pour aplliquer la méthode de pick
Hors ligne
Bon effectivement un
this.default = true
dans le GetFocus
et un
cb_quitter.default = true
dans le LoseFocus fonctionne très bien.
Donc à moins que qq un ait une explication pour le violent plantage du pbm_keydown, je passe à RESOLUE
Hors ligne
à mon avis pour éviter le plantage il faut coder l'événement key de la fenêtre et non du bouton et utiliser la variable key plutot que la fonction KeyDown(KeyEnter!) :
If key = KeyEnter! Then cb_ton_bouton.TriggerEvent( Clicked! ) End If Return 0
Ensuite si en plus tu veux le faire uniquement si le bouton a le focus il faut appeler GetFocus et vérifier que c'est bien le bouton qui a le focus: (tiré de la doc)
GraphicObject which_control CommandButton cb_which If key = KeyEnter! Then which_control = GetFocus() If TypeOf(which_control) = CommandButton! Then cb_which = which_control If cb_which.ClassName = "cb_ton_bouton" Then cb_ton_bouton.TriggerEvent( Clicked! ) End If End If End If
Hors ligne