Click long

Résolu
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011 - 1 févr. 2007 à 14:27
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 2 févr. 2007 à 08:30
Bonjour,

J'ai deux boutons de commande : à l'événement click, le premier incrémente une valeur, le second la décrémente.
J'aimerais savoir comment faire pour incrémenter/décrémenter en faisant un appui long (plutôt que de faire des séries de clicks...)

Merci pour toute aide.

17 réponses

lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 2
1 févr. 2007 à 14:36
Bonjour,

C'est une bidouille mais j aurais fait ca avec un timer.

un truc du genre :

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = True
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
Text1.Text = Val(Text1) + 1
End Sub
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 févr. 2007 à 14:48
salut,
la bidouille est bonne, c'est le principe.
et si tu veux que le temps de pression joue également, c'est-à-dire que plus tu appuies longtemps et plus le compteur accélère, tu peux jeter un oeil à cette source

++
PCPT   [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
1 févr. 2007 à 15:11
Salut,
Ou alors tu peu le mettre dans l'événement click, mais au lieu de te servir de la souris tu te sert de la touche entrée une fois le focus sur le bon bouton.
(mais je ne suis pas sur d'avoir compris)...

@+: Ju£i?n
Pensez: Réponse acceptée
0
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
1 févr. 2007 à 15:22
Merci pour toutes vos réponses. J'ai appliqué celle de lilo44 qui est parfaitement adaptée à ma situation.

A bientôt !
0

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

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 févr. 2007 à 19:54
C'est parfait, bien sur.

Mais pouquoi ne pas le faire avec un seul événement et sans ajout de contrôle timer ? (c'est largement réalisable)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 févr. 2007 à 19:58
Et pour le coup applicable tel quel à VBA.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 févr. 2007 à 20:02
çà sent le code déjà terminé et prêt à l'emploi ^^
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 févr. 2007 à 20:06
Oui, PCPT (je m'ennuyais, alors...)

Ce code part du principe selon lequel même le champion du monde de maitrise de son poignet est incapable de rester totalement immobile.

Une form, un bouton de commande command1 et un label label1 (pour afficher, c'est tout...)

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Static t As Single, d As Single
  If Button = 1 Then    If d 0 Then d Timer
   
    If d > 0 Then t = Timer - d
    DoEvents
  Else
    Label1.Caption = t
    d = 0
  End If
End Sub
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 févr. 2007 à 20:33
arf, désolé mais çà ne marchera que par hasard...

perso je suis un gros fumeur donc toujours une clop à la main, droite ou gauche.
là, pose des composants et copie du code, avec la clop à droite.
test : que dalle.
beh oui, avec la main occupée en même temps, la paume bouge la souris mais lors du click je ne la touche presque plus donc pas de move (sans compter que c'est une vielle souris à boule qui résiste, grâce aux poussières, à des vents extrêmes ^^)

et même pour un non-fumeur, on peut penser au stylet, au crayon de tablette graphique, à l'écran tactile, etc....

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 févr. 2007 à 20:36
Ouais !

Une question, toutefois :
Comment fais-tu donc, dans ces gestes-là, pour garder enfoncé ton bouton gauche ?
Essaye.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 févr. 2007 à 20:50
ma clop est entre l'index et le majeur, majeur à gauche, annulaire à droite.
un long click de 5 minutes, faut changer la clop de main, avant de préférence ^^
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 févr. 2007 à 21:06
Ouais.....
Tu sais quoi, ?
J'en suis à un peu plus de 2 paquets par jours (de clopes)...
J'ose à peine te dire ....
Il y a des cendres partout... j'en suis forcé, fréquemment, de relever à la pointe d'un couteau (toujours à portée de main) les touches demeurées obstinément enfoncées de mon clavier (qui ne m'a couté que 11,50 euros) et je marche régulièrement sur ma souris (payée 12 euris, quant à elle) tombée à terre dans un geste d'énervement causé par une nouvelle demande d'aide idiote de mon voisin champion de la maladresse. Quand je reviens de son "chantier à la c..", mes doigts sont tellement sales (et si fréquemment sales) qu'il m'est devenu très difficile de lire ce qu'il y a d'écrit sur les touches de mon clavier. Ajoute à celà qu'à toute cette crasse s'ajoute, non moins fréquemment, des "touches" pitoresques de peinture à l'huile (je suis peintre) ...

Conslusion, donc : j'ai payé 3 clopinettes un matériel finalement très bon, non ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 févr. 2007 à 21:30
conclusion, clopes nettes ou pas nettes, tu devrais être bien placé pour savoir que même avec un esprit optimiste (pour ne pas dire naïf), le mousemove ne se déclenchera pas et la souris ne sera attrapée par aucune tâche (contrepétrie  )

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 févr. 2007 à 21:39
Bon !
Ce n'est pas moi qui ai parlé de chattes, hein ?
Bonne nuit à toi, PCPT ! Tu m'as mis de bonne humeur. Merci
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
2 févr. 2007 à 00:07
Entre 2 cigarettes, je pensais à ceci... ce qui ne m'a pas laissé beaucoup de temps...
mais ça défile à un train d'enfer. Si tu veux voir les chiffres défiler, il faut ralentir le processus avec Sleep ou autre ou simplement une longue boucle comme ici.

Le Timer demeure certainement le plus pertinent, par contre.

Private Up As Boolean

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim I As Long
   
    Up = False
    While Not Up
        Text1 = Val(Text1) + 1
        DoEvents
       
        For I = 0 To 10000000 'pour défiler moins rapidement
        Next
    Wend
   
End Sub

Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Up = True
End Sub

MPi
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
2 févr. 2007 à 00:42
usine à gaz pour des fumeurs, normal ^^
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
2 févr. 2007 à 08:30
        For I = 0 To 10000000 'pour défiler moins rapidement
        Next

pas très jojo...

Timer ou API SetTimer, ca serait plus propre, et blindé.

Mais dans ton cas, ne t'embete pas, utilises un Controle UpDown !
Ctrl + T > Microsoft Windows Common Controls-2

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Rejoignez-nous