Page 1 sur 1

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

Posté : lun. 06 juin 2011 16:40
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

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

Posté : lun. 06 juin 2011 18:05
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:

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

Posté : mar. 07 juin 2011 15:31
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

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

Posté : mar. 07 juin 2011 21:08
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:

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

Posté : mer. 08 juin 2011 08:41
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

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

Posté : mer. 08 juin 2011 10:59
par timmalos
N'oubliez pas de passer en résolu si tout est bien dans le meilleur des mondes.

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

Posté : mer. 08 juin 2011 11:26
par pierrotm777
Ce n'est pas encore résolu car je suis en train de me creuser les méninges dessus :D

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

Posté : mer. 08 juin 2011 22:21
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:

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

Posté : jeu. 09 juin 2011 15:56
par pierrotm777
C'est parfait Tlem je vais adapter cela à mon besoin.

Merci :D

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

Posté : ven. 10 juin 2011 20:16
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 .

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

Posté : ven. 10 juin 2011 22:05
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