Seite 1 von 1

Editor umschalten RTF-/PlainText-Mode

Verfasst: 06.10.2009 19:50
von Hyper
Hallo Gefährten,

mit der Funktion RTF_Switch_Editor kann man den Editor umschalten:
a) RTF-Mode: Man kann alle Formate hineinkopieren (Fett, Farben, etc...)
b) Plain-Mode: Im Text, der einkopiert wird, werden sofort alle Formate entfernt.

Viel Spaß beim Nutzen!

Code: Alles auswählen

Procedure RTF_Switch_Editor ( i_Gadget.l, i_flg_RTF.i ) 
  ;/ ------------------------------------------------------
  ;/ Switches the editor gadget between RTF mode and plain mode
  ;/ by Hyper
  ;/ ------------------------------------------------------
  Protected l_Text.s
  
  If Not IsGadget( i_Gadget )                          ; Check validity gadget
    ProcedureReturn 
  EndIf 
  
  l_Text       = GetGadgetText( i_Gadget )             ; Store the text 
  SetGadgetText( i_Gadget     , ""       )             ; Clear gadget
  
  If i_flg_RTF                                         ; Switch to RTF mode
    SendMessage_( GadgetID(i_Gadget), #EM_SETTEXTMODE, #TM_RICHTEXT, 0)  
    
  Else                                                 ; Switch to plain mode
    SendMessage_( GadgetID(i_Gadget), #EM_SETTEXTMODE, #TM_PLAINTEXT, 0)     
    
  EndIf

  SetGadgetText( i_Gadget     , l_Text  )             ; ReStore the text 
  
EndProcedure


; Test program: Try to copy text with formats and use the button :-)
If OpenWindow(0, 0, 0, 322, 250, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  Define l_Event_ID.i
  
  EditorGadget(0, 8, 8, 306, 133) 
  ButtonGadget(1, 8, 150, 80, 20, "RTF", #PB_Button_Toggle )
  
  Repeat
    
    l_Event_ID = WaitWindowEvent()
    
    If l_Event_ID = #PB_Event_Gadget And EventGadget() = 1
      
      If GetGadgetState( 1 ) 
        RTF_Switch_Editor ( 0, #True)       ; RTF ON
      Else
        RTF_Switch_Editor ( 0, #False)      ; RTF OFF
      EndIf
      
    EndIf    
    
  Until l_Event_ID = #PB_Event_CloseWindow 

EndIf 

Re: Editor umschalten RTF-/PlainText-Mode

Verfasst: 07.10.2009 10:26
von Hyper
Mit dieser weiteren Methode kann man dann feststellen, in welchem Modus sich der Editor befindet:

Code: Alles auswählen

Procedure.i RTF_Get_EditorMode_RTF ( i_Gadget.l )
  ;/ ------------------------------------------------------
  ;/ Returns True or False
  ;/ ------------------------------------------------------
  
  If SendMessage_( GadgetID(i_Gadget ), #EM_GETTEXTMODE, 0, 0)  & #TM_RICHTEXT
    ProcedureReturn #True 
  EndIf
  
EndProcedure