Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| presque le double clic | |
| | Auteur | Message |
---|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: presque le double clic Lun 6 Fév 2012 - 13:02 | |
| Bonjour à tous, Bon voilà, je cherche toujours à produire un double clic avec panoramic, mais c'est pas évident. Ci-joint un petit code, qui ne le fait pas à chaque fois, mais ça peut donner des idées à certains pour trouver la solution, qui sait? Moi je commence à caler! Cliquez sur le picture noir. - Code:
-
dim ouiclic,nonclic,clic label souris1,souris2 picture 1:left 1,200:color 1,0,0,0 on_click 1,souris2 timer 2:timer_interval 2,180:on_timer 2,souris1 end souris2: ouiclic=mouse_left_down(1) nonclic=mouse_left_up(1) if (ouiclic=1 and nonclic=0) print "double clic!"; print number_click if number_click<>-1 then return souris1: timer_off 2 ' clic=0 ouiclic=mouse_left_down(1) nonclic=mouse_left_up(1) if (ouiclic=1 and nonclic=0) then clic=clic+1 if clic>0 then print "clic!":clic=0 timer_on 2 end_if return de plus ça me paraît difficile à mettre en oeuvre dans un programme! a + | |
| | | lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Re: presque le double clic Lun 6 Fév 2012 - 13:53 | |
| Bignono, Bonne idée, ton petit programme! Si tu me permets, je l'ai modifié un peu. Mon stratégie, c'est de mettre en route le timer que après le premier click, pour savoir si l'utilisateur fait un deuxième click assez vite. En même temps, les clicks sur l'image sont comptés et réinitialisé quand le cycle du timer est fini. Si a la fin, il y a plus que 1 clic, on a un double click. Sinon, on a un seul clic. De cette manière, tu pourrais même introduire le triple click, lol. Un primeur en informatique! Pour surveiller le programme, j'ai fait du sorte que le nombre de fois qu'on a clické sur l'image est suivi. (Et apparait dans le titre de la fenetre "caption 0") Pour que tu puisse mieux arrègler l'interval du timer, j'ai aussi fait du sorte que "time out" est affiché dans le titre de la fenêtre. Comme ça, tu voit quand on recommence pour peut-être reduire un peu cet interval jusqu'a une durée idéale. - Code:
-
dim clic label souris1,souris2 picture 1:left 1,200:color 1,0,0,0 on_click 1,souris2 timer 2:timer_interval 2,1000:on_timer 2,souris1 end souris2: clic=clic+1 caption 0,str$(clic) timer_on 2 return souris1: caption 0,"time out" timer_off 2 if clic>1 print "double clic!" else print "clic!" end_if clic=0 return
J'espère que c'est utile! Lode PS: comme ça, tu vois aussi combien de clicks sont registrés par panoramic. ça dépends aussi de la configuration de ton ordi. (Dans windows, panneau de configuration, on peut rapprocher les clicks qui doivent faire un double click, ou les éloigner.) | |
| | | exdragon
Nombre de messages : 601 Date d'inscription : 05/01/2012
| | | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: presque le double clic Lun 6 Fév 2012 - 14:51 | |
| Bonne idée | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: presque le double clic Lun 6 Fév 2012 - 16:08 | |
| Bonjour lode, Interressant ta solution, mais c'est plus un triple clic qu'un double! J"essaierai de voir le problème dans la semaine, je suis débordé en ce moment! à + | |
| | | lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Re: presque le double clic Lun 6 Fév 2012 - 17:01 | |
| - bignono a écrit:
- Bonjour lode,
Interressant ta solution, mais c'est plus un triple clic qu'un double! J"essaierai de voir le problème dans la semaine, je suis débordé en ce moment! à + Pour pas avoir un triple, tu réduit le valeur de l'interval qui dans ma version est 1000. C'est a toi de chercher les meilleurs paramètres. Lode. | |
| | | exdragon
Nombre de messages : 601 Date d'inscription : 05/01/2012
| Sujet: Re: presque le double clic Lun 6 Fév 2012 - 17:20 | |
| ça sert à rien un triple^^ sauf au tiercé et au bar...
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: presque le double clic Lun 6 Fév 2012 - 22:40 | |
| Par contre, je ne comprends pas pourquoi il faut triple cliquer, dans la logique du programme, un simple double clic devrait fonctionner ... | |
| | | lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Re: presque le double clic Lun 6 Fév 2012 - 23:39 | |
| Détecter le triple click est possible, mais c'était plutot une blague car effectivement probablement pas nécessaire. En tout cas: ça détecte quand il y a plus que 1 seul click. Quand l'interval est réduit, ça sera limité a 2 clicks automatiquement, mais pas vraiment obligatoire. Dans ma code, plus que 1 click (2, 3, 4) produit le message "double click". A changer selon gout! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: presque le double clic Lun 6 Fév 2012 - 23:57 | |
| En fait pour avoir double clic, avec le programme, je pense que ça fait pareil pour d'autres, mais je dois cliquer 3 fois au lieu de 2 alors que dans la logique, 2 devraient en effet suffir | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: presque le double clic Mar 7 Fév 2012 - 1:14 | |
| Bonsoir en fait cela ne va pas être aussi simple que cela car si l'appui sur le bouton gauche est très bref, il n'y a pas d'événement CLICK.... Amusez vous à double cliquer sur la boite noire, vous verrez que le compteur (caption 0) ne s'incremente pas forcement... - Code:
-
label clk1 DIM bClick:bClick=0 picture 1:left 1,200:color 1,0,0,0 on_click 1,clk1 END
clk1: bClick=bClick+1 CAPTION 0,str$(bClick) return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: presque le double clic Mar 7 Fév 2012 - 1:48 | |
| C'est tout l'objet de ma dll clickintercept.dll. Je ne voudrais pas être pessimiste, mais même Windows ne fournit pas un moyen certain de discerner un double-clic. Les auteurs même de Windows disent qu'il est impossible de savoir si l'utilisateur veut faire un double-clic ou deux ou plusieurs simple clics. En effet, nul n'est préscient. Voilà pourquoi Windows ne fournit que l'évènement "clic gauche", "clic droit", etc. C'est à l'utilisateur de compter les clics et de mesurer le temps entre chaque clic. Il y a, dans les profondeurs du registre, une valeur qui peut servir de référence pour déterminer le temps maximal entre deux clics pour que ceux-ci soient considérés comme un seul double-clic. En plus, il faut s'assurer que les deux clics soient détectés très "proches" l'un de l'autre, dans un carré de 5 pixels, par exemple. En effet, la souris peut bouger entre les deux clics, mais on peut aussi imaginer deux clics sur une souris se déplaçant très rapidement, et il ne peut alors y avoir double_clic, même si l'intervalle de temps est court ! C'est pourquoi au niveau de ma dll, j'ai mis un écart arbitraire de 500 milli-secondes. Tout second clic intervenant moins de 500 ms après un premier clic représente un évènement "double-clic" aue je signale comme tel, et c'est alors le programme application qui est chargé d'éliminer le premier simple clic pour ne retenir que le double clic. C'est d'ailleurs ce que font les utilitaires habituels, les langages classiques comme Visual Basic, Delphi etc: ils interceptent ces messages et les réinterprètent de cette façon. Donc, à chacun de faire sa cuisine, mais il faut bien veiller à déclencher un évènement "double-clic" lors du second reçu brièvement apèrs le premier. Et comment déclencher un tel évènement alors que Panoramic ne connaît pas cela ? Je vous livre l'astuce qie j'utilise dans mon programme de démo pour ma dll: créer un EDIT invisible avec un ON_CHANGE. Lorsqu'on décide d'avoir un double-clic, il suffit de changer le contenu de cet EDIT et l'évènement de déclenche. On peut, par exemple, lui mettre les coordonnées du clic. Exemple de code: - Code:
-
label double_clic dim double_clic% : double_clic% = 22 : ' EDIT fictif pour générer l'évènement dim obj% : obj% = 14 : ' numéro d'objet sur lequel on veut détecter le double-clic edit double_clic% : hide double_clic% : on_change double_clic%, double_clic ... double_clic: ' ici, on sait qu'un a un double-clic, avec ces coordonnées dans text$(double_clic%) ... return
... ' ici, on décide qu'on a reçu un double-clic: text double_clic%,str$(mouse_x_left_down(obj%))+","+str$(mouse_y_left_down(obj%)) ' c'est tout ce qu'il y a à faire ici !
Voilà. J'espère que je n'ai découragé personne - prenez ça plutôt comme nouvelle piste de réflexion sur le sujet. | |
| | | Contenu sponsorisé
| Sujet: Re: presque le double clic | |
| |
| | | | presque le double clic | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |