Page 1 sur 1

Souci avec le gadget EditorGadget

Publié : lun. 06/sept./2010 21:52
par falsam
J'ai l'impression que le code ci dessous, ne détecte pas les modification de saisie dans un EditorGadget alors que ça fonctionne parfaitement avec des gadgets StringGadget

Code : Tout sélectionner

...
Case #PB_Event_Gadget
     If EventType()=#PB_EventType_Change 
         ... action 
     EndIf
...

Re: Souci avec le gadget EditorGadget

Publié : lun. 06/sept./2010 22:02
par Le Soldat Inconnu
Oui, il me semble que cet évènement n'est pas supporté sur l'editorgadget.

il faut simplement faire comme ceci

Code : Tout sélectionner

... 
Case #PB_Event_Gadget 
	... action  
... 

Re: Souci avec le gadget EditorGadget

Publié : mar. 07/sept./2010 0:23
par Warkering
Le problème, c'est que chaque fois qu'il y a une action quelconque sur l'éditeur, que ce soit un coller ou un clic droit, ça génère un évènement.

Re: Souci avec le gadget EditorGadget

Publié : mar. 07/sept./2010 12:14
par Jacobus
Petit exemple pour gérer le clic-droit dans un EditorGadget()
Pour tester:
- Ecrire/taper du texte.
- Sélectionner le texte écrit
- Faire un clic-droit
- Apparition du popup menu.
- Utilisez les menus fonctionnels pour tester.

Code : Tout sélectionner

Enumeration
  #WinEditeur
  #Editeur
  
#POPUP_editor
#Menu_edit_cut
#Menu_edit_copy
#Menu_edit_paste
#Menu_edit_undo       
#Menu_edit_redo
#Menu_edit_select
#Menu_edit_delete
#Menu_edit_deleteAll
#Menu_edit_Centrer
#Menu_edit_AlignerDroite
#Menu_edit_AlignerGauche
#Menu_edit_Justifier
#Menu_edit_Gras
#Menu_edit_Italic
#Menu_edit_Underline
#Menu_edit_Strikeout
#Menu_edit_Normal
EndEnumeration


If OpenWindow(#WinEditeur, 10, 10, 800, 700, "Editeur - Clic-droit", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered) <> 0 
  
;-Menu Popup

  If CreatePopupImageMenu(#POPUP_editor,#PB_Menu_ModernLook);{
    MenuItem(#Menu_edit_cut, "Couper")
    MenuItem(#Menu_edit_copy, "Copier")
    MenuItem(#Menu_edit_paste, "Coller")
    MenuItem(#Menu_edit_delete, "Effacer")
    MenuBar()
    MenuItem(#Menu_edit_undo, "Annuler")      
    MenuItem(#Menu_edit_redo, "Recommencer")
    MenuBar()
     OpenSubMenu("Formater sélection ")
      MenuItem(#Menu_edit_Centrer, "Centrer")
      MenuItem(#Menu_edit_AlignerDroite, "Aligner à droite")
      MenuItem(#Menu_edit_AlignerGauche, "Aligner à gauche")
      MenuItem(#Menu_edit_Justifier, "Justifier")
      MenuBar()
      MenuItem(#Menu_edit_Gras, "Gras")
      MenuItem(#Menu_edit_Italic, "Italique")
      MenuItem(#Menu_edit_Underline, "Souligner")
      MenuItem(#Menu_edit_Strikeout, "Barrer")
      MenuItem(#Menu_edit_Normal, "Normal")     
     CloseSubMenu()
    MenuBar()
    MenuItem(#Menu_edit_select, "Sélectionner tout")
    MenuItem(#Menu_edit_deleteAll, "Effacer tout")
  EndIf
;}  

  EditorGadget(#Editeur, 10,10,780,680)
  SendMessage_(GadgetID(#Editeur), #EM_EXLIMITTEXT, 0, 1024 * 1024 * 1024) ; pas de limite de texte
  SendMessage_(GadgetID(#Editeur), #EM_SETTARGETDEVICE, #Null, 0) ;retour à la ligne auto
    

;-Programme édition

Repeat 
  EventID = WaitWindowEvent()
  
   
   If EventID = #WM_RBUTTONDOWN   ;{
      
      Select EventGadget() 
      
        Case #Editeur ;{
          selStart = 0 : selEnd = 0 
          SendMessage_(GadgetID(#Editeur), #EM_GETSEL, @selStart, @selEnd) 
          If selStart = selEnd 
            ;{
              DisableMenuItem(#POPUP_editor, #Menu_edit_cut,1) 
              DisableMenuItem(#POPUP_editor, #Menu_edit_copy,1)
              DisableMenuItem(#POPUP_editor, #Menu_edit_delete,1)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Centrer,1)
              DisableMenuItem(#POPUP_editor, #Menu_edit_AlignerDroite,1)
              DisableMenuItem(#POPUP_editor, #Menu_edit_AlignerGauche,1)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Justifier,1)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Gras,1)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Italic,1)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Underline,1)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Strikeout,1)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Normal,1)
              ;}
            Else 
              ;{
              DisableMenuItem(#POPUP_editor, #Menu_edit_cut,0) 
              DisableMenuItem(#POPUP_editor, #Menu_edit_copy,0)
              DisableMenuItem(#POPUP_editor, #Menu_edit_delete,0)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Centrer,0)
              DisableMenuItem(#POPUP_editor, #Menu_edit_AlignerDroite,0)
              DisableMenuItem(#POPUP_editor, #Menu_edit_AlignerGauche,0)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Justifier,0)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Gras,0)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Italic,0)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Underline,0)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Strikeout,0)
              DisableMenuItem(#POPUP_editor, #Menu_edit_Normal,0) 
              ;}
            EndIf            
          DisplayPopupMenu(#POPUP_editor,WindowID(#WinEditeur))
        ;}
          
      EndSelect 
      ;}
   EndIf  
    
   If EventID = #PB_Event_CloseWindow 
     Quit = 1 
   EndIf 
;-Events GADGETS        
   If EventID = #PB_Event_Gadget ;{
    Select EventGadget()           
     Case #Editeur
        SetActiveGadget(#Editeur)                          
    EndSelect 
;}   
   EndIf 

;-Events PopUp Menu par clic-droit 
;{    
   If EventID = #PB_Event_Menu 
    Select EventMenu()
       
       Case #Menu_edit_cut  : SendMessage_(GadgetID(#Editeur), #WM_CUT,0,0)
       
       Case #Menu_edit_copy : SendMessage_(GadgetID(#Editeur), #WM_COPY,0,0)   
      
       Case #Menu_edit_paste  : SendMessage_(GadgetID(#Editeur), #WM_PASTE,0,0) 
         
       Case #Menu_edit_undo : SendMessage_(GadgetID(#Editeur),#EM_UNDO,0,0)
         
       Case #Menu_edit_redo : SendMessage_(GadgetID(#Editeur),#EM_REDO,0,0)
      
       Case #Menu_edit_delete 
         Deltext$ = ""       
          SendMessage_(GadgetID(#Editeur),#EM_GETSEL,@StartSel,@EndSel) 
           Buffer$ = Space(EndSel-StartSel) 
            SendMessage_(GadgetID(#Editeur),#EM_GETSELTEXT,0,@Buffer$) 
            SendMessage_(GadgetID(#Editeur),#EM_REPLACESEL,#True,@Deltext$)
              
       Case #Menu_edit_select  
          RangeAll.CHARRANGE\cpMin = 0 : RangeAll\cpMax = -1 
          SendMessage_(GadgetID(#Editeur),#EM_EXSETSEL,0,@RangeAll)
       
       Case #Menu_edit_deleteAll : ClearGadgetItems(#Editeur)         
       
       Case #Menu_edit_Centrer      
       
       Case #Menu_edit_AlignerDroite     
       
       Case #Menu_edit_AlignerGauche 
             
       Case #Menu_edit_Gras   
       
       Case #Menu_edit_Italic     
       
       Case #Menu_edit_Underline       
       
       Case #Menu_edit_Strikeout     
       
       Case #Menu_edit_Normal       
;}           
                        
    EndSelect 
   EndIf   
        
        
Until Quit = 1
End 

EndIf 
 
@+

Re: Souci avec le gadget EditorGadget

Publié : mar. 07/sept./2010 12:31
par Ulix
@ Jacobus
Sympa ce code pour en faire un mini éditeur ! :lol:
Il existe en LINUX ? :idea:

Merci encore pour ce petit morceau de code :wink:

Re: Souci avec le gadget EditorGadget

Publié : mar. 07/sept./2010 13:13
par Jacobus
Ulix a écrit :Il existe en LINUX ? :idea:
Sais pas... voir avec un adepte du pingouin.
Il faut pouvoir traduire les API.

Edit:
J'ai ajouté les fonctions de base dans le menu pour avoir une idée précise du fonctionnement.

@+

Re: Souci avec le gadget EditorGadget

Publié : mar. 07/sept./2010 16:29
par nico
Il manque le undo dans le code!

Re: Souci avec le gadget EditorGadget

Publié : mar. 07/sept./2010 20:00
par Jacobus
nico a écrit :Il manque le undo dans le code!
Ok, j'ai édité le code et ajouté le Undo et le Redo :)

Re: Souci avec le gadget EditorGadget

Publié : mar. 07/sept./2010 21:37
par nico
Ben voilà :D