Farbische texte in textgadget?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Hi,

am besten nimmst du das Scintilla Gadget und suchst hier mal nach Syntax Highlighting...

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Du machst 'nen Editor mit'm TextGadget? :shock:
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

k.o.e.i.g2 hat geschrieben:brauch es aber weil es ein editor werden soll da kann ichs net auf ein bild doer webgagdet oder sowas machen o.O unlogisch dat schon vorzuschlagen...
:freak: Die Überlegungen von Kaeru Gaman sind völlig korrekt und nicht
im geringsten unlogisch. Das einzig unlogische sind momentan Deine
Anfragen. Ursprünglich hast Du nach einem TextGadget() gefragt.
Jetzt auf einmal soll's ein Editor werden.

Ich würde empfehlen, dass Du Dir mal in Ruhe die PB-Hilfe zu Gemüte
führst und die 'Fachbegriffe' lernst (zumindest den Unterschied zwischen
TextGadget() und StringGadget() (bzw. EditorGadget())), bevor Du das
nächste mal ein Posting absetzt.

Und noch was: Ab und zu einen Punkt oder ein Komma zu setzen tut nicht
weh!

Um zum eigentlichen Thema "Farbische (!sic) texte in textgadget?"
zurückzukommen (oversized version):

Code: Alles auswählen

HTMLTemplate.s = "<html><body scroll='no' leftmargin='5' topmargin='0' marginwidth='0' marginheight='0'>#TEXT#</body></html>"

OpenWindow(0, #PB_Ignore, #PB_Ignore, 250, 120, "", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Invisible)
CreateGadgetList(WindowID(0))

WebGadget(0, 5, 5, 80, 20, "")
Text.s = ReplaceString(HTMLTemplate, "#TEXT#", "<font color='red'>Pure</font><font color='green'>Ba</font><font color='blue'>sic:</font>")
SetGadgetItemText(0, #PB_Web_HtmlCode, Text)

StringGadget(1, 90, 5, 120, 20, "Feel the pure power!")

While WindowEvent() : Delay(1) : Wend

HideWindow(0, #False)

Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
Grüße ... Kiffi
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

k.o.e.i.g2 hat geschrieben:brauch es aber weil es ein editor werden soll da kann ichs net auf ein bild doer webgagdet oder sowas machen o.O unlogisch dat schon vorzuschlagen...
des is ja auchn Handkäs, dass ich das riechen kann was du machen willst.
weiste, wenn man in nem forum fragen stellt, dann erklärt man auch was dazu,
damit die anderen wissen, worauf man hinaus will.
und auf jeden fall bleibt man freundlich.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Kiffi hat geschrieben:Farbische (!sic) texte in textgadget?
Aber Kiffi... tststs... Du bist doch Vater.
Liest Du deine(m|n|r) lütten keine Kindergeschichten mehr vor?

[ducken]
Farbisch ist die Sprache der Farbwesen vom Planeten Indigo, dem Traumplanet der Farbforscher, wie man hier problemlos recherchieren kann.
Vielleicht war/ist k.o.e.i.g2 ja auf der "Kinder Uni im Netz" :lol:
[/ducken]

SCNR...
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Schönes Seitendesign ... Bild
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Wenn es auch was Älteres tut, was die API benutzt, vorausgesetzt du hast keine Demo, probiere dieses mal aus. Ich habe den alten Source mal an
PB4 angepasst :lol:

Hier der Link aus der Forumssuche:
http://www.purebasic.fr/german/viewtopi ... =5908#5908

Und hier etwas aktualisiert nach PB4 mit API:

Code: Alles auswählen

;Selektierte Buchstaben ersetzen bzw. färben.
;Codeschnipsel written by Falko
;Angepasst nach PB4 (14.4.2008
String$="Mein Test"
Buffer$=Space(255)
Global hdc
Global mychar.CHARFORMAT

  ;
  ;Ermittle die Anzahl Buchstaben der obrigen Zeile
  ;
  Procedure.l GetCursorPos(YPos.l)
   Result = SendMessage_(hdc,#EM_LINEINDEX,YPos,0)
   ProcedureReturn Result
  EndProcedure
 ;
 ; Farbe und Fontattribute setzen
  Procedure SetCharFormat(Mask.l,Effects.l,Font.s,Color.l)
     ;mychar.CHARFORMAT ; Sollte vorher als global deklariert werden.
     mychar\cbSize=SizeOf(CHARFORMAT)
     mychar\dwMask=Mask;#CFM_BOLD|#CFM_COLOR ; Fettschrift und Color setzen 
     mychar\dwEffects=Effects
     mychar\yHeight=500
     mychar\crTextColor=Color
     mychar\bCharSet=0
     PokeS(@mychar\szFaceName, Font)
     EndProcedure
 
 
  If OpenWindow(0,0,0,322,275,"StringGadget Flags",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
     hdc.l=EditorGadget (0,8,8,485,385)
     AddGadgetItem(0,0,"Wie wäre es mit dieser Zeile, die wir ändern wollen.")
     AddGadgetItem(0,1,"Wie wäre es mit dieser Zeile, die wir ändern wollen.")   
     AddGadgetItem(0,2,"Wie wäre es mit dieser Zeile, die wir ändern wollen.")
     ;
     ;In dieser Zeile ein Teilstring, Farbe und Fontattribut verändern
     ;
     Char=GetCursorPos(1)
     SendMessage_(hdc,#EM_SETSEL,Char+16,Char+28); markiere Textteil, der geändert werden soll
     SetCharFormat(#CFM_BOLD|#CFM_COLOR,1,"Arial",$0000FF);Farbe auswählen
     SendMessage_(hdc,#EM_SETCHARFORMAT,#SCF_SELECTION,mychar); Setzen der Attribute auf selection
     SendMessage_(hdc,#EM_REPLACESEL,0,String$); Ersetze diesen Teil durch den String$
     ;
     ;Textteil Markieren und durch nur Farbe Blau und Fontattribute ersetzen
     ;
     
     Char=GetCursorPos(2)
     SendMessage_(hdc,#EM_SETSEL,Char+8,Char+8+8); markiere Textteil, der gefärbt werden soll
     SetCharFormat(#CFM_FACE | #CFM_SIZE | #CFM_COLOR,1,"Symbol",$FF0000)
     SendMessage_(hdc,#EM_SETCHARFORMAT,#SCF_SELECTION,mychar);Char-Attribute setzen
     SendMessage_(hdc,#EM_GETSELTEXT,0,Buffer$); kopiere Selektieren Text in den Buffer 
     SendMessage_(hdc,#EM_REPLACESEL,0,Buffer$); ersetze Text dann aus dem Buffer mit den Attributen
   
   
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf
Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten