Pas de problème (pb), que du PowerBuilder (PB) ^^

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 17-04-2009 07:14:09

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

[RESOLU] Focus sur le bouton d'une DW

Bonjour,

J'aimerais savoir s'il serait possible de mettre le focus sur le bouton d'une DW..

C'est assez embêtant de ne pas pouvoir appuyer sur "Enter" pour passer à une autre page, et devoir cliquer absolument sur le bouton par exemple..

Et les boutons ne sont pas repris dans le "Tab Order"..


Voilà, je utilise PB 10.2.1

Merci!

Dernière modification par micmx (17-04-2009 11:04:10)

Hors ligne

 

#2 17-04-2009 09:15:29

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Focus sur le bouton d'une DW

Bonjour,

Tu peux ajouter à ton contrôle datawindow l'événement personnalisé pbm_dwnkey et ajouter le code suivant par exemple :

Code: pb

IF key = KeyEnter! THEN this.ScrollNextPage()

Hors ligne

 

#3 17-04-2009 09:28:38

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Focus sur le bouton d'une DW

Hmm peut être que je me suis mal exprimé.

Pour l'instant j'ai, sur l'évènement clicked(..) de ma DW :

Code: pb

int li_retour

if(dwo.name='b_valider') then

  this.accepttext( )
    if(f_controlform(this)) then
...
..
.


Est-ce que ta méthode peut remplacer ceci ?

J'ai cette erreur lorsque j'essaye :

incompatible types in expression : integer , keycode

Hors ligne

 

#4 17-04-2009 09:49:24

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Focus sur le bouton d'une DW

Pour simplifier ton code,  il existe deux événements dédiés lorsqu'on clique sur un bouton buttonclicking et buttonclicked. Je te conseille de déplacer ton code dans l'événement ButtonClicked.

A ce moment la, tu pratiques de la façon suivante dans l'événément pbm_dwnkey :

Code: pb

IF key = KeyEnter! THEN this.PostEvent("ButtonClicked")

Hors ligne

 

#5 17-04-2009 09:55:33

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Focus sur le bouton d'une DW

Ok
Mais ça ne résout pas le problème d'incompatibilité de "key"
Il attend un int et reçoit un "keycode" :s

KeyDown is not a standard PowerBuilder DataWindow event. To write a script for this event, you must first define a user-defined event for the event ID pbm_dwnkey.

Argument    Description
key    Integer by value.
keyflags    UnsignedLong by value. The modifier keys that are pressed. The keyflags value is the sum of the values for all the pressed keys.Key values are:·    1 Shift key·    2 Ctrl key·    3 Shift + Ctrl keys

Hors ligne

 

#6 17-04-2009 10:08:41

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Focus sur le bouton d'une DW

Je n'ai rien dit , désolé !!!
C'est la première fois que j'utilise les Event ID :P

ça marche nickel merci.

Par contre, avec cette méthode, vu que le focus n'a aucune importance, comment faire pour plusieurs boutons ?
Par exemple "Valider" "Annuler"
(je sais, on pourrait tester si la touche est enter ou escape dans ce cas, mais c'est un exemple, imaginons que je dois appuyer sur enter dans les deux cas)

une solution?

Dernière modification par micmx (17-04-2009 10:12:16)

Hors ligne

 

#7 17-04-2009 10:15:50

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Focus sur le bouton d'une DW

Bonjour,

Il y a une petite inexactitude dans la documentation.Les arguments de cet événement sont :

keycode key
unsignedlong keyflags

Le keycode pour la touche entrée est : KeyEnter! (ne pas oublier le point d'exclamation)

Code: pb

IF key = KeyEnter! THEN this.PostEvent("ButtonClicked")


Je viens de faire le test sur un petit "sample" ça fonctionne sans problème.

A priori, nous étions en train de répondre en même temps.

Hors ligne

 

#8 17-04-2009 10:20:43

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Focus sur le bouton d'une DW

Bonjour,

Oui, c'est pourquoi j'ai rajouté un commentaire ^^

micmx a écrit:

ça marche nickel merci.

Par contre, avec cette méthode, vu que le focus n'a aucune importance, comment faire pour plusieurs boutons ?
Par exemple "Valider" "Annuler"
(je sais, on pourrait tester si la touche est enter ou escape dans ce cas, mais c'est un exemple, imaginons que je dois appuyer sur enter dans les deux cas)

une solution?

Hors ligne

 

#9 17-04-2009 10:22:30

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Focus sur le bouton d'une DW

Tu me parais un peu tordu. Tu veux annuler ou valider en appuyant sur la touche Enter ?

Il te faut forcément un critère permettant au programme de choisir la bonne option selon la situation.

Hors ligne

 

#10 17-04-2009 10:26:45

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Focus sur le bouton d'une DW

Non non, j'ai mis que c'était un exemple ^^

Si par exemple, dans ma DW grid, j'ai pour chaque ligne :

Nom(text) Prénom(text) Supprimer(bouton)

Je peux voyager avec le taborder, de nom en nom mais je ne peux pas positionner le focus sur un bouton !
et c'est ce que je souhaitais faire, pouvoir me placer sur un bouton avec le clavier et appuyer sur enter pour le valider..

Désolé si je me suis mal exprimé

Hors ligne

 

#11 17-04-2009 10:45:37

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Focus sur le bouton d'une DW

Dans ce cas, le numéro de ligne peut devenir ton critère. Tu peux transformer l'événement personnalisé pbm_dwkey par le code suivant :

Code: pb

dwobject dwo
IF key = KeyEnter! THEN Event ButtonClicked(this.GetRow(),0, dwo)


Dans l'événement ButtonClicked, tu connais maintenant le numéro de ligne concernée par la frappe de la touche Enter et tu peux agir en conséquence.

Hors ligne

 

#12 17-04-2009 10:54:13

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Focus sur le bouton d'une DW

okok merci beaucoup pour ton aide!

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22