[R] Tester la durée du clic sur un bouton

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

[R] Tester la durée du clic sur un bouton

#1

Message par pierrotm777 »

Bonjour à tous,

Existe t-il une solution qui permettraiit de tester si l'on appuie longuement sur un bouton.
Le but étant d'avoir deux actions pour un même bouton, une suit à un click, une autre suite à un bouton cliqué et tenu !

Merci par avance de votre aide
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Tester si l'on click longuement sur un bouton

#2

Message par Tlem »

En faisant simple, je dirait que _IsPressed suffit largement.
Faites la détection de l'appui sur la touche donnée et exécutez 'un compteur' qui s'incrémentera ou alors utilisez TimerInit puis une boucle, etc ...
Bref vous avez le choix.

Après en plus poussé, vous avez l'utilisation d'une CallBack telle que GUIRegisterMsg, mais c'est déjà un chouilla plus complexe. :mrgreen:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
legend
Niveau 7
Niveau 7
Messages : 472
Enregistré le : dim. 26 sept. 2010 12:55
Status : Hors ligne

Re: [..] Tester si l'on click longuement sur un bouton

#3

Message par legend »

un bouton n'est pas forcément une touche clavier.
c'est pourquoi je vais poser cette question :)
c'est quoi l’équivalent de _IsPressed si il s'agit d'un bouton de gui.
merci et bonne journée
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Tester si l'on click longuement sur un bouton

#4

Message par Tlem »

_IsPressed fonctionne pour le clavier, mais pour la souris aussi ... :P
Comme pour cliquer sur un bouton, on utilise le clic de souris, il suffit de capturer le temps pendant lequel le clic est appuyé. :mrgreen:

Ceci dit, en utilisant GUIGetMsg(1) (mode avancé), il est possible de capturer les événements :
  • $GUI_EVENT_PRIMARYDOWN
    $GUI_EVENT_PRIMARYUP
    $GUI_EVENT_SECONDARYDOWN
    $GUI_EVENT_SECONDARYUP
Ce qui laisse pas mal de possibilités dans les tests. :mrgreen: :mrgreen:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
SurPriseS
Niveau 6
Niveau 6
Messages : 291
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [..] Tester si l'on click longuement sur un bouton

#5

Message par SurPriseS »

La fonction que j'utilise, c'est moche, mais sa marche...

Code : Tout sélectionner


func _next()

                    
                    
        while 1
            $p = 0  
            For $i = 1 to 15
                If _IsPressed ("01", $dll) Then
                    sleep(10)
                    $p = $p + 1
                EndIf   
            Next 
            if $p = 15 Then
                $current = _BASS_ChannelGetPosition ($MusicHandle, $BASS_POS_BYTE)
                $current = $current  + 500000
                _BASS_ChannelSetPosition ($MusicHandle, $current , $BASS_POS_BYTE + $BASS_MUSIC_POSRESET)
                $m = 1
            Else
                if $m = 0 Then
                    _BASS_ChannelStop ($MusicHandle)
                    send("{DOWN}")
                    _play(1)
                    _play_pause(2)
                    ExitLoop
                Else
                    ExitLoop
                EndIf   
            EndIf   
        WEnd
$m = 0


EndFunc
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Tester si l'on click longuement sur un bouton

#6

Message par timmalos »

N'oubliez pas de passer en résolu si tout est bien dans le meilleur des mondes.
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Tester si l'on click longuement sur un bouton

#7

Message par pierrotm777 »

Ce n'est pas encore résolu car je suis en train de me creuser les méninges dessus :D
Modifié en dernier par pierrotm777 le ven. 10 juin 2011 18:29, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Tester si l'on click longuement sur un bouton

#8

Message par Tlem »

Voici un modèle basé sur ce que j'ai dit :
► Afficher le texte
Ceci dit, si vous devez en plus connaitre l'ID du bouton, cela ce complique. Il faudra rajouter l'appel à une CallBack. :mrgreen:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Tester si l'on click longuement sur un bouton

#9

Message par pierrotm777 »

C'est parfait Tlem je vais adapter cela à mon besoin.

Merci :D
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Tester la durée du clic sur un bouton

#10

Message par pierrotm777 »

Aprés essai, mon besoin est légèrement différent de ce que vous me proposez !

Je souhaiterais en fait que le test se fasse sur la durée d'un bouton tenu et non sur une durée puis la levée du bouton !

J'ai donc tenté cela, mais sans succés!
► Afficher le texte
Avec une action A si le bouton est appuyé puis relaché de suite et une action B si le bouton est maintenu appuyé plus de 2 secondes .
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Tester la durée du clic sur un bouton

#11

Message par pierrotm777 »

Bon , j'ai travaillé un peu le sujet afin de l'adapter à mon type de Gui PNG et voici le résultat:

Cliquez dans les rectangles rouges pour tester un click court ou long.
Je prend comme hypothèse qu'un click long est supérieur à 1 seconde
Fichiers joints
OverlayMenu.zip
(47.88 Kio) Téléchargé 107 fois
Répondre