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...
A voir également:

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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 74
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 74
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
Rejoignez-nous