EditorGadget: Farbige Texte, Fonts, Zeilenumbrüche
Verfasst: 15.08.2006 08:23
Es dauerte eine Weile, bis ich als Anfänger aus dem Forum und Codearchiv alles zusammen hatte um ein EditorGadget farbig mit
Zeilenumbrüchen
und verschiedenen Schriften zu gestalten.
Hier die Zusammenfassung für ebensolche Neulinge:
Ein EditorGadget versteht RTF.
Erstelle mit Wordpad einen bunten Text und speichere ihn mit "Datei - speichern unter.." mit Dateityp RTF-Format als text.rtf
Nenne die Datei um zu text.txt und öffne diesen Text mit einem Editor. Nun wird der RTF-Code angezeigt.
Dieser Code ist der String, den man anzuzeigen hat. Man kann ihn z.B. zeilenweise aufaddieren. Achtung! Ein Zeilenumbruch in RTF ist \par und danach muss ein Leerzeichen kommen, wenn man den String aufaddiert.
Hier ein Beispiel:
*****************************
Eine einfache Lösung für Farben, diesmal mit API-Befehlen, hat mir Edel zugeschickt:
***************************
Eine weitere Lösung gibt es von Falko:
http://www.purebasic.fr/german/viewtopi ... itorgadget
Viel Spaß
Zeilenumbrüchen
und verschiedenen Schriften zu gestalten.
Hier die Zusammenfassung für ebensolche Neulinge:
Ein EditorGadget versteht RTF.
Erstelle mit Wordpad einen bunten Text und speichere ihn mit "Datei - speichern unter.." mit Dateityp RTF-Format als text.rtf
Nenne die Datei um zu text.txt und öffne diesen Text mit einem Editor. Nun wird der RTF-Code angezeigt.
Dieser Code ist der String, den man anzuzeigen hat. Man kann ihn z.B. zeilenweise aufaddieren. Achtung! Ein Zeilenumbruch in RTF ist \par und danach muss ein Leerzeichen kommen, wenn man den String aufaddiert.
Hier ein Beispiel:
Code: Alles auswählen
; PB 4.0
OpenWindow(0, 200, 200, 400, 200,"EditorGadget", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget)
CreateGadgetList(WindowID(0))
EditorGadget(0, 0, 0, WindowWidth(0), WindowHeight(0))
text$ = "{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fmodern\fprq1\fcharset0 Courier New;}{\f1\fswiss\fprq2\fcharset0 Arial;}{\f2\fswiss\fprq2\fcharset0 Verdana;}}"
text$ = text$ + "{\colortbl ;\red255\green0\blue0;\red0\green128\blue0;\red0\green0\blue255;\red0\green0\blue0;}"
text$ = text$ + "\viewkind4\uc1\pard\f0\fs20 normal \cf1 rot\cf0 \cf2 gr\'fcn\cf0 \b fett\b0 \cf3\b fettblau \cf0\b0 normal\par "
text$ = text$ + "Zeilenumbruch \f1 Arial, \f2\fs28 Verdana\fs20 , \f0 Courier New\cf4\par "
text$ = text$ + "}"
SetGadgetText(0, text$)
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
Eine einfache Lösung für Farben, diesmal mit API-Befehlen, hat mir Edel zugeschickt:
Code: Alles auswählen
; PB 4.0 - Bunte Texte im EditorGadget
Procedure SetColor(id,s,e,color)
Protected cf.charformat2\cbSize = SizeOf(charformat2)
Protected sel.CHARRANGE
SendMessage_(GadgetID(id),#EM_EXGETSEL,0,sel)
cf\dwMask = #CFM_COLOR
cf\crTextColor = color
SendMessage_(GadgetID(id),#EM_SETSEL,s,e)
SendMessage_(GadgetID(id),#EM_SETCHARFORMAT,#SCF_SELECTION,@cf)
SendMessage_(GadgetID(id),#EM_SETSEL,sel\cpMin,sel\cpMax)
EndProcedure
OpenWindow(0,0,0,400,100,"")
CreateGadgetList(WindowID(0))
EditorGadget(0,0,0,300,80)
ButtonGadget(1,310,10,50,18,"Bunt")
ButtonGadget(2,310,30,50,18,"Schwarz")
SetGadgetText(0,"Das ist ein roter und grüner Text im EditorGadget")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case 1 ; Button "Bunt"
SetColor(0,12,17,$0000FF) ; anstelle $0000FF ist natürlich auch RGB(255,0,0) möglich
SetColor(0,22,28,$408000) ;
Case 2 ; Button "Schwarz"
SetColor(0,0,28,$0)
EndSelect
EndSelect
ForEver
End
Eine weitere Lösung gibt es von Falko:
http://www.purebasic.fr/german/viewtopi ... itorgadget
Viel Spaß