Couper/Copier/Coller dans un EditorGadget

Programmation d'applications complexes
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Couper/Copier/Coller dans un EditorGadget

Message par Aranoth »

Je continue sur ma lancée, j'ai trouvé la commande

Code : Tout sélectionner

SetClipboardText(Texte$) 
Mais il me faut savoir le texte qui est selectionné dans le EditorGadget...et là...sachant que le EditorGadget est meme pas dans la doc je vois pas comment faire

merci
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Tiens, voilà un code qui fonctionne.

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Win_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Editor_0
  #Btn_0
EndEnumeration

Procedure Open_Win_0()
  If OpenWindow(#Win_0, 216, 0, 305, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateGadgetList(WindowID())
      EditorGadget(#Editor_0, 5, 5, 295, 260)
      ButtonGadget(#Btn_0, 70, 270, 170, 25, "Quitter")
    EndIf
  EndIf
EndProcedure

If CreatePopupMenu(0)
  MenuItem(1, "Couper")
  MenuItem(2, "Copier")
  MenuItem(3, "Coller")
  MenuBar()
  MenuItem(4, "Annuler")
  MenuItem(5, "Refaire")
  MenuBar()
  MenuItem(6, "Quitter")
EndIf

Open_Win_0()

Repeat
  Select WaitWindowEvent()
    Case #WM_RButtonDown
      DisplayPopupMenu(0, WindowID())
    Case #PB_EventMenu
      Select EventMenuID()
        Case 1 ; Couper
          Vide$ = ""
          SendMessage_(GadgetID(#Editor_0),#EM_GETSEL,@StartSel,@EndSel)
          Buffer$ = Space(EndSel-StartSel)
          SendMessage_(GadgetID(#Editor_0),#EM_GETSELTEXT,0,@Buffer$)
          ClearClipboard()
          SetClipboardText(Buffer$)
          SendMessage_(GadgetID(#Editor_0),#EM_REPLACESEL,#True,@Vide$)
          
        Case 2 ; Copier
          SendMessage_(GadgetID(#Editor_0),#EM_GETSEL,@StartSel,@EndSel)
          Buffer$ = Space(EndSel-StartSel)
          SendMessage_(GadgetID(#Editor_0),#EM_GETSELTEXT,0,@Buffer$)
          ClearClipboard()
          SetClipboardText(Buffer$)
          
        Case 3 ; Coller
          Buffer$ = GetClipboardText()
          SendMessage_(GadgetID(#Editor_0),#EM_REPLACESEL,#True,@Buffer$)
          
        Case 4 ; Annuler
          SendMessage_(GadgetID(#Editor_0),#EM_UNDO,0,0)
          
        Case 5 ; Refaire
          SendMessage_(GadgetID(#Editor_0),#EM_REDO,0,0)
          
        Case 6 ; Quitter
          quit = 1
          
      EndSelect
    Case #PB_EventGadget
      Select EventGadgetID()
        Case #Editor_0
        Case #Btn_0
          quit = 1
      EndSelect
    Case #PB_EventCloseWindow
      quit = 1
  EndSelect
Until quit = 1
End
Chris :)
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

C'est un exemple de nico et il fonctionne très bien avec les autres applications

Code : Tout sélectionner

If OpenWindow(0,0,0,322,150,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"EditorGadget") And CreateGadgetList(WindowID(0)) 
  Hedit=EditorGadget (0,8,8,306,133,#PB_Container_Raised) 
  
If CreatePopupMenu(0) 
  MenuItem(1, "Couper") 
  MenuItem(2, "Copier") 
  MenuItem(3, "Coller") 
EndIf    

EndIf 

Repeat 
  EventID.l = WindowEvent() 
  Select EventID 
    Case #WM_RButtonDown 
      DisplayPopupMenu(0, WindowID()) 
      
    Case #PB_EventMenu 
       Select EventMenuID()              
          Case 1 ; Couper 
            SendMessage_(Hedit, #WM_CUT, 0, 0) 
            
          Case 2 ; Copier 
            SendMessage_(Hedit, #WM_COPY, 0, 0) 
            
          Case 3 ; Coller 
            SendMessage_(Hedit, #WM_PASTE, 0, 0) 
              
        EndSelect        
EndSelect      
Until EventID = #PB_EventCloseWindow    
End 
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

merci a vous deux :D

maintenant j'ai Annuler,Refaire,Couper,Copier et Coller de fait :wink:
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
Répondre