cs_JLB59
Messages postés140Date d'inscriptionjeudi 21 septembre 2000StatutMembreDernière intervention16 août 2012
-
26 avril 2006 à 16:27
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
27 avril 2006 à 11:55
Bonjour à tous,
Qq pourrait me donner la bonne syntaxe de la commande "vbKey1" par exemple.
Je demande ça parce que je voudrais mettre cette cmd dans une procédure :
Private Sub R1_Click()
vbKey1 = ........................
If R1 Then
....
....
End If
End Sub
mais je ne sais pas comment !...
R1 est un picturebox et quand c'est cliqué avec la souris, l'image s'affiche ailleurs.
J'ai donc pensé plus judicieux de pouvoir faire la même chose avec le pavé numérique.
Donc quand je tape "1", je voudrais que l'image s'affiche ailleurs, comme avec la souris quoi !
Maintenant si c'est pas possible avec un picturebox, je rajouterai un Label1 !!!!
Si vous avez compris ce que je veux faire, c'est sympa de m'aider ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 27 avril 2006 à 11:55
Et puis tu peux toujours faire Shift + NumPad1, ça fonctionne , c'est l'équivalent de la touche 'Fin' lorsque numlock est activé, et de la touche '1' si numlock n'est pas activé
asecher
Messages postés262Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention27 avril 20071 26 avril 2006 à 16:48
Tu veux que ton image s'affiche quand on clique ou bien quand on appuie sur le 1 du pavé numérique ?
Pour les touches, on passe par les évènements OnKeyDown (et je crois qu'il faut déclarer une précéance du code vis-à-vis du système de la capture des touches par le formulaire avant le système)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 26 avril 2006 à 19:01
Moi non plus asecher, j'ai pas compris grand chose, en plus tu semble raisonner en .NET alors qu'il a préciser VB5.
Bref, JLB59, je vais essayer d'etre un peu plus clair
J'imagine que ta picture box s'appelle R1
Pour le click , il te faut
Private Sub R1_Click()
<strike>vbKey1 = ........................</strike> à virer, c'est pas bon.
Ici tu met le code pour ouvrir ton image
....
End Sub
Pour la touche 1 du pavé numérique :
Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer)
if KeyCode= vbKeyNumpad1 then
Ici tu met le code pour ouvrir l'image, le même que pour le click
ou tu fait call R1_Click()
end if
End Sub
cs_JLB59
Messages postés140Date d'inscriptionjeudi 21 septembre 2000StatutMembreDernière intervention16 août 2012 27 avril 2006 à 09:05
Moi non plus asecher, j'ai pas compris grand chose, en plus tu semble raisonner en .NET alors qu'il a préciser VB5.
Je ne sais pas si je raisonne en .NET mais toujours est-il que c'est bien du VB5 (pas de pépettes pour la version + moderne)
Toujours est-il Casy que tes explications sont TRES CLAIRES et ça m'aide bien.
Bref, JLB59, je vais essayer d'etre un peu plus clair
Très sympa de ta part.
J'imagine que ta picture box s'appelle R1
Exact !
Pour la touche 1 du pavé numérique :
Private Sub
Picture1
_KeyDown(KeyCode As Integer, Shift As Integer)
if KeyCode= vbKeyNumpad1 then
Ici tu met le code pour ouvrir l'image, le même que pour le click
ou tu fait call R1_Click
()
end if
End Sub
Je suppose que pour Picture1... tu voulais dire R1 ?
Pour infos, les () dans le Call R1... disparaissent ! c'est normal ça ?
Là où j'ai du mal à suivre, c'est Shift As Integer !!!
Je ne comprends pas son utilité, tu peux m'expliquer STP ? Merci d'avance.
Toujours est-il que ton exemple du Private Sub..., ça ne doit pas être exactement ça, parce que ça ne fonctionne pas, bien qu'il n'y ait aucune erreur.
Maintenant, c'est peut être moi qui ait mal manipulé ! Là, c'est déjà plus sûr.
Mais est-ce que je suis obligé de mettre ce bout de code dans une autre procédure ?
Merci de ta réponse.
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /?>
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 27 avril 2006 à 09:47
Alors je vais esayer d'etre aussi clair.
le parametre Shift représente l'état des touches Shift (MAJ), Ctrl et Alt au moment de l'appuie sur ta touche.
= 1 : maj enfoncée
= 2 : ctrl enfoncée
= 4 : alt enfoncée
ainsi que toutes les combinaisons possible:
= 6 : ctrl + alt enfoncées.
Effectivement j'aurais du mettre R1 à la place de Picture1
Que les parenthèses disparaisent, c'est normal, c'est parce que tu n'as pas d'arguments à passer à la fonction.
Le mot call devant est même falcutatif. Ca fait un peu vieille école et même plus ou moins considéré comme obsolete. Mais moi je le met toujours, car comme ça, lorsque tu reprend ton programme quelques mois après, tu comprend de suite que c'est une procedure que tu appelle, ça me parait plus clair.
Mon code marche, il faut juste que ton image est le focus lorsque tu appuis sur la touche. Effectivement si c'est un bouton, ou un autre controle qui est sélectionné, c'est lui qui recevra l'évenement de la touche et non pas l'image.
Sinon il y a une solution, c'est que ce soit ta form qui intercepte ton evenement, quelque soit le controle ayant le focus. Dans ce cas tu met ton code dans le "TaForm_KeyDown". Et tu dois mettre la propriete KeyPreview de ta form à TRUE. Ainsi c'est ta form qui récupèrera en tout premier (tous) les évènements des touches.
Une fois que tu as traiter ton cas particulier, si tu ne veux pas que le controle qui a le focus récupère à son tour l'évènement, tu met keycode à 0 avant de sortir de ta fonction TaForm_KeyDown.
Ca fait un peu roman, mais j'espère que ça t'aideras.
cs_JLB59
Messages postés140Date d'inscriptionjeudi 21 septembre 2000StatutMembreDernière intervention16 août 2012 27 avril 2006 à 11:38
Ca fait un peu roman, mais j'espère que ça t'aideras.
Un peu que ça m'aide !
Je n'aurais pas su me dépatouiller de ce prb sans ton aide.
De plus, tes explications sont claires et précises, et ça, c'est parfait ! (pas comme certains...)
Tu parles de "vieille école", comme je ne suis pas un "pro" de VB, mettre le plus possible d'explications (que je fais toujours) dans les prg et mettre des fonctions "complètes" dans les procédures est, je pense, le meilleur moyen de s'en sortir.
Quoiqu'il en soit, si le code marche chez toi, y a pas de raisons ! J'ai dû mal placé ce qu'il fallait.
En passant et pendant que j'y suis, pour la cmd "Shift" (MAJ et min), cela ne fait par partie du pavé numérique, alors pourquoi la mettre puisqu'il n'est pas concerné ????
A moins de ce servir des touches alphanum, dans ce cas, c'est juste.
Bref, je te remercie vivement de ton aide et si je rencontre d'autres prb, je saurai où m'adresser (si tu le veux bien !).
cs_JLB59
Messages postés140Date d'inscriptionjeudi 21 septembre 2000StatutMembreDernière intervention16 août 2012 27 avril 2006 à 11:44
Je refais le texte par qu'avec Netscape (que je viens de mettre), c'est pas la joie.
Tu y verras un peu plus claire !
Ca fait un peu roman, mais j'espère que ça t'aideras.
Un peu que ça m'aide !
Je n'aurais pas su me dépatouiller de ce prb sans ton aide.
De plus, tes explications sont claires et précises, et ça, c'est parfait ! (pas comme certains...).
Tu parles de "vieille école", comme je ne suis pas un "pro" de VB, mettre le plus possible d'explications (que je fais toujours) dans les prg et mettre des fonctions "complètes" dans les procédures est, je pense, le meilleur moyen de s'en sortir.
Quoiqu'il en soit, si le code marche chez toi, y a pas de raisons !
J'ai dû mal placé ce qu'il fallait.
En passant et pendant que j'y suis, pour la cmd "Shift" (MAJ et min), cela ne fait par partie du pavé numérique, alors pourquoi la mettre puisqu'il n'est pas concerné ????
A moins de ce servir des touches alphanum, dans ce cas, c'est juste.
Bref, je te remercie vivement de ton aide et si je rencontre d'autres prb, je saurai où m'adresser (si tu le veux bien !).