Menu sur clic droit de la souris

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Menu sur clic droit de la souris

Message par MetalOS »

Salut tous le monde, ma question va vous sembler bête mais je la pose quand même. Comment faire en PB un petit menu qui s'ouvre au clic droit de la souris sur un EditorGadget (du style ou il y aurra couper, copier, coller).
Voila un grand merci d'avance pour vos réponses.
scaraber
Messages : 362
Inscription : ven. 15/juil./2005 17:32

Message par scaraber »

Salut,
J'ai pas le temps de te faire un exemple, mais tu peu resoudre ton probleme avec les PopuMenu, et les Event sur ton editor:
Tu créé ton menu puis ensuite tu utilise un code comme sa sur les event de ton gadget:
If EventType()=#PB_EventType_RightClick
DisplayPopupMenu(0,WindowID(0))
Endif
a+
Scaraber
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour MetalOS

Voici un code provenant de purearea que j'ai modifié afin que le clic droit ne marche QUE sur l' EditorGadget.

J'espere que cela pourra t'aider

Code : Tout sélectionner

; Author: Andre Beer / PureBasic Team modifié par KCC

Global IdGadgetSurvoler
OpenWindow(0, 200, 200, 200, 120, "Popup-Menu Example", #PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
EditorGadget(1, 5, 5, 150, 80)
   
If CreatePopupMenu(0)      ; here the creating of the pop-up menu begins...

 MenuTitle("Project")     ; you can use any of the menu creating commands,
 MenuItem(1, "Open")    ; just like in a normal menu...
 MenuItem(2, "Save")
 MenuItem(3, "Save as")
 MenuItem(4, "Quit")
 MenuBar()
 OpenSubMenu("Recent files")
 MenuItem(5, "PureBasic.exe")
 MenuItem(6, "Test.txt")
 CloseSubMenu()
 MenuTitle("Edit")
 MenuTitle("Options")

EndIf

Repeat

 GetCursorPos_(@point.POINT) 
 Handle = WindowFromPoint_(point\X,point\Y) 
 IdGadgetSurvoler = GetDlgCtrlID_(Handle) ; Id du gadget survolé

 Select WaitWindowEvent()     ; check for window events
 
  Case #WM_RBUTTONDOWN       ; right mouse button was clicked =>
 
   If IdGadgetSurvoler = 1
    DisplayPopupMenu(0,WindowID(0),210,240)  ; now display the popup-menu
   EndIf 
 
  Case #PB_Event_Menu         ; an item of the popup-menu was clicked
 
   Select EventMenu()     ; get the clicked menu item...
    Case 1 : Debug "Menu: Open"
    Case 2 : Debug "Menu: Save"
    Case 3 : Debug "Menu: Save as"
    Case 4 : Quit = 1
    Case 5 : Debug "Menu: PureBasic.exe"
    Case 6 : Debug "Menu: Text.txt"
   EndSelect
  
  Case #PB_Event_CloseWindow
   Quit = 1
 EndSelect
 
Until Quit = 1
Bonne journée
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Bonjour Kwai chang caine, et merci pour ta source ca va bien m'aider.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

De rien, content que cela te convienne.
Quand j'ai la chance de pouvoir aider .... :wink:
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Voila ce que je cherchais à faire, donc je poste la source au cas ou ca peut servir. Encore merci pour ton aide.

Code : Tout sélectionner

; Author: Andre Beer / PureBasic Team modifié par KCC et remodifier par MetalOS :D

Global IdGadgetSurvoler
OpenWindow(0, 200, 200, 200, 120, "Popup-Menu Example", #PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
EditorGadget(1, 5, 5, 150, 80)
   
If CreatePopupMenu(10)      ; here the creating of the pop-up menu begins...

 MenuItem(40, "Annuler")
 MenuBar()
 MenuItem(41, "Couper")
 MenuItem(42, "Copier")
 MenuItem(43, "Coller")

EndIf

Repeat

 GetCursorPos_(@point.POINT)
 Handle = WindowFromPoint_(point\X,point\Y)
 IdGadgetSurvoler = GetDlgCtrlID_(Handle) ; Id du gadget survolé

 Select WaitWindowEvent()     ; check for window events
 
  Case #WM_RBUTTONDOWN       ; right mouse button was clicked =>
 
   If IdGadgetSurvoler = 1
    DisplayPopupMenu(10,WindowID(0),point\X,point\Y)  ; now display the popup-menu
   EndIf
 
  Case #PB_Event_Menu         ; an item of the popup-menu was clicked
 
   Select EventMenu()     ; get the clicked menu item...
    Case 40 : Debug "Menu: Annuler"
    Case 41 : Debug "Menu: Couper"
    ;Code Couper
    Vide$ = "" 
          SendMessage_(GadgetID(1),#EM_GETSEL,@StartSel,@EndSel) 
          Buffer$ = Space(EndSel-StartSel) 
          SendMessage_(GadgetID(1),#EM_GETSELTEXT,0,@Buffer$) 
          ClearClipboard() 
          SetClipboardText(Buffer$) 
          SendMessage_(GadgetID(1),#EM_REPLACESEL,#True,@Vide$)
     ;Fin Couper 
    Case 42 : Debug "Menu: Copier"
    ;Code Copier
    SendMessage_(GadgetID(1),#EM_GETSEL,@StartSel,@EndSel) 
          Buffer$ = Space(EndSel-StartSel) 
          SendMessage_(GadgetID(1),#EM_GETSELTEXT,0,@Buffer$) 
          ClearClipboard() 
          SetClipboardText(Buffer$) 
    ;Fin Copier
    Case 43 : Debug "Menu: Coller"
    ;Code coller
      Buffer$ = GetClipboardText() 
          SendMessage_(GadgetID(1),#EM_REPLACESEL,#True,@Buffer$)
    ;Fin de code Coller 
   EndSelect
   
   Case #PB_Event_CloseWindow
   Quit = 1 
 EndSelect
 
Until Quit = 1 
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Ooooh un mini bloc note de poche :D
Microsoft n'a qu'a bien se tenir ... :lol:
Répondre