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.
Menu sur clic droit de la souris
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
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
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
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
Bonne journée
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
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
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
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere