Souci avec le gadget EditorGadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Souci avec le gadget EditorGadget

Message 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
...
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%
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Souci avec le gadget EditorGadget

Message 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  
... 
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Souci avec le gadget EditorGadget

Message 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.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Re: Souci avec le gadget EditorGadget

Message 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 
 
@+
Dernière modification par Jacobus le mar. 07/sept./2010 19:58, modifié 2 fois.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: Souci avec le gadget EditorGadget

Message 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:
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Re: Souci avec le gadget EditorGadget

Message 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.

@+
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Souci avec le gadget EditorGadget

Message par nico »

Il manque le undo dans le code!
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Re: Souci avec le gadget EditorGadget

Message 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 :)
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Souci avec le gadget EditorGadget

Message par nico »

Ben voilà :D
Répondre