FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Demande urgente en maths.
par JL35 Aujourd'hui à 22:26

» Compilateur FBPano
par jean_debord Aujourd'hui à 11:24

» Problème de math
par braveen Aujourd'hui à 10:53

» A propos des attributs de fichier
par papydall Hier à 14:33

» Problème de math
par Marc37 Sam 21 Oct 2017 - 23:04

» I Love You
par papydall Sam 21 Oct 2017 - 19:22

» Un petit "coucou" à tous les Panoramiciens !
par mindstorm Sam 21 Oct 2017 - 17:06

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Mer 18 Oct 2017 - 18:08

» mise a jour calculatrice
par joeeee2017 Mer 18 Oct 2017 - 15:57

» [solved] 3D_LINE How to ?
par Jicehel Mer 18 Oct 2017 - 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Clics droit, gauche et double clic dans un même menu

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Clics droit, gauche et double clic dans un même menu    Sam 11 Mar 2017 - 18:52

Suite au code de Silverman, j'ai simplifié et amélioré pour arrivé a n'utiliser qu'un seul traitement.
et voila ce que cela donne sans aucun timer et avec un menu contextuel en prime !

Pour convenir a tous et suite a des posts récents j'ai largement documenté le code.

Pour le menu contextuel vous pouvez aussi rajouter les images comme indiqué dans le programme.

Pour le doucle clic c'est uniquement sur le FORM 0

Code:

' ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' GESTION DES CLICS GAUCHE ET DROIT DANS UN SEUL MENU AVEC EXEMPLE D'UN MENU CONTEXTUEL (CLIC DROIT) INCLUS
' PAR LAURENT ALIAS MINIBUG
' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

' INITIALISATION DES LABELS ET VARIABLES
LABEL menu , move

DIM n%            : ' utilisé  dans la boucle pour créer le nombre de lignes du menu contextuel
DIM nb%          : ' Permet la numérotation automatique des objets
DIM PANEL%        : ' Nomme l'objet PANEL 1 pour pouvoir le reconnaitre dans le programme
DIM h%            : ' Contient la hauteur du PANEL en fonction des éléments (DATAs)
DIM t$            : ' Permet le chargement de chaque DATA dans la boucle
DIM d%            : ' Permet la gestion du secondes pour le double clic


' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

' Formatage des paramètres du menu contextuel
DATA "Ouvrir fichier" , "Sauvegarder fichier" , "_" , "Fermer fichier" ,"_" , "Quitter"          : ' Ligne du menu contextuel

' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

HIDE 0                                                                                            : ' On cache tout avant l'affichage complet

' Création du menu contextuel
nb%=1                                                                                            : ' nb% permet de numéroter automatiquement des objets
PANEL nb% : HIDE nb% : PARENT nb%,0 : HEIGHT nb%,114 : COLOR nb%,240,240,240                      : ' PANEL 1 servant de conteneur pour le menu contextuel
PANEL%=nb% : nb%=nb%+1                                                                            : ' Nomme PANEL 1 par PANEL% et initialisation de hauteur du PANEL 1
h%=h%+5

FOR n%=1 TO 6                                                                                    : ' Boucle permetant la création des lignes du menu contextuel
  ALPHA nb% : PARENT nb%,PANEL% : FONT_COLOR nb%,0,0,0 : TOP nb%,h% : FONT_NAME nb%,"Segoe UI"  : '    Création de la ligne de texte et
  READ t$                                                                                        : '    chargement du DATA t$
  IF t$="_"                                                                                      : '    Si t$="_"  c'est donc un séparateur (ligne vide)
      FONT_SIZE nb%,3 : TOP nb%,h%                                                                : '      Met la police au mini pour créer des lignes séparatrices
      WHILE TEXT_WIDTH(t$,nb%)<WIDTH(1)-10 : t$=t$+"_" : LEFT nb%,5 : END_WHILE                  : '      Création de la ligne séparatrice
      CAPTION nb%,t$ : INACTIVE nb% : nb%=nb%+1 : h%=h%+12                                        : '      Affiche et désactive la ligne pour ne pas la sélectionner
  ELSE                                                                                          : '    Sinon c'est un menu avec un texte
      FONT_SIZE nb%,9                                                                            : '      Met la police à la taille normale
      WHILE TEXT_WIDTH(t$,nb%)<WIDTH(1)-35 : t$=t$+" " : LEFT nb%,30 : CAPTION nb%,t$ : END_WHILE : '      Création de la ligne de texte et affichage
        ON_MOUSE_UP nb%,menu : nb%=nb%+1                                                        : '          et activation du clic
      PICTURE nb%  : PARENT nb%,PANEL% : LEFT nb%,4 : TOP nb%,h% : WIDTH nb%,17 : HEIGHT nb%,17  : '      Création de l'icone sur la partie de gauche
        ' FILE_LOAD nb%,"D:\BASIC\GPP\sys\img\ico1"+RIGHT$("00"+STR$(n%),2)+".bmp"              : '          Chargement de l'image au format bmp
        STRETCH_ON nb% : ON_MOUSE_UP nb%,menu : nb%=nb%+1 : h%=h%+20                            : '          et ajustement avec activation du clic
  END_IF                                                                                        : '    Fin du traitement
NEXT n%                                                                                          : ' Fin de la boucle

' Détection du clic ou du déplacement sur le form 0
ON_MOUSE_UP 0,menu : ON_MOUSE_MOVE 0,move                                                        : ' Activation du clic et gestion du déplacement sur FORM 0

SHOW 0                                                                                            : ' Affichage de la fenêtre

END                                                                                              : ' Fin du programme

' --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

menu:                                                                                            : ' sous-programme MENU
  ' Gestion des clics gauches du menu contextuel et affichage des messages
  IF MOUSE_LEFT_UP(2)=1 OR MOUSE_LEFT_UP(3)=1 THEN HIDE 1 : CAPTION 0, "Ouvrir fichier"          : '    Si clic de gauche sur ALPHA 2 ou PICTURE 3 alors on affiche ...
  IF MOUSE_LEFT_UP(4)=1 OR MOUSE_LEFT_UP(5)=1 THEN HIDE 1 : CAPTION 0, "Sauvegarder fichier"    : '    Si clic de gauche sur ALPHA 4 ou PICTURE 5 alors on affiche ...
  IF MOUSE_LEFT_UP(7)=1 OR MOUSE_LEFT_UP(8)=1 THEN HIDE 1 : CAPTION 0, "Fermer fichier"          : '    Si clic de gauche sur ALPHA 7 ou PICTURE 8 alors on affiche ...
  IF MOUSE_LEFT_UP(10)=1 OR MOUSE_LEFT_UP(11)=1 THEN HIDE 1 : TERMINATE                          : '    Si clic de gauche sur ALPHA 10 ou PICTURE 11 alors on affiche ..
                                                                                                  : '    (PS : ALPHA 3 et ALPHA 6 sont les lignes inactives donc pas de clic)
  ' Gestion du clic gauche ou double clic gauche sur Form 0
  IF MOUSE_LEFT_UP(0)=1 THEN CAPTION 0,"Clic droit sur le Form 0"                                : '    Si clic de gauche sur FORM 0 alors on affiche ...

  IF DOUBLE_CLICKED(0)=1 THEN CAPTION 0,"Double clic droit sur le Form 0"                        :'    Si double clic droit sur FORM 0 alors on affiche ...

  ' Gestion du clic droit et affichage du menu contextuel
  IF MOUSE_RIGHT_UP(0)=1 AND SHOW(1)=0                                                          : '    Si clic de droite sur FORM 0 on positionne et affiche PANEL 1
      LEFT 1,MOUSE_X_POSITION(0)-5 : TOP 1,MOUSE_Y_POSITION(0)-5 : SHOW 1                        : '      Affichage du menu contextuel
  END_IF                                                                                        : '    Fin
RETURN                                                                                            : ' Fin du sous-programme

move:                                                                                            : ' sous-programme MOVE
  HIDE 1                                                                                        : '    Si déplacement détecté sur FORM 0 on cache le menu contactuel (PANEL)
RETURN                                                                                            : ' Fin du sous-programme


Dernière édition par Laurent le Dim 12 Mar 2017 - 9:47, édité 4 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 466
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Clics droit, gauche et double clic dans un même menu    Sam 11 Mar 2017 - 21:04

Superbe, ça marche presque bien! Wink
En effet, if faut placer les détections d'évènement juste avant 'end'; Si tu lances ton code et que tu bouges aussitôt la souris, 'on_mouse_move' déclenche un évènement avant que le menu contextuel ne soit terminé d'être construit ---->plantage.
'on_mouse_move' est une commande très pratique, mais à utiliser avec précaution:
Code:
label move

on_mouse_move 0,move
END

move:
 pause 20
caption 0,str$(number_events)     :' <---- toujours à 0, bug?
end
Une fois lancé, bouge la souris sur le form 0 puis ferme le en cliquant sur la croix ---->plantage!
Sinon, pour le double click, pourquoi tu n'utilises pas la fonction 'double_clicked()'?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 12 Mar 2017 - 5:36

Pour éviter ce genre de souci, je mets "HIDE 0" en début de code
et "SHOW 0" avant le "END".

Cela évite la détection sur des objets qui ne sont pas encore créés.
Et pour la commande ON_RESIZE N,L je la place en fin de code du form 0.
Sinon, cà plante.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Clics droit, gauche et double clic dans un même menu    Dim 12 Mar 2017 - 9:36

Merci Silverman et Yannick  pour ces retours !

C'est corrigé. Comme ça plus de plantage. Wink

Concernant le double click, il me semblait qu'auparavant il y avait un problème avec cette commande.
J'ai changé avec DOUBLE_CLICKED() et ça fonctionne parfaitement. Merci.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Clics droit, gauche et double clic dans un même menu    Dim 12 Mar 2017 - 15:18

Vous pouvez utiliser BlockInput de la user32.dll
Pour savoir comment l’utiliser, rendez-vous ici.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Clics droit, gauche et double clic dans un même menu    Dim 12 Mar 2017 - 16:39

Merci Papydall.

J'ai vu ton post... Effectivement cela peut être très utile.
A conserver précieusement !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 12 Mar 2017 - 16:40

C' est bon à savoir.
Maintenant il va falloir que je m' en souvienne et...
...c' est pas gagné !
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Clics droit, gauche et double clic dans un même menu    Dim 12 Mar 2017 - 17:27

Yannick a écrit:
C' est bon à savoir.
Maintenant il va falloir que je m' en souvienne et...
...c' est pas gagné !

C'est pourquoi je l'ai posté dans un autre sujet plus facile à trouver si besoin est.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé




MessageSujet: Re: Clics droit, gauche et double clic dans un même menu    

Revenir en haut Aller en bas
 
Clics droit, gauche et double clic dans un même menu
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» comment faire clic droit et mon pseudo apparait
» j ai des souci , je debute depuis ce jour avec linux fedora
» [résolu]lecteur CD et DVD accée reffusé
» [Résolu] Menu démarrer win xp (programmes en double)
» probleme avec les cellules d'excel sur la mise en forme

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: