Author |
Topic: Mouse Button Release (Read 794 times) |
|
ANdre_B
Board Master
Email
Gender:
Posts: 2889
|
|
Mouse Button Release
« on: Nov 25th, 2020, 8:22pm » |
Quote | Modify
|
Dans un dialogue .myf, il y a une méthode "Release" qui s'actionne au moment où on relâche le bouton de la souris. Mais dans un dialogue dynamique (créé par NewDialog), peut-on aussi avoir une activation de quelque chose à ce même moment? L'idée est d'avoir la durée entre le clic et la fin du clic... Merci
|
|
Logged |
André Baeck, de retour en Belgique après 12 ans passés dans le Gard. Windows 11, HA 997e (et précédents)
|
|
|
bubu42
Board Master
Gender:
Posts: 10514
|
|
Re: Mouse Button Release
« Reply #1 on: Nov 25th, 2020, 10:32pm » |
Quote | Modify
|
Autrement dit, entre le Push et le Release, non ?
|
|
offline |
Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
|
|
|
ANdre_B
Board Master
Email
Gender:
Posts: 2889
|
|
Re: Mouse Button Release
« Reply #2 on: Nov 26th, 2020, 4:31am » |
Quote | Modify
|
En effet...
|
|
Logged |
André Baeck, de retour en Belgique après 12 ans passés dans le Gard. Windows 11, HA 997e (et précédents)
|
|
|
bubu42
Board Master
Gender:
Posts: 10514
|
|
Re: Mouse Button Release
« Reply #3 on: Nov 26th, 2020, 10:55am » |
Quote | Modify
|
Alors, peut-être une variable globale initialisée avec le temps T au Push et une soustraction de T au temps T1 du Release, un truc dans ce genre : global T function Push T=Application.TickCount() end function Release print(T-Application.TickCount()) end D'après le manuel, on a une précision au 1/60 de seconde.
|
|
offline |
Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
|
|
|
ANdre_B
Board Master
Email
Gender:
Posts: 2889
|
|
Re: Mouse Button Release
« Reply #4 on: Nov 26th, 2020, 11:10am » |
Quote | Modify
|
Merci Jean-Pierre, Oui, c'est ce que je fais plus ou moins jusqu'à présent avec deux appels successifs, mais comme je suis dans un .mys /NewDialog, ce sont des appels "Dialog.Select()". Et la précision c'est OK, je ne pourrai pas faire la différence entre 10 et 20 soixantièmes, par exemple. D'autre part, j'essaie de déplacer cela à l'intérieur d'un .myf (qui appelle un NewDialog car je dois "dessiner" dynamiquement), et là je remarque ceci (pas encore eu l'occasion de creuser). J'ai des méthodes Push(dialog,item) et Release(id) sur un Button, qui chacune ne font, pour le moment, qu'un print. Tout Release est évidemment précédé d'un Push. Mais rien n'apparaît avant le Release. Comme si le Push aussi n'était activé que lorsqu'on lâche le bouton. Ce n'est pas une simple quesion d'affichage, si je mets un exit() dans le Push, il ne s'exécute qu'au Release. Ce qui ne devrait pas me permettre de mesurer la durée de l'enfoncement du bouton de souris...
|
|
Logged |
André Baeck, de retour en Belgique après 12 ans passés dans le Gard. Windows 11, HA 997e (et précédents)
|
|
|
Daniel Frouvelle
Board Master
WWW | Email
Gender:
Posts: 1610
|
|
Re: Mouse Button Release
« Reply #5 on: Nov 26th, 2020, 11:24am » |
Quote | Modify
|
Bonjour André, pour ma part il y a longtemps que je n'utilise plus les objets "Button", à la place je détecte dans un Idle l'état de la souris avec Application.GetMouseButton() Si tu as besoin je peux t'envoyer un exemple. Amistats, Danièl.
|
|
offline |
|
|
|
ANdre_B
Board Master
Email
Gender:
Posts: 2889
|
|
Re: Mouse Button Release
« Reply #6 on: Nov 26th, 2020, 1:05pm » |
Quote | Modify
|
Merci Daniel, Ca a l'air de marcher dans un premier test. Restera à intégrer cela avec un NewDialog. Update: j'ai pu intégrer cela dans la sorte de "Idle", qui suit Dialog.Select... Je peux afficher les positions 0 1 et 2 des boutons de souris sans devoir activer un item. Merci à tous deux
|
|
Logged |
André Baeck, de retour en Belgique après 12 ans passés dans le Gard. Windows 11, HA 997e (et précédents)
|
|
|
bubu42
Board Master
Gender:
Posts: 10514
|
|
Re: Mouse Button Release
« Reply #7 on: Nov 26th, 2020, 2:32pm » |
Quote | Modify
|
@André : Ah oui, c'est vrai qu'il y a le Dialog.Select() auquel je n'avais pas pensé... @André et Danièl : Je me demande comment fonctionne le Push. Mon premier réflexe avait été de l'utiliser pour lancer une procédure à l'appui sur un bouton mais ça marchait très mal alors qu'avec le Release, c'était plus efficace... Par contre, l'idée d'analyser la souris est beaucoup plus polyvalente. A la limite, on peut même transformer n'importe quel Item d'un dialogue en bouton... Je vais creuser ça. Si Danièl a un exemple, ça serait encore mieux.
|
|
offline |
Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
|
|
|
Daniel Frouvelle
Board Master
WWW | Email
Gender:
Posts: 1610
|
|
Re: Mouse Button Release
« Reply #8 on: Nov 26th, 2020, 7:14pm » |
Quote | Modify
|
Bonsoir Bubu, Quote: A la limite, on peut même transformer n'importe quel Item d'un dialogue en bouton |
| Je dirais même n'importe quelle zone d'un dialogue. Si tu remarques dans la plupart de mes scripts il n'y a aucun item. Je me sers uniquement de la fenêtre du dialogue principal. Pour exemple (le code ci-dessous à coller dans une fenêtre flottante) Je dessine un carré et je repère si j'ai cliqué dans ce carré et combien de temps. Pour cela j'ai besoin d'une variable que j'appelle'Clic'. Au lieu d'un carré, dans mes scripts je dessine un bouton avec Graph.DrawPaletteButton(...) ça a l'air d'un item bouton mais c'est juste un dessin. Il 'prend vie' (change de couleur par ex) si je clique dessus avec la méthode de l'exemple, je le vois si je redessine la palette de façon adéquate. function Init(dialog) Clic=0 T=0 end ------------------------------------------------- function Idle(dialog) x,y=Application.GetMousePosition() if x>50 and x<100 and y>50 and y<100 then if Clic==0 and Application.GetMouseButton()==1 then Clic=1 T=Application.TickCount() dialog.Draw() elseif Clic==1 and Application.GetMouseButton()==0 then Clic=0 print(Application.TickCount()-T) dialog.Draw() end else if Clic>0 then Clic=0 dialog.Draw() end end end ------------------------------------------------- function Draw(dialog) if Clic==1 then Graph.RGBForeColor("AA00AA") else Graph.RGBForeColor("FF0000") end Graph.PaintRect(50,50,100,100) end -------------------------------------------------- Amistats, Danièl.
|
« Last Edit: Nov 26th, 2020, 7:29pm by Daniel Frouvelle » |
offline |
|
|
|
bubu42
Board Master
Gender:
Posts: 10514
|
|
Re: Mouse Button Release
« Reply #9 on: Nov 26th, 2020, 7:30pm » |
Quote | Modify
|
Merci beaucoup pour ces précisions et cet exemple. Je n'avais jamais songé à aller dans cette direction, plus habitué aux routines du Pascal Objet...
|
|
offline |
Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
|
|
|
ANdre_B
Board Master
Email
Gender:
Posts: 2889
|
|
Re: Mouse Button Release
« Reply #10 on: Nov 27th, 2020, 3:38am » |
Quote | Modify
|
J’adapte à cette méthode ce que j’ai déjà écrit. Je peux mesurer le déplacement, le push et le release. Mais ceci est pour une vraie souris. À la fin je veux utiliser un écran tactile. Celui-ci ne va bien sûr pas indiquer la position de la souris; lors du simple balayage, mais je n’en ai pas besoin. Mais lorsq’on touche, c’est comme un click gauche, et un item Button est activé. Par contre, la variable Application.GetMouseButton ne reflète pas les valeurs 1 ou 2 du bouton. Est-ce que quelque chose m’echappe? Une mauvaise simulation Windows? Un manque d’implementation Harmony? Merci de vos avis. Je peux essayer d’etre Plus clair quand je serai sur mon PC, avec un iPhone c’est vraiment fastidieux...
|
« Last Edit: Nov 27th, 2020, 3:48am by ANdre_B » |
Logged |
André Baeck, de retour en Belgique après 12 ans passés dans le Gard. Windows 11, HA 997e (et précédents)
|
|
|
|