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
» Pb 16 (en analyse): ON_CLOSE plante à l'exécution
par Jack Aujourd'hui à 20:00

» Pb 15 (en analyse): TIMER_ON plante à l'exécution
par Jack Aujourd'hui à 19:58

» Compilateur FBPano
par jean_debord Aujourd'hui à 8:49

» un nouveau editeur panobasic
par Jean Claude Hier à 20:05

» COMPILATEUR V 0.9 beta 7 du 10 aout 2017
par Pedro Alvarez Hier à 19:31

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

» Carte de France des régions
par Yannick Sam 12 Aoû 2017 - 21:33

» Pb 14 (en analyse): PRINT_LOCATE plante à l'exécution
par Jack Ven 11 Aoû 2017 - 22:37

» Petit avertissement [Mots réservés]
par papydall Ven 11 Aoû 2017 - 13:45

» Distances sur plan
par JL35 Jeu 10 Aoû 2017 - 21:29

» Tracé : Triangle, Carrée, Dents de scie, Sinusoïde redressée
par papydall Jeu 10 Aoû 2017 - 14:52

» Troncature dans une image
par JL35 Mer 9 Aoû 2017 - 13:45

» A chacun son point de vue
par papydall Mar 8 Aoû 2017 - 17:20

» Problème avec les chaines de caractères
par bignono Dim 6 Aoû 2017 - 9:33

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
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 : 50
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 : 464
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 : 7961
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 : 50
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 : 5501
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 : 50
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 : 7961
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 : 5501
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
-
» Double lien dans la barre de navigation
» Double titre dans haut de la catégories
» Creation de double forum dans un forum
» Des icones dans ma barres de menu sur mon forum n'apparait pas pourquoi ?
» option dans la page du menu partie membres

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