| On_Click | |
|
|
Auteur | Message |
---|
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: On_Click Lun 2 Aoû 2010 - 17:45 | |
| La commande ON_CLICK N, L branche le programme au label L sur un clic souris, très bien, mais la documentation ne précise pas (je sais, c'est implicite) que c'est sur un clic du bouton GAUCHE. Un clic sur le bouton DROIT est purement et simplement ignoré.
Ce qui aurait été bien, amha, c'est que le branchement se fasse indifféremment sur les deux clics gauche ou droite, quitte dans le sous-programme à tester lequel c'est, au besoin.
Actuellement je ne vois pas le moyen, en attente d'événement, de réagir sur un clic droit de la souris sur un objet.
Une remarque de pure forme concernant la doc ON_CLICK (rubrique ACTION): il est écrit ... assigne un label ... à partir de laquelle... | |
|
| |
Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 18:00 | |
| Effectivement, le clic droit n'est pas géré comme évènement par Panoramic. La fonction mouse_right_down() marche bien pour savoir si le bouton droit est enfoncé au moment où on appelle cette fonction, mais aucun évènement ne sera déclenché.
Cela rejoint une demande que j'avais faite il y a un moment pour avoir d'autres évènements, tels que on_mouse_in, on_mouse_out etc. Laissons le temps au temps: Jack nous a expliqué clairement ce qu'il prévoit, et je m'en contente largement.
| |
|
| |
Invité Invité
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 18:05 | |
| La seule méthode que j'ai trouvé est l'utilisation du TIMER.
regarde la méthode que j'ai utilisé pour faire un menu POP_UP. ça n'a pas la facilité de on_click, mais en cas de besoin, et en attendant l'arrivé (éventuelle) d'un click roit, ça peut dépanner.
Je ne contrôle pas, je suis très mal installé |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 18:22 | |
| Le timer c'est une idée, mais c'est bien plus lourd à gérer que le on_click. Disons que c'est un pis-aller, si on en a vraiment besoin,parce qu'on ne peut pas faire autrement. Je n'ai pas été voir, mais je suppose que tu as un timer qui tourne en permanence et au rebouclage il faut regarder si par hasard on n'a pas cliqué du droit entre temps. Et il faut qu'il tourne assez vite si on veut que ce soit vivable. Si c'est ça, je me passerai du clic droit pour le moment...
Mais merci quand même cosmos, au moins c'est une solution. | |
|
| |
Invité Invité
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 19:08 | |
| Je suis désolé mais tout est faut. Je vois que tu n'as rien vu sur tout ce que j'ai mis à propos du timer. Avec ON_TIMER tu créés un automatisme vu en quelque sorte il créé une interruption, avec l'interval que tu veux, comme le fait ON_CLICK d'ailleurs, sauf que le codage a été fait. Le timer contrôle régulièrement les opérations qui ont étés programmés. J'ai intégré un programme de menu pop_up avec celui-ci, et c'est lui qui réagit lorsque l'on fait un clic droit. A toi de voir, je me suis donné du mal pour expliquer dans le forum je ne peux pas faire plus. Si Klaus qui a compris je crois peut mieux faire que moi dans les explications, il sera le bien venu (et je crois qu'il le fera en français ) A toi de voir. Je viens de jeter un coup d'oeil sur le code, en fin de compte cela se résume à ceci après avoir mis en route le timer (pour faire un menu et un sous menu c'est évidemment plus complexe) - Code:
-
test_mouse_droit: ' parcourt les objets qui ont un menu pop_up for mouse%=1 to s_menu_fin% :' 2 à modifier selon le nb d'objets if mouse_right_down(objet_s_menu%( mouse%))=1 then exit_for next mouse% if mouse% <= s_menu_fin% then gosub s_menu_reponse return A toi de savoir quoi faire dans s_menu_reponse (le label ici) |
|
| |
Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 19:21 | |
| Tu as raison, Cosmos70. La routine on_timer est à lancer une fois, puis on l'oublie. Il ne faut surtout pas faire de boucle de surveillance.
Le timer lance une petite routine comme la tienne à intervalles réguliers, (tous les 10 ms par exemple). Cette routine vérifie alors mouse_right_down() pour les objets concernés, et si la valeur retournée est 1, alors elle peut appeler une routine spéciale pour le clic droit de cet objet, exactement comme si on l'avait appelé par un évènement on_right_click de cet objet.
A partir de ce moment-là, tout se déroule normalement. Ne pas oublier, si un veut déclencher un traitement un peu plus long, de désactiver le timer et de le réactiver après.
| |
|
| |
Jean Claude
Nombre de messages : 5948 Age : 69 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 20:45 | |
| Mon idée sur la question,
Un On_Click conduit vers un Label et si dans ce Label on introduit MRU=MOUSE_RIGHT_UP(N) ensuite IF MRU=1 then "fait ci" ELSE "fait çà".
Je nai pas éssayer, y faut voir.
A+ | |
|
| |
Tecking
Nombre de messages : 114 Age : 35 Localisation : Toulouse Date d'inscription : 30/05/2010
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 20:52 | |
| ce serait bien de les différencier non? Comme un on_Click_left et on_Click_right. | |
|
| |
Jean Claude
Nombre de messages : 5948 Age : 69 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 20:57 | |
| Oui, çà c'est le mieux, mais c'est encore du boulot pour Jack. | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 21:10 | |
| Oui mais Jean Claude, comme je te le disais ailleurs, le On_Click est inutilisable puisqu'il ne réagit qu'au clic gauche, pas au clic droit.
Ne te fâche pas cosmos, mais pour le timer c'est bien ce que j'avais cru comprendre: ça lance un programme qui se réactive lui-même par interruption toutes les n millisecondes (10 par exemple comme dit Klaus) pour voir si un clic droit a été effectué. C'est quand même bien moins pratique que le on_click qui amène directement sur la routine concernée par l'objet (si clic gauche !), et puis ça doit charger la bécane ce programme qui se réactive périodiquement dans un délai très court...
Enfin, bon, j'admets que c'est quand même une solution au problème, la seule sans doute, mais personnellement j'aurais préféré que le on_click réagisse sur les deux clics, à charge pour le programmeur, s'il le désire, de tester dans sa routine de traitement si c'est clic droit ou clic gauche (ou de ne pas tester s'il s'en fiche, ce qui serait sans doute le cas général)). Ce serait logique, il y a une action prévue pour le clic gauche et rien pour le clic droit (sauf un test, mais encore faut-il y arriver). | |
|
| |
Tecking
Nombre de messages : 114 Age : 35 Localisation : Toulouse Date d'inscription : 30/05/2010
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 21:19 | |
| Non rien je vais l'envoyer en privé | |
|
| |
Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 21:28 | |
| J'espère exprimer le sentiment commun à nous tous: ce qui nous anime, c'est la passion de la programmation en général et pour Panoramic en particulier. Et si cela peut se passer avec une certaine dose d'humour, tant mieux. Il ne saurait en aucun cas être question de concurrence entre qui que ce soit, et chacun devrait avoir ls possibilité d'exprimer son opinion concernant les codes et solutions proposés. Et Nous allons tous nous efforcer de laisser certaines velléités de côté, car elles sont hors de sujet et hors de propos dans ce cadre. Pour des choses plus personnelles, je pense que la messagerie personnelle fera l'affaire.
Maintenant, pour revenir au coeur du problème, j'avais exploré l'idée de Jean-Claude, mais sans succès. Comme l'a très bien diagnistiqué JL35, le click droit ne réagit tout simplement pas - il ne déclenche aucun évènement. Donc, dans l'état actuel des choses, la solution "timer" de Cosmos70 est la seule, et réflexion faite, assez facile à mettre en place. En attendant Jack... | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 21:33 | |
| Concernant ta remarque 'philosophique', c'est tellement évident qu'on ne voit pas trop pourquoi il faut le préciser ! Mais, comme on dit: ça va sans dire, mais ça va encore mieux en le disant ! | |
|
| |
Tecking
Nombre de messages : 114 Age : 35 Localisation : Toulouse Date d'inscription : 30/05/2010
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 21:44 | |
| @JL35 Il l'a dit parce que j'ai mis quelque chose de privé en publique, je m'en excuse et je m'en veux... @Tous Il y a un fond de vérité quand j'ai parlé de façon de coder. Chaque uns fait ce qu'il veux avec son code certes mais n'est-ce pas plus joli de présenter un code lisible, avec des groupements de lignes par étapes et 'TABs' dans les structures et les sous programmes? Bref ne le prenez pas mal, je ne dis pas ça méchamment, et moi-même je ne suis pas le codeur parfait (loin de la ). | |
|
| |
Invité Invité
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 22:50 | |
| Je regarde ce qui a été rajouté. Une chose toute fois, je le rappelle, il faut savoir qu'en cas de problème, d'erreur, avec le timer, celui-ci étant une instruction automatique en arrière plan, Il faut bien avoir présent que le programme re-boucle et que si il y a erreur, elle se répète. De plus le numéro de ligne est inconnu. Voici comment je procède pour déterminer une erreur: Déjà je me sers de l'instruction ON_ERROR_GOTO,label ensuite au départ j'ouvre un fichier en écriture - Code:
-
file_open_write 10,fichier$
régulièrement lorsque je suis dans une zone à problème, ou à tester, je mets: - Code:
-
file_writeln 10,"ligne: xxx" :' le N° de la ligne ' on peut éventuellement rajouter la valeur et le nom d'une variable Dans le branchement d'erreur, au label choisi: - Code:
-
erreur: file_close 10 terminate Lorsqu'il y a une erreur, il suffit de regarder le fichier créé, vu que le programme s'est fermé, et à partir de là on comprend où se situe l'erreur. JL35, je pense avoir tout dit. Tu es libre d'utiliser ou pas. Si tu as la solution mais que tu ne l'utilise pas, certainement que celà n'est pas nécessaire. |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 22:59 | |
| Ben oui, c'est astucieux, c'est une façon de 'tracer' le programme, parce que c'est assez déprimant de ne pas savoir où l'erreur se produit. Dommage dans ton système qu'on ne puisse pas mettre dynamiquement le numéro de la ligne, parce que si on déplace la ligne il faut penser à modifier le xxx | |
|
| |
Invité Invité
| Sujet: Re: On_Click Lun 2 Aoû 2010 - 23:08 | |
| Jack m'avait promis une variable système pour connaitre le numéro de la ligne. Il a d'autre chat à fouetter, je fais au mieux. La porte est ouverte pour trouver une meilleur solution. |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Click Mar 3 Aoû 2010 - 14:28 | |
| Moi ça ne me concerne pas, je ne fais jamais d'erreurs, mais pour les autres, évidemment... | |
|
| |
jjn4
Nombre de messages : 2690 Date d'inscription : 13/09/2009
| Sujet: +++ Mer 4 Aoû 2010 - 12:38 | |
| Eh oui, « l'enfer, c'est les autres »... | |
|
| |
Jean Claude
Nombre de messages : 5948 Age : 69 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: On_Click Mer 4 Aoû 2010 - 12:52 | |
| | |
|
| |
jjn4
Nombre de messages : 2690 Date d'inscription : 13/09/2009
| Sujet: +++ Mer 4 Aoû 2010 - 13:24 | |
| Et donc, le paradis, c'est logiquement soi. J'en déduit que JL35 est un saint ! Saint35 ! | |
|
| |
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: On_Click Mer 4 Aoû 2010 - 14:17 | |
| J'ai déjà atteint la béatitude... pour le reste... | |
|
| |
Contenu sponsorisé
| Sujet: Re: On_Click | |
| |
|
| |
| On_Click | |
|