Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ListBox - Textfarbe eines Eintrags ÄNDERN (https://www.delphipraxis.net/85062-listbox-textfarbe-eines-eintrags-aendern.html)

julien 25. Jan 2007 13:36


ListBox - Textfarbe eines Eintrags ÄNDERN
 
Hallo!
Ich habe mir einen Chat Programmiert, wo ich eine Benutzerliste habe und dort der Status angezeigt werden soll. der Server sendet "O", wenn ein Benutzer Online gekommen ist, "A", wenn ein Benutzer in Abwesenheit gegangen ist, und "T", wenn ein Benutzer gerade etwas eintippt. Nun möchte ich in der ListBox diese Stati durch eine Textfarbe kennzeichnen:
Online = clGreen
Abwesend = clRed
Tippt = clBlue
Das mit der Textfarbe beim Hinzufügen eines Eintrags hab ich hinbekommen, nur wie geht das mit dem Ändern?

MfG

p0w3r5tr34m3r 25. Jan 2007 13:44

Re: ListBox - Textfarbe eines Eintrags ÄNDERN
 
hi,

ich würde vorschlagen das du einen timer dafür einsetzt der, sagen wir alle 10s, die listbox neu malt (Repaint). In der OnDrawItem Procedure würde ich dann den text auslesen, einfärben und dann neu in den rect schreiben.

Wie gesagt, es ist nur ein Vorschlag, ob es das ist was du wünscht, weiß ich nicht ;)

Mit freundlichen Grüßen

julien 25. Jan 2007 14:02

Re: ListBox - Textfarbe eines Eintrags ÄNDERN
 
Danke erstmal für die schnelle Antwort! Das mit dem Timer ist zwar eine Lösung aber nicht so Optimal. Die Liste wird ja über den TCP/IP-Eventhandler aktualisiert. Es soll auch kein Flimmern etc. in der Liste entstehen (wie das ja bei der Timer-Lösung das Problem ist), weil das nervt :roll:. Außerdem gibt es noch das Problem, dass ich zwar die Farbe des Eintrags Ändern lassen kann aber die ListBox nicht vernünftig aktualisiert wird, sodass ich die ListBox erst außerhalb des Bildschirmbereichs schieben oder den Eintrag auswählen muss, damit die Textfarbe aktualisiert wird :wink:. Bei Repaint wird ja die ganze ListBox neu "gemalt", sodass wieder das Problem mit dem Flimmern ist.
Das währ echt nett, wenn mir jemand weiterhelfen könnte.

MfG

Light 25. Jan 2007 15:33

Re: ListBox - Textfarbe eines Eintrags ÄNDERN
 
Hi Julien,

also ich würde jetzt einfach mal tippen -
wenn du einfach immer nur dann die Liste (listbox) aktualisierst wenn jemand geht/dazukommt oder schreibt dann sind ja nicht so häufige Farbwechsel oder?
und dann könntest du doch immer wenn du was verändert hast die box neu zeichnen lassen oder anderweitig aktualisieren.

Kannst du jetzt eigentlich einen Eintrag verändern oder nicht (farblich) ??

Leuchtende Grüße

Stefan

alias Light

julien 25. Jan 2007 15:37

Re: ListBox - Textfarbe eines Eintrags ÄNDERN
 
Hi!
Ja, die idee hatte ich auch schon. Ich werds auf jeden Fall nachher mal austesten.

MfG

julien 25. Jan 2007 20:26

Re: ListBox - Textfarbe eines Eintrags ÄNDERN
 
Okay, danke! Funktioniert bestens mit Repaint.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz