Handle, evenement click et form.Show

cs_DURANDO Messages postés 34 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 21 mars 2006 - 3 mars 2006 à 12:27
cs_DURANDO Messages postés 34 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 21 mars 2006 - 3 mars 2006 à 14:44
Bonjour à tous,

je cherche une solution pour permettre configurer mes touches de
navigation (commandButton) accessibles également par F1 à F12 par
l'intermédiaire d'un fichier ".ini".

J'ai résolu l'initialisation de caption de chaque touche utilisée ainsi :

F1 :

Page_tartempion

Dans certains cas, je souhaite appeler l'évenement click du bouton
concerné si appui sur F2 par exemple (pas de pb) dans form_keydown:

select case keycode

case vbkeyF2 : F2_Click

case else

end select

Dans un autre cas, si touche configurée pour un appel de page(suivant mon fichier ini), je souhaite appeler cette page.

j'ai essayé de faire ça avec for each form in vb.forms mais vb.forms ne contient que les forms chargée

Comment recupérer la listes des forms du projet (chargées ou non)?




















C'est pas parceque les c.. sont plus nombreux qu'ils ont forcément raison!(dixit Coluche)
Une seule ligne de conduite, l'objectivité.

2 réponses

jannoman Messages postés 256 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 20 février 2008 1
3 mars 2006 à 13:25
Ton problème n'est pas tres clair mais je crois comprendre ce que tu veux, il y a deja eu des sujets la dessus. En fait, tu est obligé de régler chaque cas "à la main", du genre, pour F4 :


if ma_chaine = "frm_Tartampion" then frm_Tartampion.show
else if ma_chaine = "frm_Chezpasquoi" then frm_Chezpasquoi.show



A signaler aussi qu'il y existe une commande qui "compile" des instructions, mais je ne sais plus ce que c'est.


A+.
Thomas.
0
cs_DURANDO Messages postés 34 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 21 mars 2006
3 mars 2006 à 14:44
Merci de m'avoir répondu Thomas.C'est vrai que c'était pas clair!



Je précise.

Voila j'ai une form nommée "FORME" dans laquelle j'ai des CommandButton
nommés "F1", "F2"..."F12". Lorsque j'appui sur une touche F1 à F12,
dans l'évenement "FORME_KeyDown" je traite ainsi:



With FORME.F1

If .Enabled Then

For Each vue In VB.Forms

MsgBox "bouton.caption=" & .Caption & Chr(13) & "vue.name=" & vue.Name

If InStr(3, .Caption, vue.Name) > 0 Then

vue.Show

Exit Sub

End If

Next vue

End If



Le but recherché est d'afficher la form dont le nom est renseigné dans la propriété Caption de mon CommandButton

(F1.Caption = "F1 : NomdelaformAppeleeParToucheF1" ).

Si au lancement de mon application, je charge toutes les forms avec
load (sans les afficher donc): ça va marcher puisque VB.Forms contiendra tous les noms de forms! Mais c'est nul de tout
charger juste pour ça, ça prend des ressources pour rien!



1) Je cherche donc (à la place de VB.Forms) une collection contenant
les forms du projet (chargées ou non) mais cette collection
existe-t-elle?



2) Pourquoi j'ai parlé de handle dans le sujet :

Parceque, dans le cas ou caption ne contient pas un nom de form,
c'est que le bouton est dédié a une fonction particulière, que j'aurai
prévue dans F8_Click (par exemple pour F8). Pour traiter ce cas, je
comptais passer le Handle de F8 à une fonction qui va appeler
l'évenement Click de F8. J'ai tenté avec sendmessage de l'API Windows,
mais ça marche pas :

SendMessage FORME.F8.hwnd,WM_LBUTTONDOWN, ByVal 0&, ByVal 0&



J'ai beau chercher sur le forum, je trouve plus de solution!

Merci de votre aide.





--------------------------------------------------------------------------------
C'est pas parceque les c.. sont plus nombreux qu'ils ont forcément raison!(dixit Coluche)
Une seule ligne de conduite, l'objectivité.
0
Rejoignez-nous