Eingabe Farbe ändern (mehrfach)

Anfängerfragen zum Programmieren mit PureBasic.
LeoS#PUpDock
Beiträge: 13
Registriert: 23.08.2005 16:27
Kontaktdaten:

Eingabe Farbe ändern (mehrfach)

Beitrag von LeoS#PUpDock »

Kann man in einem StringGadget (oder anderem) die Farbe ändern und wenn wie?

Am besten merfach ändern, so das in einem StringGadget z.B. ein bestimmtes Wort Grün und ein bestimmtes Wort Blau und dick gekennzeichnet wird.

Gibt es da möglichkeiten? Könnte man das mit einem Programmiertext regeln?
Ein kleines Programmier-Forum.
http://leonhard.le.ohost.de/phpkit/
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

nein, das geht nicht.
du solltest den textgadget mal mit
"SetGadgetFont" und "LoadFont" modifizieren. schau mal in der hilfe. mit dieser methode kannst du sogar den etxt im textgadget unterstrichen machen oder fett oder kkursiv (oder alles zusammen).
oder nimm statt eines textgadgets einfach ein hyperlinkgadget.
da kannst du als letzten parameter angeben, welche farbe der text haben soll, wenn man mit der maus darüber fährt.

mehr möglichkeiten weiß ich nicht, außer noch die eine, dass du in einem OpenWindow-fenster (das wolltest du doch, oder) mit StartDrawing() rumwerkelst, da kannst du tatsächlich besser die farbe wechseln, diese methode ist übrigens nicht so aufwendig wie die anderen methoden, die ich dir genannt habe.

ich hoffe ich konnte dir helfen, ansonsten poste hier nochmal, AND51

(sry für die rechtschreibfehler, aber ich bin meistens sehr faul so längere texte ordnungsgemäß zu schreiben)
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Zum Fären von Gadgetinhalten kann dir dieser Code zum Verständniss helfen.
Das mit den einzelnen Buchstaben Färben geht auch ist aber sehr kompliziert.
Ich hab das glaube ich schonmal in Freds PureBasic Forum gesehen.

Einen Tip geben kann ich dir aber schonmal....
Nimm ein Stringgadget ohne Rahmen und auf Readonly gesetzt.

Du könntest dan den Fontstyle Buchstabenweise per Sendmessage ändern. (Siehe Code 2)

(code 1)

Code: Alles auswählen

; English forum: http://purebasic.myforums.net/viewtopic.php?t=8181&highlight=
; Author: Berikco
; Date: 04. November 2003

OpenWindow(0,100,150,400,400,#PB_Window_SystemMenu,"TEST") 
Global Yellow, Green, blauw 
Yellow = CreateSolidBrush_($66E8FB) 
Green = CreateSolidBrush_($7BDF84) 
blauw=CreateSolidBrush_($E5B91A) 
Procedure myCallback(WindowID, Message, wParam, lParam) 
  Result = #PB_ProcessPureBasicEvents 
  Select Message 
  Case #WM_CTLCOLORSTATIC 
    Select lparam 
    Case GadgetID(1) 
      SetBkMode_(wParam,#TRANSPARENT) 
      SetTextColor_(wParam, $FFFFFF) 
      Result = Yellow 
    Case GadgetID(4) 
      SetBkMode_(wParam,#TRANSPARENT) 
      SetTextColor_(wParam, $FFFFFF) 
      Result = blauw 
    EndSelect 
  Case #WM_CTLCOLOREDIT 
    Select lparam 
    Case GadgetID(3) 
      SetBkMode_(wParam,#TRANSPARENT) 
      SetTextColor_(wParam, $FFFFFF) 
      Result = green 
    EndSelect 
  EndSelect 
  ProcedureReturn Result 
EndProcedure 
SetWindowCallback(@myCallback()) 
CreateGadgetList(WindowID()) 
TextGadget(1,10,10,100,15,"Hoegaarden",#PB_Text_Center) 
TextGadget(2,120,10,100,15,"Jupiler",#PB_Text_Center) 
StringGadget(3, 10, 40, 200, 40, "Goedendag allemaal, voor mij een pintje" , #PB_String_Multiline) 
CheckBoxGadget(4, 10, 90,100, 20, "Beer Here") 
Repeat 
Until WaitWindowEvent() = #PB_EventCloseWindow
; ExecutableFormat=Windows
; EnableXP
; EOF

(Code 2)

Code: Alles auswählen

Procedure Editor_Color(Gadget, Color.l) 
  format.CHARFORMAT 
  format\cbSize = SizeOf(CHARFORMAT) 
  format\dwMask = #CFM_COLOR 
  format\crTextColor = Color 
  SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format) 
EndProcedure 

Beispiel zu Code 2: (ungetestet)

Code: Alles auswählen

String.s="Die ist ein Test"
For x=1 To Len(String.s)
    Editor_Color(#deineditorgadget, rgb(100+random(155),100+random(155),100+random(155)))      SendMessage_(GadgetID(#deineditorgadget),#EM_REPLACESEL,0,mid(String.s,x,1))
next x
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Hierfür ist ein EditorGadget geeigneter, also für verschiedenen Farben in einer Zeile. Du kannst zur Umsetzung zum Beispiel die hervorragende AVEditor Lib von A.Miethe verwenden oder für sowas wie Syntaxhighlightning die Syntaxhighlightning Lib von DarkDragon. Findeste alles auf PureArea.net.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Wow, dagegen sieht meine Hilfe ja alt aus :oops: :wink:
Aber akzeptabel ist sie doch oder?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Falko
Admin
Beiträge: 3531
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.0
Kontaktdaten:

Beitrag von Falko »

Ich habe jetzt nicht diesen ganzen Thread durchgelesen.
Entschuldige dann bitte, wenn hier nichts zutrifft. Aber Schau mal hier im
folgenden Link.

http://forums.purebasic.com/german/view ... text+color

Hier ist bestimmt sowas ähnliches dabei.

MfG Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Antworten