Partage d'un doute

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Partage d'un doute

Message par Ollivier »

Si je prends l'exemple de la doc EditorGadget(), et que j'y "intègre" un éditeur :

Code : Tout sélectionner

;*************************************************************************************************************************
If OpenWindow (0, 200, 200, 220, 120, "Exemple de menu contextuel")
EditorGadget(0, 0, 0, 220, 120)
If CreatePopupMenu (0) ; La création du menu contextuel commence...
MenuTitle ("Projet") ; Vous pouvez utiliser toutes les commandes relatives au menu,
MenuItem (1, "Ouvrir") ; comme si c'était un menu normal...
MenuItem (2, "Enregistrer")
MenuItem (3, "Enregistrer sous")
MenuItem (4, "Quitter")
MenuBar ()
OpenSubMenu ("Fic&hiers récents")
MenuItem (5, "PureBasic.exe")
MenuItem (6, "Test.txt")
CloseSubMenu ()
EndIf
Repeat
Event = WaitWindowEvent ()
Select Event ; Examine quel type d'évènement est survenu sur la fenêtre
Case #PB_Event_RightClick ; Le bouton droit de la souris a été clické =>
DisplayPopupMenu (0, WindowID(0)) ; On affiche le menu contextuel
Case #PB_Event_Menu ; Un élément du menu a été sélectionné
Select EventMenu () ; On recupère le numéro de cet élement...
Case 1 : Debug "Menu : Ouvrir"
Case 2 : Debug "Menu : Enregistrer"
Case 3 : Debug "Menu : Enregistrer sous"
Case 4 : End
Case 5 : Debug "Menu : PureBasic.exe"
Case 6 : Debug "Menu : Text.txt"
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
Alors, le clic droit est hors piste.

Une piste ?
Avatar de l’utilisateur
SPH
Messages : 4723
Inscription : mer. 09/nov./2005 9:53

Re: Partage d'un doute

Message par SPH »

Code : Tout sélectionner

EditorGadget(0, 0, 0, 110, 120)
Effectivement !
Je ne sais pas a quoi sert le bouton droit sur un EditorGadget... :idea:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Partage d'un doute

Message par Marc56 »

EditorGadget ne supporte pas (nativement) le menu popup.
On peut (je crois) avec une bidouille.
Voir forum us
Mesa
Messages : 1097
Inscription : mer. 14/sept./2011 16:59

Re: Partage d'un doute

Message par Mesa »

Comme ça, par exemple:

Code : Tout sélectionner

OpenWindow(0, 100, 100, 300, 190, "Display context menu on right click") 
	EditorGadget(0, 10, 10, 280, 170) 
	 
	CompilerIf #PB_Compiler_OS = #PB_OS_Windows      
		If CreatePopupMenu(0) 
			MenuItem(0, "Cut") 
			MenuItem(1, "Copy") 
			MenuItem(2, "Paste") 
		EndIf 
	CompilerEndIf 
	 
	Repeat 
		Select WaitWindowEvent() 
			Case #PB_Event_CloseWindow 
				Break 
			 
			CompilerIf #PB_Compiler_OS = #PB_OS_Windows      
				Case #PB_Event_Menu 
					Select EventMenu() 
						Case 0 
							SendMessage_(GadgetID(0), #WM_CUT, 0, 0) 
						Case 1 
							SendMessage_(GadgetID(0), #WM_COPY, 0, 0) 
						Case 2 
							SendMessage_(GadgetID(0), #WM_PASTE, 0, 0) 
					EndSelect 
	 
				Case #WM_RBUTTONDOWN 
					If EventGadget() = 0 
						DisplayPopupMenu(0, WindowID(0)) 
					EndIf 
			CompilerEndIf 
		EndSelect 
	ForEver
M.
Avatar de l’utilisateur
SPH
Messages : 4723
Inscription : mer. 09/nov./2005 9:53

Re: Partage d'un doute

Message par SPH »

Ca alors Mesa : simple et efficace :idea:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Partage d'un doute

Message par Ollivier »

Bonjour mesa,

merci pour cette solution pour Windows. Personnellement, je ne suis pas embêté (j'ai présenté aussi il y a quelques semaines, une soluce multi-plateforme). Mais je voulais être certain que je n'avais pas loopé un épisode, vu que le clic droit, WindowEvent() et EventType() en ont chacun une constante...
Répondre