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
» Synedit Parameters
par Yannick Aujourd'hui à 0:27

» Code à vérifier SVP (Oups ! résolu)
par Jean Claude Hier à 21:16

» Compilateur FBPano
par jean_debord Hier à 9:56

» Bienvenue à Virtualalan !
par UltraVox Hier à 9:18

» Concours de Morpions
par jjn4 Hier à 0:04

» ShortName$(F) [Cloturé]
par papydall Mer 21 Juin 2017 - 16:19

» Remplacer espace par tiret dans noms des dossiers / fichiers
par papydall Mer 21 Juin 2017 - 15:27

» Menu personalisé avec icones et menu contextuel
par Laurent (Minibug) Mer 21 Juin 2017 - 12:44

» La liste des choses à faire ...
par Jack Mar 20 Juin 2017 - 22:49

» Quoi de neuf à propos de Goric 3D ? (@Jack)
par UltraVox Mar 20 Juin 2017 - 21:06

» Nom court et anti fenetre dos
par silverman Mar 20 Juin 2017 - 18:31

» Ludothèque Panoramic
par jjn4 Mar 20 Juin 2017 - 18:09

» Proposition à la communauté
par Yannick Mar 20 Juin 2017 - 15:02

» >199
par maelilou Mar 20 Juin 2017 - 14:13

» NUMBER_FOCUS
par Yannick Lun 19 Juin 2017 - 15:25

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2017
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  
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 : 2340
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 : 441
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 : 7809
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 : 2340
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 : 5384
Age : 66
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 : 2340
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 : 7809
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 : 5384
Age : 66
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: