TextGadget formatieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Ameisen23
Beiträge: 50
Registriert: 19.10.2013 12:04

TextGadget formatieren

Beitrag 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?
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

Re: TextGadget formatieren

Beitrag von Regenduft »

EditorGadget() mit #PB_Editor_ReadOnly verwendet. Das unterstützt Rich Text!
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Benutzeravatar
Ameisen23
Beiträge: 50
Registriert: 19.10.2013 12:04

Re: TextGadget formatieren

Beitrag 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?
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: TextGadget formatieren

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Ameisen23
Beiträge: 50
Registriert: 19.10.2013 12:04

Re: TextGadget formatieren

Beitrag 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:
Goold
Beiträge: 14
Registriert: 04.02.2014 10:58

Re: TextGadget formatieren

Beitrag 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.
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: TextGadget formatieren

Beitrag 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 
Signatur und so
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: TextGadget formatieren

Beitrag von Kiffi »

Derren hat geschrieben:Geht doch?
Goold meint bestimmt das TextGadgetEx() von oben.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: TextGadget formatieren

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

Derren hat geschrieben:Geht doch?
Wer lesen kann ist klar im vorteil :mrgreen:
Zuletzt geändert von CodeCommander am 18.01.2015 14:30, insgesamt 1-mal geändert.
~ DELETE ~
Antworten