FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» select intégrés
ON_CLICK (clic droit) Emptypar jjn4 Hier à 18:33

» Aide de PANORAMIC
ON_CLICK (clic droit) Emptypar leclode Hier à 18:23

» PANORAMIC V 1
ON_CLICK (clic droit) Emptypar Klaus Hier à 9:53

» Je teste PANORAMIC V 1 beta 1
ON_CLICK (clic droit) Emptypar Klaus Hier à 9:52

» bouton dans autre form que 0
ON_CLICK (clic droit) Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
ON_CLICK (clic droit) Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
ON_CLICK (clic droit) Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
ON_CLICK (clic droit) Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
ON_CLICK (clic droit) Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
ON_CLICK (clic droit) Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
ON_CLICK (clic droit) Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
ON_CLICK (clic droit) Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
ON_CLICK (clic droit) Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
ON_CLICK (clic droit) Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
ON_CLICK (clic droit) Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -21%
LEGO® Icons 10329 Les Plantes Miniatures, ...
Voir le deal
39.59 €

 

 ON_CLICK (clic droit)

Aller en bas 
5 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

ON_CLICK (clic droit) Empty
MessageSujet: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 14:55

J'ai déjà dû en parler plusieurs fois au fil des ans, ce n'est pas vital bien sûr, mais ça me gêne:
le ON_CLICK ne réagit que sur le clic gauche, impossible de déclencher une action sur un clic droit (avec un timer ? non, merci), qui peut pourtant être bien pratique.

J'aurais bien aimé:
Soit une commande spéciale On_Click_Right
Soit, plus simple, une réaction indifférenciée du On_Click sur les clics gauche ET droit, à charge pour le programmeur, s'il le souhaite, de faire la différence, ce qui serait facile.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 16:40

En attendant que Jack gère le clic droit séparément, tu peux le faire par KGF.dll. J'ai des fonctions qui peuvent discerner clic gauche et droit et réagir par rapport à cela.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html En ligne
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 17:03

Merci Klaus, je sais bien, mais il faut charger la dll, alors qu'il me semble que ce serait bien simple pour panoramic, sans instruction supplémentaire, de réagir indifféremment aux deux clics, et après dans la routine il est facile de différencier, si on le désire (MOUSE_LEFT_DOWN et MOUSE_RIGHT_DOWN).
Il y a déjà eu une discussion là-dessus: https://panoramic.1fr1.net/t1851-supplique-pour-un-clic-droit?highlight=clic+droit

Et puis, même avec la dll, est-ce qu'on peut programmer un événement comme le clic sur un objet, c'est à dire déclencher une routine au moment du clic  (je ne parle pas de Timers, trop contraignants) ?
Ça voudrait bien dire qu'il y a un élément en surveillance permanente capable de réagir immédiatement au clic droit (ou gauche), et ça c'est du domaine du traitement des interruptions par panoramic, à ma connaissance la dll ne fait pas ça.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 17:14

Oui. Avec la DLL, tu n'as pas besoin d'un timer pour intercepter les clics droits ou gauches. Le principe est le suivant: tu déclares un EDIT (caché par HIDE) avec un évènement ON_CHANGE. Puis, tu utilises le handle de cet EDIT lors de la définition de l'interception du clic par la DLL. Et la DLL va charger une valeur particulière dans cet EDIT lorsqu'elle intercepte un clic gauche ou droit (ou double ou évènement roulette, selon ce que tu configures). Cette valeur permet d'identifier l'objet cliqué et le type de clic. Donc, tu utilises la routine ON_CHANGE de cet EDIT comme si c'était une routine ON_CLICK de l'objet Panoramic, et tu péux différencier clic gauche et droit par le contenu du EDIT. Regarde la doc - c'est assez bien expliqué.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html En ligne
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 17:27

Effectivement, j'étais en train de regarder ça, mais ça demande quelques tests avant de comprendre la mécanique !
L'exemple du ClickSetHook me troublait un peu:
Code:
dim res%, hnd%, hndpos%
memo 10 : hnd% = handle(10)
edit 10 : hndpos% = handle(10) : hide 10
' intercepter les évènements sur le mémo et signaler les coordonnées
res% = dll_call2("ClickSetHook",hnd%,hndpos%)
avec les deux objets avec le même numéro... idem pour le ClickClearHook (les joies du copier coller).

Je n'ai pas compris grand chose, mais je n'arrive pas à faire réagir sur le clic droit, rien du tout:
Code:
DIM hm%, he%, hl%, hp%, i%, j%, res%

DLL_ON "C:\PANORAMIC\KLAUS\DLLs\KGF.dll"

MEMO 10: color 10,255,0,0: on_click 10,clic
ITEM_ADD 10,"MEMO"
PICTURE 11: TOP 11,TOP(10)+HEIGHT(10): LEFT 11,50: COLOR 11,0,255,0
LIST 12: TOP 12,TOP(11)+HEIGHT(11): COLOR 12,255,255,0: ON_CLICK 12,clic
ITEM_ADD 12,"LIST"

EDIT 1000: HIDE 1000: ON_CHANGE 1000,Chg
he% = HANDLE(1000)
hm% = HANDLE(10)
hp% = HANDLE_CANVAS(11)
hl% = HANDLE(12)
res% = DLL_CALL2("ClickSetHook",hp%,hl%)
END

clic:
IF CLICKED(10)=1
    MESSAGE "Clic gauche sur MEMO"
ELSE
    MESSAGE "clic gauche sur LIST"
END_IF
RETURN

Chg:
MESSAGE TEXT$(1000)
RETURN

SAUF: bizarrement le clic droit sur le Memo m'affiche un menu, mais ça doit être windows:
...
Coller
Lecture de droite à gauche
Afficher les caractères de contrôle Unicode
Insérer un caractère de contrôle Unicode
Ouvrir l'Éditeur IME...  scratch
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 17:58

Oups... problème de doc ! Je vais corriger cela.

En attendant, voici comment la distinction entre click gauche et droit sur un MEMO doit se faire:
Code:
label clicgauche, clicdroit

dim res%, hnd%, hndpos%, hndclic%

dll_on "KGF.dll"

memo 1 : hnd% = handle(1)                   : ' on veut intercepter les clics sur ce mémo
  on_click 1,clicgauche
edit 10 : hndpos% = handle(10) : hide 10    : ' cet EDIT recevra les informations
button 11 : hndclic% = handle(11) : hide 11 : ' ce BUTTON sera "cliqué" par l'évènement détecté
  on_click 11,clicdroit
  
' intercepter les évènements sur le mémo et signaler les coordonnées
res% = dll_call2("ClickSetHook",hnd%,hndpos%)
' intercepter le clic droit (typ%=3)
res% = dll_call2("ClickSetLink",hndclic%,3)

end

clicgauche:
       message "clic gauche"
return
clicdroit:
       message "clic droit"
return


Pas de timer. Ca marche comme n'importe quel ON_xxx de Panoramic.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html En ligne
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 18:08

D'accord, comme ça ça marche.
Mais ce n'est quand même pas simple comme bonjour (enfin, comme On_Click...)
Il faut répéter la procédure pour tout objet susceptible d'être cliqué.

Merci en tout cas Klaus pour les explications.

En tout cas ce n'est quand même pas très clair dans mon esprit: ce Button (fictif ?) qui réagit quand on clique droit dans le Memo... quel rapport entre les deux ?
Il faut associer (ClickSetLink) un bouton fictif à chaque objet susceptible d'être cliqué ?
Est-ce que ce système marche s'il y a plusieurs objets à prendre en considération (à surveiller), par exemple un deuxième Memo ? ---> OUI j'ai essayé, ça marche, mais il faut faire l'opération pour chaque objet à surveiller.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 18:59

En effet. Et c'est encore plus restrictif: pour le moment, on ne peut faire une interception de clic droit sur un objet que pour un seul objet, pas sur plusieurs.

On peut obtenir le même effet avec la partie "rectangle" (deux autres fonctions de ce groupe). Mais c'est pareil: ça s'adresse à un seul objet, sur lequel on peut définir plusieurs zones "sensibles" pour lesquelles on surveille l'entrée et la sortie du curseur pour chaque zone.

Si tu veux gérer le cric droit sur plusieurs objets, je peux faire évoluer ces fonctions, sans difficulté majeure.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html En ligne
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 20:35

Mais non Klaus, il semble que ça marche très bien sur au moins deux objets, je modifie un peu ton exemple:
Code:
label clicgauche, clicdroit, clicdroit2

dim i%, res%, hm1%, hm2%, hndpos%, hnd1%, hnd2%

DLL_ON "C:\PANORAMIC\KLAUS\DLLs\KGF.dll"

memo 1 : color 1,255,0,0: hm1% = handle(1): ' on veut intercepter les clics sur ce mémo
  on_click 1,clicgauche
memo 2: left 2,300: color 2,0,255,0: hm2% = handle(2)
  on_click 2,clicgauche
edit 10 : hndpos% = handle(10) : hide 10: ' cet EDIT recevra les informations
button 11 : hnd1% = handle(11) : hide 11: ' ce BUTTON sera "cliqué" par l'évènement détecté
  on_click 11,clicdroit
button 12 : hnd2% = handle(12) : hide 12: ' ce BUTTON sera "cliqué" par l'évènement détecté
  on_click 12,clicdroit2

' intercepter les évènements sur le mémo 1 et signaler les coordonnées
res% = dll_call2("ClickSetHook",hm1%,hndpos%)
' intercepter le clic droit (typ%=3)
res% = dll_call2("ClickSetLink",hnd1%,3)
' intercepter les évènements sur le mémo 2 et signaler les coordonnées
res% = dll_call2("ClickSetHook",hm2%,hndpos%)
' intercepter le clic droit (typ%=3)
res% = dll_call2("ClickSetLink",hnd2%,3)
end
' ========================
clicgauche:
      i% = number_click
      message "clic gauche sur memo "+str$(i%)
return
clicdroit:
      message "clic droit sur memo 1, xy=  "+TEXT$(10)
return
clicdroit2:
      message "clic droit memo 2, xy=  "+TEXT$(10)
return
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 20:45

Bien vu, JL35 ! De cette manière, ça marche en multi-élément. Bravo !

Je vais quand-même étudier l'extension du principe à un nombre non limité d'objets, avec un seul bouton caché à cliquer. Ca me semble plus réaliste pour des réalisations plus complexes.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html En ligne
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 20:58

Et moi je suis en train d'étudier une sub qui ferait tout ça automatiquement, à appeler pour chaque objet concerné...
Quelque chose comme ça:
Code:
label clicgauche, clicdroit
dim i%, res%, hm1%, hm2%, hndpos%, hnd1%, hnd2%
DLL_ON "C:\PANORAMIC\KLAUS\DLLs\KGF.dll"

memo 1 : color 1,255,0,0: on_click 1,clicgauche
button 11 : hide 11: on_click 11,clicdroit
Clic_Droit(1,11): ' activation de la fonction surveillance clic droit
memo 2: left 2,300: color 2,0,255,0: on_click 2,clicgauche
button 12 : hnd2% = handle(12) : hide 12: on_click 12,clicdroit
Clic_Droit(2,12): ' activation de la fonction surveillance clic droit
end
' ========================
clicgauche:
i% = number_click
message "clic gauche sur memo "+str$(i%)
return

clicdroit:
i% = number_click
IF i% = 11
       message "clic droit sur memo 1, xy=  "+TEXT$(nedi%)
ELSE
       message "clic droit sur memo 2, xy=  "+TEXT$(nedi%)
END_IF
return
' =========================
SUB Clic_Droit(obj%,but%)
' Interception du clic droit sur l'objet obj%
' Un BUTTON but% caché est associé à cet objet,
' avec ON_CLICK but%,[Routine de traitement du clic droit]
DIM_LOCAL hobj%,hbut%,hedi%,res%
IF VARIABLE("nedi%") = 0
    DIM nedi%
    nedi%=2000: WHILE OBJECT_EXISTS(nedi%)=1: nedi%=nedi%+1: END_WHILE
    EDIT nedi%: HIDE nedi%
END_IF
' intercepter les évènements sur l'objet obj% et signaler les coordonnées
hobj% = HANDLE(obj%): hbut% = HANDLE(but%): hedi% = HANDLE(nedi%)
res% = dll_call2("ClickSetHook",hobj%,hedi%)
' intercepter le clic droit (typ%=3)
res% = dll_call2("ClickSetLink",hbut%,3)
END_SUB
J'aurais bien voulu me débarrasser du Button associé, mais pas possible, à cause du On_Click.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 21:50

J'ai eu une idée de génie pour me passer des boutons fictifs:
Code:
LABEL clic
DIM i%
DLL_ON "C:\PANORAMIC\KLAUS\DLLs\KGF.dll"

MEMO 1 : color 1,255,0,0: on_click 1,clic
Clic_Droit(1): ' activation de la fonction clic droit
  
MEMO 2: left 2,300: color 2,0,255,0: on_click 2,clic
Clic_Droit(2): ' activation de la fonction clic droit
END
' ====================================================================
clic:
i% = NUMBER_CLICK
IF MOUSE_LEFT_DOWN(i%) = 1
    MESSAGE "clic gauche sur memo "+STR$(i%)
ELSE
    MESSAGE "clic droit sur memo "+STR$(i%)+" xy=  "+TEXT$(nedi%)
END_IF
RETURN
' ===================================================================
SUB Clic_Droit(obj%)
' Interception du clic droit sur l'objet obj%
DIM_LOCAL hobj%,hedi%,res%
IF VARIABLE("nedi%") = 0
    DIM nedi%
    nedi%=2000: WHILE OBJECT_EXISTS(nedi%)=1: nedi%=nedi%+1: END_WHILE
    EDIT nedi%: HIDE nedi%
END_IF
hobj% = HANDLE(obj%): hedi% = HANDLE(nedi%)
res% = dll_call2("ClickSetHook",hobj%,hedi%)
' intercepter le clic droit (typ%=3)
res% = dll_call2("ClickSetLink",hobj%,3)
END_SUB
HÉLAS ! ça ne marche pas, et je ne comprends pas pourquoi.
En effet, dans les deux cas clic gauche ou droit je vais bien dans la même routine, où, idée géniale, je teste MOUSE_LEFT_DOWN() pour voir quel est le bouton cliqué.
Quel que soit le bouton, ça me répond toujours le bouton gauche, je n'y comprends rien... scratch
Comment différencier les deux cas ?

J'ai une solution simple, je teste le texte renvoyé, s'il n'y a rien c'est un clic gauche, sinon ce sont les coordonnées du clic droit.
Donc plus de bouton annexe, seulement l'objet concerné:
Code:
LABEL clic
DIM i%
DLL_ON "C:\PANORAMIC\KLAUS\DLLs\KGF.dll"

MEMO 1 : color 1,255,0,0: on_click 1,clic
Clic_Droit(1): ' activation de la fonction clic droit
  
MEMO 2: left 2,300: color 2,0,255,0: on_click 2,clic
Clic_Droit(2): ' activation de la fonction clic droit
END
' ====================================================================
clic:
i% = NUMBER_CLICK
IF TEXT$(nedi%) = ""
    MESSAGE "clic gauche sur memo "+STR$(i%)
ELSE
    MESSAGE "clic droit sur memo "+STR$(i%)+" xy=  "+TEXT$(nedi%)
END_IF
TEXT nedi%,""
RETURN
' ===================================================================
SUB Clic_Droit(obj%)
' Interception du clic droit sur l'objet obj%
DIM_LOCAL hobj%,hedi%,res%
IF VARIABLE("nedi%") = 0
    DIM nedi%
    nedi%=2000: WHILE OBJECT_EXISTS(nedi%)=1: nedi%=nedi%+1: END_WHILE
    EDIT nedi%: HIDE nedi%
END_IF
hobj% = HANDLE(obj%): hedi% = HANDLE(nedi%)
res% = dll_call2("ClickSetHook",hobj%,hedi%)
' intercepter le clic droit (typ%=3)
res% = dll_call2("ClickSetLink",hobj%,3)
END_SUB
Est-ce que ça te paraît correct Klaus ?
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 22:39

Très puissant, JL35 ! Faudra que j'étudie ça de près. Et il faudra que je vois comment ça fonctionne avec d'autres types d'évènements de souris... Mais c'est bluffant !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html En ligne
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyJeu 13 Nov 2014 - 22:59

N'exagère pas, c'est toi qui as fait tout le boulot !
Mais je ne suis pas mécontent de moi quand même, ça me permettra de patienter en attendant que Jack intègre le fonction dans le On_Click. Je sais qu'il a d'autres chats à fouetter en ce moment, avec l'intégration sous Android. Il paraît même qu'il est parfois pris par une activité professionnelle ? Very Happy
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyVen 14 Nov 2014 - 14:58

J'ai repris ces fonctions et j'en ai modifié légèrement le fonctionnement. Cela se traduit par une amélioration de l'information retournée dans l'objet EDIT associé à l'interception. Aucune modification dans le format d'appel. La documentation a été actualisée.

J'ai appliqué cela à ton exemple. Et j'y ai ajouté la reconnaissance du double clic. On peut donc maintenant reconnaître, sur chacun ds objets, le simple clic gauche, le simple clic droit et de double clic gauche:
Code:
DIM i%, j%
DLL_ON "KGF.dll"
label clic

MEMO 1 : color 1,255,0,0: ' on_click 1,clic
Clic_Droit(1): ' activation de la fonction clic droit

MEMO 2: left 2,300: color 2,0,255,0: ' on_click 2,clic
Clic_Droit(2): ' activation de la fonction clic droit
END
' ====================================================================
clic:
caption 0,text$(nedi%)
i% = instr(text$(nedi%),"=")-1
j% = val(left$(text$(nedi%),i%))
if j%=handle(1) then i% = 1
if j%=handle(2) then i% = 2
IF instr(TEXT$(nedi%),"=01")>0 then MESSAGE "clic gauche sur memo "+STR$(i%)+" hnd=id:x,y=  "+TEXT$(nedi%)
IF instr(TEXT$(nedi%),"=02")>0 then MESSAGE "double clic gauche sur memo "+STR$(i%)+" hnd=id:x,y=  "+TEXT$(nedi%)
IF instr(TEXT$(nedi%),"=03")>0 then MESSAGE "clic droit sur memo "+STR$(i%)+" hnd=id:x,y=  "+TEXT$(nedi%)
off_change nedi% : TEXT nedi%,"" : on_change nedi%,clic
RETURN
' ===================================================================
SUB Clic_Droit(obj%)
' Interception du clic droit sur l'objet obj%
DIM_LOCAL hobj%,hedi%,res%
IF VARIABLE("nedi%") = 0
    DIM nedi%
    nedi%=2000: WHILE OBJECT_EXISTS(nedi%)=1: nedi%=nedi%+1: END_WHILE
    EDIT nedi%: HIDE nedi% : on_change nedi%,clic
END_IF
hobj% = HANDLE(obj%): hedi% = HANDLE(nedi%)
res% = dll_call2("ClickSetHook",hobj%,hedi%)
' intercepter le clic droit (typ%=3)
res% = dll_call2("ClickSetLink",hobj%,1)
res% = dll_call2("ClickSetLink",hobj%,2)
res% = dll_call2("ClickSetLink",hobj%,3)
END_SUB

C'est pas beau, ça ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html En ligne
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyVen 14 Nov 2014 - 17:25

Non, c'est pas beau, c'est magnifique !
Ça ouvre des horizons...

Je me mets tout ça sous le coude, à portée de main, merci Klaus, tu es le meilleur.

Une question: le système ne marche pas pour des clics sur certains objets, par exemple un picture, j'ai essayé de mettre le Handle_Canvas() au lieu de Handle() mais ça ne marche pas.
C'est juste une question théorique, mais...
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyVen 14 Nov 2014 - 17:58

Moi je serait vous pour retrouver facilement cette fonctionnalité, j'enverrais un petit fichier texte avec l'explication et un fichier avec le source permettant de le faire à notre ami Ygeronimi pour qu'il le rajoute à la biblothèque de SUB (même s'il faut préciser que cela nécessite KGF.DLL.
L'explication fournit dans ce post est largement suffisante pour comprendre l'utilisation.
Je ne sais pas si Jack rajoutera cette fonctionalité nativement dans Panoramic, mais en attendant, l'ajout dans les SUB du mag permettrait de rerouver cette info beaucoup plus facilement que par le forum Smile
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7004
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyVen 14 Nov 2014 - 18:23

Salut tout le monde.
Je prends le train en marche pour dire (je veux dire pour écrire) à Klaus
Citation :
Non, c'est pas beau, c'est magnifique !

Maintenant, comme je suis hors-jeu et à mille lieues du sujet, je vous propose ce code HTML
Spoiler:

Enregistrez-le où vous voulez, sous le nom que vous voulez, mais avec l’extension .HTML
Lancez-le par un double clique et … cliquez (droit ou gauche).
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyVen 14 Nov 2014 - 18:57

Chouette, ce petit code JavaScript Inline !

Pour JL35:
Pour le picture qui n'a pas de handle, il faut procéder autrement. Il faut utiliser:

D'abord:

ClickSetHook pour définir une interception en spécifiant l'EDIT de réception.

ensuite:

ClickSetDefineRect pour définir des rectangles qui sont des zones "sensibles". Soit un seul rectangle pour tout le picture, soit plusieurs rectangles dans le même picture

puis

ClickSetLinkRect pour lier le rectangle au picture, en précisant le type d'interception.

ET voilà...

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html En ligne
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptyVen 14 Nov 2014 - 20:13

Merci pour ces précisions Klaus, c'est noté !
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

ON_CLICK (clic droit) Empty
MessageSujet: re   ON_CLICK (clic droit) EmptySam 15 Nov 2014 - 11:04

@ Jicehel,

Tu peux regarder mon pseudo objet button_picture.
Je ne reprend que le clic gauche mais il suffit d' étendre les interceptions.
Code:
Sub O_Button_Picture(num_obj%,No_b%,P%,V1%,V2%,T%,L%,H%,W%,Pict$,Pict2$)
   O_Picture(num_obj%+1,P%,V2%,T%,L%,H%,W%,Pict2$):cursor_point num_obj% +1
   O_Picture(num_obj%,P%,V1%,T%,L%,H%,W%,Pict$):On_click num_obj%,Clic:cursor_point num_obj%
   obj% = obj%+1
   if variable("No2%")=0 : dim No2% :No2%=7000 :End_if
   if Variable("R%")=0 :dim R% :R%=1:else :R%=R%+1 :end_if
   if Object_exists(7000)=0 :O_Edit(7000,P%,0,-190,-200,0,0):End_If
   If Variable("KGF_res%")=0 then dim KGF_res%
   KGF_res% = dll_call2("ClickSetHook",handle(P%),handle(No2%))
   KGF_res% = dll_call5("ClickDefineRect",R%,L%,T%,W%,H%)

   No2%=No_b%
   O_Button(No2%,P%,0,-200,-200,0,0,"",1)
   KGF_res% = dll_call3("ClickSetLinkRect",handle(No2%),0-5,R%)

   No2%=No_b%+1
   O_Button(No2%,P%,0,-200,-200,0,0,"",1)
   KGF_res% = dll_call3("ClickSetLinkRect",handle(No2%),0-6,R%)
End_Sub

Sub O_Edit(No%,P%,V%,T%,L%,H%,W%,T$,Ch%)
   EDIT No%
   if P% > 0 then Parent No%,P%
   If V% = 0 Then hide No%
   If H% > 0 Then Height No%,H%
   If W% > 0 Then Width No%,W%
   If T% > 0 Then Top No%,T%
   If L% > 0 Then Left No%,L%
   If T$<>"" Then Text No%,T$
   If Ch%=1  Then On_Change No%,Change
End_Sub

Sub O_Picture(No%,P%,V%,T%,L%,H%,W%,P$)
   PICTURE No%
   if P% > 0 then Parent No%,P%
   If V% = 0 Then hide No%
   If H% > 0 Then Height No%,H%
   If W% > 0 Then Width No%,W%
   If T% > 0 Then Top No%,T%
   If L% > 0 Then Left No%,L%
   if P$<>"" then File_load No%,P$
End_Sub

Petite précision, en sortant du programme, il ne faut pas oublier de quitter la surveillance des zones rectangles sinon...BOUMmm!!!
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptySam 15 Nov 2014 - 11:31

oui, mais je pense que des gens peuvent rechercher comme JL35 la fonctionnalité pour le clic droit.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptySam 15 Nov 2014 - 11:38

Certainement, Jicehel. Et en Delphi, l'interception du clic droit est aussi facile que celle du clic gauche. C'est parfaitement symétrique. C'est le double-clic gauche qui pose problème, pour des raisons que j'ai déjà exposé en détail au moment où j'ai publié ces fonctions d'interceptions pour la première fois. Actuellement, je suis arrivé à quelque chose d'assez facilement exploitable.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html En ligne
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

ON_CLICK (clic droit) Empty
MessageSujet: re   ON_CLICK (clic droit) EmptySam 15 Nov 2014 - 12:36

Petit code :
Code:
dim no%,mem%
dim kgf$

label change

kgf$="P:\Dlls\KGF.dll"
dll_on kgf$

no%=no%+1 : mem%=no%
memo mem%
intercept_clic()
end


Sub intercept_clic()
  dim_local z%,x%,O%,ic_res%,hnd%,hndpos%
  if variable("ICE%")=0
      dim ICE%
      no%=no%+1 : ICE%=no%
      Edit no% : hide no% : on_change no%,change
  end_if
  if variable("ice_tab$")=0 then dim ice_tab$(no%)
  for z%=1 to no%
      if object_type(z%)<>9
        O%=z%
        hnd%=handle(O%)
        ice_tab$(O%)=str$(hnd%)
        hndpos%=handle(ICE%)
        ic_res% = dll_call2("ClickSetHook",hnd%,hndpos%)
        for x%=1 to 3
            if x%<>4
              ic_res% = dll_call2("ClickSetLink",hnd%,x%)
            end_if
        next x%
      end_if
  next z%
end_sub

Change:
  if number_change=ICE% : if len(text$(ice%))>10 :Attrib_clic():end_if:end_if
return

Sub Attrib_clic()
  dim_local x%,sep%,t$,t2$
  sep%=instr(text$(ice%),"=")
  t$=right$(text$(ice%),sep%+1)
  for x%=1 to no%
      if left$(text$(ice%),sep%-1)=ice_tab$(x%)
        t2$="Objet N : "+str$(x%)
        if left$(t$,2)="01": t2$=t2$+" clic gauche" : end_if
        if left$(t$,2)="02": t2$=t2$+" double clic" : end_if
        if left$(t$,2)="03": t2$=t2$+" clic droit"  : end_if
        exit_for
      end_if
  next x%
  caption 0,t2$
End_sub
Je n' ai exclus que le type Picture mais d' autres n' ont pas de handle il me semble...
...il suffit de les exclure aussi  Laughing
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12293
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) EmptySam 15 Nov 2014 - 13:39

Ton interception marche bien ! Je suis content de voir que cela inspire d'autres Panoramiciens...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html En ligne
Contenu sponsorisé





ON_CLICK (clic droit) Empty
MessageSujet: Re: ON_CLICK (clic droit)   ON_CLICK (clic droit) Empty

Revenir en haut Aller en bas
 
ON_CLICK (clic droit)
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Clic droit
» un clic droit évènementiel
» Supplique pour un clic droit
» clic droit sans DLL(simuler ON_RIGHT_CLICK)
» Nouvelle DLL: intercepter clic gauche, double et droit !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos souhaits d'amélioration de Panoramic-
Sauter vers: