Edition dans EditorGadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Vlad
Messages : 14
Inscription : jeu. 03/juil./2008 18:47

Edition dans EditorGadget

Message 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
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Edition dans EditorGadget

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Edition dans EditorGadget

Message par Backup »

...
Dernière modification par Backup le lun. 18/août/2014 17:00, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Edition dans EditorGadget

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre