Bouton par défaut

Signaler
Messages postés
23
Date d'inscription
vendredi 18 mars 2005
Statut
Membre
Dernière intervention
2 avril 2011
-
Messages postés
23
Date d'inscription
vendredi 18 mars 2005
Statut
Membre
Dernière intervention
2 avril 2011
-
bonjour
je travaille sur une application dont je met quelques boutons par défaut ce qui me permet d'appuyer sur la touche "Entrer" au lieu de cliquer sur le bouton le problème est que lorsque je suis dans un contrôle quelconque (TextBox,ComboBox,...) et j'appuie sur la touche "Entrer" le programme n'exécute pas par la procédure "LostFocus" ou "Validate" de ce contrôle
Comment faire pour passer par l'une ou ces deux procédures avant d'exécuter celle du bouton?
Merci bcp pour votre aide

8 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut
Essaye en faisant un 
   Call monBouton_Click
dans le TextBox_KeyPress ou le ComboBox_KeyPress avec un test de la touche vbKeyEnter (de mémoire)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
23
Date d'inscription
vendredi 18 mars 2005
Statut
Membre
Dernière intervention
2 avril 2011

bonjour
j'ai déjà essayé mais ca n'a pas marché il ne passe jamais par ces deux procédure mais si je teste la touche frappée tel que la touche Entrer
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Re
Par acquit de conscience, je viens de faire le test (refais -le aussi dans un projet neuf) :
Une forme
Une TextBox
Un Bouton + Default = True + une MsgBox dans le _Click
Quand le focus est dans la TextBox et que je tape sur la touche Entrée, le bouton fait bien son effet : j'ai la MsgBox

Si tu fais ce même essai, tu verras que tout fonctionne.
Maintenant, pourquoi cela ne fonctionne pas dans ton projet ... mystère.
As-tu donné des propriétés particulières à ta TextBox ?
Fais-tu des traitements dans le _KeyPress, _KeyDown ... de cette TextBox qui masquerait la touche ?
Est-ce que Windows fait un petit Beep quand tu appuis sur la touche Entrée ? (normalement, c'est ce qui se passe quand la touche est sans effet)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
23
Date d'inscription
vendredi 18 mars 2005
Statut
Membre
Dernière intervention
2 avril 2011

Bonjour
merci jack pour tes réponses mais peut être que tu n'a pas bien compris mon problème je vais t'expliquer avec un exemple
dans le même projet que tu as crée met une MsgBox dans la procédure "Validate" ou "Lostfocus" et appuie sur la touche "Entrer" tu va remarquer que le message n'est pas affiché car ces deux procédure ne sont pas exécutés et loi biensûr je veux qu'ils seront exécuté avant  NonBonton_Click()
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Bonjour,

Mets ceci en 1ère ligne de l'évènement click de ton bouton de commande ....(en remplaçant "Text1" par le nom que tu as donné à ta textbox

If ActiveControl.Name = "Text1" Then Text1_LostFocus

(Et en espérant que tu développes bien sous VB6 et non VBA/Excel ...)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Comme expliqué dans l'aide, le Validate d'une TextBox ne fonctionne que si le composant qui obtient le focus à sa propriété CauseValidate à True.
Est-ce que ton bouton a cette propriété ?
La touche Entrée dans une TextBox n'a jamais pour effet de sortir de la TextBox. C'est à toi de le gérer avec ma première réponse.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
23
Date d'inscription
vendredi 18 mars 2005
Statut
Membre
Dernière intervention
2 avril 2011

Bonjour,
j'ai essayer ta méthode jack mais çà n'a pas marché, lorsque j'appuie sur la touche "Entrer" lorsque le focus est dans le contrôle "TextBox" (propriété CauseValidate est à True aucun évènement de ce contrôle n'est exécuté même celui de "KeyPress" et "KeyDown" (tu peux essayer pour voir)
je travaille avec vb6.0 que je maitrise bien mais j'ai pas trouvé une solution à ce problème!
Messages postés
23
Date d'inscription
vendredi 18 mars 2005
Statut
Membre
Dernière intervention
2 avril 2011

merci jmf0 ta méthode a bien marché mais il reste un petit problème : dans l'évènement Validate il y a une condition qui garde le focus dans le contrôle :
  (if "Condition" then cancel =True) comment faire pour que l'exécution de l'évènement click du bouton s'arrête si cette condition est vrai ?