EditorGadget: Farbige Texte, Fonts, Zeilenumbrüche

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
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

EditorGadget: Farbige Texte, Fonts, Zeilenumbrüche

Beitrag von Eckhard.S »

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:

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ß
Zuletzt geändert von Eckhard.S am 28.08.2006 07:45, insgesamt 2-mal geändert.
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
Benutzeravatar
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Beitrag von Eckhard.S »

P.S. Fortgeschrittene bedienen sich der CatchRTF-Prozeduren:

http://www.purearea.net/pb/CodeArchiv/G ... atchRTF.pb
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Cool thx
Antworten