Seite 1 von 2

TextGadget formatieren

Verfasst: 19.10.2013 21:27
von Ameisen23
Ich habe leider weder in der Hilfe noch im Forum was gefunden um ein TextGadget zu formatieren. Ich möchte gerne Teile des Textes formatieren. Unterstreichen oder farbisch einfärben usw.
Wie stelle ich das an? Muss ich viele einzelne TextGadgets nebeneinander erstellen oder muss ich WebGadget nutzen? Ich finde WebGadget keine gute Idee. WebGadget ist eigentlich dazu da um HTML Seiten anzuzeigen aber ich möchte bloß einen Text formatiert darstellen. Außerdem macht es bei WebGadget immer *klick* und das man rechtsklicken kann finde ich auch doof weil ein Internet Explorer Menü erscheint.
Und mein Program verbraucht deswegen deutlich mehr RAM. Jaja ich weiß man hat genug RAM und RAM ist billig. Aber ich finde WebGadget als TextGadget zu missbrauchen finde ich nicht so gut. Jemand eine Idee wie ich ein TextGadget formatieren kann?

Re: TextGadget formatieren

Verfasst: 19.10.2013 22:25
von Regenduft
EditorGadget() mit #PB_Editor_ReadOnly verwendet. Das unterstützt Rich Text!

Re: TextGadget formatieren

Verfasst: 19.10.2013 22:35
von Ameisen23
Ach so wusste ich nicht dass EditorGadget Richedit unterstützt. Man muss zwar die ganzen RTF Formatierungscodes kennen
aber immerhin etwas. Gibt es hier bereits eine Liste der wichtigsten RTF Codes?
Was mich noch stört ist der Rahmen von EditorGadget und die Cursoränderung so als ob man reinschreiben könnte und es hat leider einen weißen Hintergrund.
Kann man die drei Sachen deaktivieren so dass es aussieht als ob es ein echter TextGadget ist?

Re: TextGadget formatieren

Verfasst: 19.10.2013 23:01
von RSBasic

Code: Alles auswählen

EnableExplicit

Define EventID
Define RTFString$

Procedure TextGadgetEx(Gadget, x, y, Width, Height, Text$, Flags = 0)
  EditorGadget(Gadget, x, y, Width, Height, Flags)
  DisableGadget(Gadget, 1)
  SetWindowTheme_(GadgetID(Gadget), @"", @"")
  SetWindowLongPtr_(GadgetID(Gadget), #GWL_EXSTYLE, 0)
  SendMessage_(GadgetID(Gadget), #EM_SHOWSCROLLBAR, #SB_HORZ, #False)
  SendMessage_(GadgetID(Gadget), #EM_SHOWSCROLLBAR, #SB_VERT, #False)
  SetWindowPos_(GadgetID(Gadget), 0, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE | #SWP_FRAMECHANGED)
  SetGadgetColor(Gadget, #PB_Gadget_FrontColor, RGB(0, 0, 0))
  SetGadgetText(Gadget, Text$)
 
EndProcedure

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  RTFString$ + "{\rtf1"
  RTFString$ + "Hallo Welt!"
  RTFString$ + "\par"
  RTFString$ + "{\i Dies} ist ein "
  RTFString$ + "formatierter {\b Text}."
  RTFString$ + "\par"
  RTFString$ + "{\colortbl;\red0\green0\blue0;\red255\green0\blue0;}"
  RTFString$ + "\cf2 Farbiger Text"
  RTFString$ + "}"
 
  TextGadgetEx(1, 10, 10, WindowWidth(0)-20, 50, RTFString$)
 
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

Re: TextGadget formatieren

Verfasst: 19.10.2013 23:20
von Ameisen23
:o Klasse danke für den Code! Ich werde mich mit rtf beschäftigen und dann kann ich mit deinem Code meine eigenen TextGadgets erstellen. :allright:

Re: TextGadget formatieren

Verfasst: 11.08.2014 09:31
von Goold
Bei mir funktioniert der Code nun auch, nachdem ich keine Unicode-Executables mehr erstellen lasse.

Gibt es einen Tip, wie man die Hintergrundfarbe anpassen kann?

SetGadgetColor(Gadget, #PB_Gadget_BackColor, RGB(x, x, x)) funktioniert leider nicht, wäre ja auch zu einfach gewesen.

Re: TextGadget formatieren

Verfasst: 11.08.2014 09:47
von Derren
Geht doch?

Code: Alles auswählen

OpenWindow(0, 0, 0, 400, 300, "EditorGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EditorGadget(0, 0, 0, 400, 300, #PB_Editor_ReadOnly)
SetGadgetColor(0,#PB_Gadget_BackColor,RGB(Random(255), Random(255), Random(255)))
AddGadgetItem(0, -1, "Hallo Welt")
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow 

Re: TextGadget formatieren

Verfasst: 11.08.2014 09:49
von Kiffi
Derren hat geschrieben:Geht doch?
Goold meint bestimmt das TextGadgetEx() von oben.

Grüße ... Kiffi

Re: TextGadget formatieren

Verfasst: 11.08.2014 09:52
von RSBasic
Da es sich um RTF-Formatierung handelt, musst du nach RTF-Spezifikationen suchen oder du erstellst in WordPad ein RTF-Dokument und schaust im Quellcode, wie der Code für deine gewünschte Formatierung lautet. Soweit ich weiß fängt es mit "{\background" an und in diesem Block kannst du die Farbe festlegen.

Verfasst: 11.08.2014 09:58
von CodeCommander
Derren hat geschrieben:Geht doch?
Wer lesen kann ist klar im vorteil :mrgreen: