![]() |
Schriftfarbe einer Zeile in der Listbox ändern?
Hallo DPler.
Ich habe ein kleines Programm geschrieben, das andere PC's anpingt und dann in einer Listbox auflistet, welche "online" sind. Was muss ich den tun, damit die Rechern die "online" sind grün aufgelistet werden und die anderen rot? Denn wenn ich einfach Listbox1.font.color verändere, wirkt sich das auf die gesamte Listbox auf. Ausserdem habe ich noch das Problem, dass die Listbox nicht weiter nach unten scrollt, wenn es mehrere Einträge werden, als sichtbar in die Liste passen. Gruß Christian |
Re: Schriftfarbe einer Zeile in der Listbox ändern?
Moin Chris,
dazu muss die Eigenschaft Style der ListBox auf lbOwnerDrawFixed gesetzt werden. So könnte man dann die Einträge immer im Wechsel rot und grün schreiben.
Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); begin if (Index mod 2 = 0) then begin ListBox1.Canvas.Font.Color := clred; end else begin ListBox1.Canvas.Font.Color := clGreen; end; ListBox1.Canvas.TextOut(Rect.Left,Rect.Top,ListBox1.Items[Index]); end; |
Re: Schriftfarbe einer Zeile in der Listbox ändern?
Danke,
das funktioniert, aber was schreibe ich denn in die Bedingung, damit es nur grün wird, wenn eine Variable "status" vom Typ String = "online" ist? Gruß Christian |
Re: Schriftfarbe einer Zeile in der Listbox ändern?
Moin Chris,
Delphi-Quellcode:
if status = 'online' then begin
ListBox1.Canvas.Font.Color := clGreen; end else begin ListBox1.Canvas.Font.Color := clRed; end; |
Re: Schriftfarbe einer Zeile in der Listbox ändern?
Hi Christian.
Das habe ich auch gedacht. Aber wenn ich das so mache, ändert sích die Schriftfarbe aller Items. Ich versteh das nicht :roll: Gruß Christian |
Re: Schriftfarbe einer Zeile in der Listbox ändern?
Hi,
setzt du "online" für jedes zeichnen (zeichen <> hinzufügen) neu? Chris |
Re: Schriftfarbe einer Zeile in der Listbox ändern?
Zitat:
Ich prüfe, wieviel Bytes ich zurückbekomme. Wenn die Bytes=0 sind, setze ich Status auf "offline" oder sonst eben auf "online". Dann trage ich das so in die Listbox ein :
Delphi-Quellcode:
Mir ist auch aufgefallen, dass das ändern der Farbe funktioniert, aber nur, wenn man nicht scrollt. Hat jemand eine Ahnung wodran das liegt? :?:
listbox1.items.add('...'+status);
Gruß Christian |
Re: Schriftfarbe einer Zeile in der Listbox ändern?
Hi,
ich sehe das Problem. Du machst das derzeit so:
Delphi-Quellcode:
Das machst du in deiner Routine, in der du auch pingst.
if (iReturnedBytes > 0) then
online := true; ListBox1.Items.Add('192.168.0.1'); // oder irgendeine andere IP Das Problem ist aber nun, dass das Zeichnen nicht automatisch mit dem Hinzufügen passiert. Du musst also folgendermaßen arbeiten: Füge alle Rechner in die ListBox und mache das dann folgendermaßen im OnDrawItem:
Delphi-Quellcode:
Chris
iReturnedBytes := PingeDenRechnerAnMitIP(ListBox1.Items[Index]);
if (iReturnedBytes > 0) then online := true; if online then begin ListBox1.Canvas.Font.Color := clGreen; end else begin ListBox1.Canvas.Font.Color := clRed; end; |
Re: Schriftfarbe einer Zeile in der Listbox ändern?
Ich versteh das nicht ganz :oops:
Zitat:
Gruß Christian |
Re: Schriftfarbe einer Zeile in der Listbox ändern?
Hi,
kannst oder solltest. Das kannst du dir jetzt aussuchen. ;) Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz