Comment gérer Default et Cancel (et AccessKeyPress) ?

Résolu
dmiodon
Messages postés
5
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
16 mai 2008
- 16 mai 2008 à 12:12
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
- 16 mai 2008 à 15:37
Bonjour,

J'ai créé un contrôle utilisateur pour remplacer les boutons de commandes standards. Mais j'ai un problème : je n'arrive pas à utiliser correctement Default et Cancel de la même façon que les boutons standards. J'ai parcouru une peu le site et le net mais je n'arrive pas à résoudre mon problème.

J'ai bien mis DefaultCancel à True pour mon contrôle. J'ai donc bien accès à Default et Cancel quand je place mon contrôle dans un formulaire. Mais si je mets Defaut à True, mon contrôle ne réagit que si sa fonction AccessKeyPress est définie (en gérant la touche de code 13). Et dans ce cas, que je mette Default à True ou False ne change rien. Pire, si je rajoute un bouton standard ou un autre de mes boutons et que je le mets en Default=True, c'est toujours le premier bouton qui réagit.

Bref, je n'arrive pas à m'en sortir, j'ai besoin de votre aide...

5 réponses

Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
16 mai 2008 à 12:27
pas grand chose a faire, pourtant :

Private Sub UserControl_AccessKeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyEscape Then
'# On a pressé Echap
ElseIf KeyAscii = vbKeyReturn Then
'# On a pressé Entrée
Else
'# On a pressé Alt+toucheD'accès
End If
End Sub
3
dmiodon
Messages postés
5
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
16 mai 2008

16 mai 2008 à 15:36
Bon je viens de trouver la solution à mon problème...

A priori mon premier bouton avait toujours le focus. Je ne le voyais pas car je ne gérais pas la notion de focus sur mon contrôle... Donc en fait quand j'appuyais sur ENTREE juste après l'affichage de ma fenêtre, j'étais toujours sur lui, voilà pourquoi c'était toujours lui qui répondait...

En tout cas merci Renfield ! Ce merci vaut aussi (j'en profite) pour toutes tes sources/remarques/réponses
 qui m'ont été souvent utiles... Merci.
3
dmiodon
Messages postés
5
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
16 mai 2008

16 mai 2008 à 14:44
Oui Renfield, j'avais bien compris le principe. J'avais d'ailleurs essayé à peu près ce que tu dis :

Private Sub UserControl_AccessKeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        RaiseEvent Click
    End If
End Sub

Malheureusement, sur mon formulaire j'ai 2 boutons (2 de mes contrôles), et donc c'est toujours le premier qui est appelé, même si le premier à Default=False et le second Default=True.
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
16 mai 2008 à 14:54
...
pas réussi a reproduire la chose...

je fais un
MsgBox usercontrol.extender.name

j'ai bien UserControl12 qui apparait lorsque je presse Entree(mon deuxieme controle, qui a bien Default=True)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
16 mai 2008 à 15:37
ben écoute, ravi que tu avances.

si soucis concernant les UserControles, demande, j'ai des choses dans les manches
0