Page 1 sur 1
Edition dans EditorGadget
Publié : mer. 13/mars/2013 19:16
par Vlad
Soit sous window un Editeur qui affiche un texte.
On peut sélectionner une partie du texte à la souris. Il se met alors en inversion vidéo.
On peut utiliser sans problème les raccourcis :
Ctrl + A (tout sélectionner),
Ctrl + C (Copier),
Ctrl + V (Coller) ,
Ctrl + X (Couper).
C'est bien mais ... ce serait bien aussi de mettre ces actions en menu. Mais comment ?
Merci de votre aide
Re: Edition dans EditorGadget
Publié : mer. 13/mars/2013 19:50
par falsam
Bonjour. Un peu de code pour te montrer la façon de créer un menu et d'intercepter les évènements du menu et des touches de raccourcis. Par contre je ne traite pas les actions à réaliser quand aprés l'éxécution des touches de raccourcis.
Code : Tout sélectionner
Enumeration
#Mainform
;Menu
#MainMenu
;Menu Edition
#SelectAll
#Copy
#Paste
;Touches de raccourci
#CtrlA
#CtrlC
#CtrlV
#Editor
EndEnumeration
Define.l Event, WEvent, GEvent
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
EditorGadget(#Editor, 10, 30, 480, 360, #PB_Editor_WordWrap)
;Creation du menu
CreateMenu(#MainMenu, WindowID(#Mainform)) ;Le menu est attaché à la fenenetre #mainform
MenuTitle("Fichier")
MenuTitle("Edition")
MenuItem(#SelectAll, "Tout sélectionner" + Chr(9)+"Ctrl+A")
MenuItem(#Copy, "Copier" + Chr(9) + "Ctrl+C")
MenuItem(#Paste, "Coller" + Chr(9) + "Ctrl+V")
;Initialisation des touches de racourci
AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control|#PB_Shortcut_A, #CtrlA)
AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control|#PB_Shortcut_C, #CtrlC)
AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control|#PB_Shortcut_V, #CtrlV)
EndProcedure
Procedure Start()
;Initialisation application, police, etc ..
Open_MainForm()
EndProcedure
start()
Repeat
Event = WaitWindowEvent()
MEvent = EventMenu()
GEvent = EventGadget()
Select Event
Case #PB_Event_Menu
Select MEvent
Case #SelectAll, #CtrlA
Debug "Ctrl + A"
Case #Copy, #CtrlC
Debug "Ctrl + C"
Case #paste, #CtrlV
Debug "Ctrl + V"
EndSelect
Case #PB_Event_Gadget
Select GEvent
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Re: Edition dans EditorGadget
Publié : mer. 13/mars/2013 20:01
par Backup
...
Re: Edition dans EditorGadget
Publié : ven. 15/mars/2013 1:33
par falsam
@Vlad : Bonjour. Suite à votre email je préfère répondre sur le forum afin d'en faire profiter tout le monde. J'ai repris le code et j'ai éliminé la gestion des touches de raccourcis. La solution passe par des API Microsoft. J'espére que ce code répondra à votre demande d'aide.
Code : Tout sélectionner
Enumeration
#Mainform
;Menu
#MainMenu
;Menu Edition
#SelectAll
#Cut
#Copy
#Paste
#Editor
EndEnumeration
Define.l Event, WEvent, GEvent
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
EditorGadget(#Editor, 10, 30, 480, 360, #PB_Editor_WordWrap)
;Creation du menu
CreateMenu(#MainMenu, WindowID(#Mainform)) ;Le menu est attaché à la fenenetre #mainform
MenuTitle("Fichier")
MenuTitle("Edition")
MenuItem(#SelectAll, "Tout sélectionner" + Chr(9)+"Ctrl+A")
MenuItem(#Cut, "Couper" + Chr(9) + "Ctrl+X")
MenuItem(#Copy, "Copier" + Chr(9) + "Ctrl+C")
MenuItem(#Paste, "Coller" + Chr(9) + "Ctrl+V")
EndProcedure
Open_MainForm()
Repeat
Event = WaitWindowEvent()
MEvent = EventMenu()
GEvent = EventGadget()
Select Event
Case #PB_Event_Menu
Select MEvent
Case #SelectAll
SendMessage_(GadgetID(#Editor), #EM_SETSEL,0,-1)
Case #Cut
SendMessage_(GadgetID(#Editor), #WM_CUT, 0, 0)
Case #Copy
SendMessage_(GadgetID(#Editor), #WM_COPY, 0, 0)
Case #paste
SendMessage_(GadgetID(#Editor), #WM_PASTE, 0, 0)
EndSelect
Case #PB_Event_Gadget
Select GEvent
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver