Editor umschalten RTF-/PlainText-Mode

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Editor umschalten RTF-/PlainText-Mode

Beitrag 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 
PB 5.72
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Re: Editor umschalten RTF-/PlainText-Mode

Beitrag 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
PB 5.72
Antworten