![]() |
ListBox - Zeile einfärben funktioniert nicht
Hallo ihrs :)
ich hab folgenden Code im OnDrawItem einer Listbox:
Delphi-Quellcode:
(aus der Suche hier im Board :) )
lb_debug.Canvas.Brush.Color := clWhite;
if Pos('<', lb_debug.Items.ValueFromIndex[ lb_debug.ItemIndex]) = 1 then lb_debug.Canvas.Font.Color := clGreen else if Pos('>', lb_debug.Items.ValueFromIndex[ lb_debug.ItemIndex]) = 1 then lb_debug.Canvas.Font.Color := clRed else lb_debug.Canvas.Font.Color := clBlack; TopDif := (lb_debug.ItemHeight div 2) - (Canvas.TextHeight(#32) div 2); lb_debug.Canvas.TextRect(Rect, Rect.Left, Rect.Top + TopDif, lb_debug.Items[Index]); Es geht darum, die Zeilen nach einem Kriterium einzufärben. Wenn das erste Zeichen also ein > ist, solls Rot sein, bei < solls Grün sein. Sonst schwarz. Nur klappt das ganze nicht so richtig. Erst ist alles grün, und färbt sich dann nur richtig ein, wenn ich die Zeile direkt anklicke. Habt ihr ne Idee? tyler |
Re: ListBox - Zeile einfärben funktioniert nicht
Liegt wohl daran, dass du auf komische Weise auf das zu zeichnende Item zugreifst, bei der Textausgabe dann aber richtig machst, so sollte es gehen:
Delphi-Quellcode:
Die zwei mit "<--" gekenzeichneten Zeilen kannst du auch in OnCreate der Form oder so verschieben, da diese nicht jedesmal beim Zeichnen aufgerufen werden müssen.
procedure TForm1.lb_debugDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); var Col: TColor; S: String; begin lb_debug.Canvas.Brush.Color := clWhite; lb_debug.Canvas.Pen.Color := clWhite; lb_debug.Canvas.Rectangle(Rect); S := lb_debug.Items[Index]; if S[1] = '<' then Col := clGreen else if S[1] = '>' then Col := clRed else Col := clBlack; lb_debug.Canvas.Font.Color := Col; lb_debug.Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, lb_debug.Items[Index]); end; Edit: sorry, hatte mich vertan ;) MfG Pr0g |
Re: ListBox - Zeile einfärben funktioniert nicht
vielen Dank Pr0g :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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