![]() |
Zeile einer ListBox einfärben
Hallo,
ich möchte z.b. die 5te zeile einer listbox grün einfärben. Wie mach ich das? |
Re: Zeile einer ListBox einfärben
Hi, das geht so in der Art:
Delphi-Quellcode:
Aber bemühe doch bitte die Suchfunktion, das wurde schon oft gefragt.
// ListBox-Style muss auf "lbOwnerDrawFixed" sein
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin if Index = 4 then // 5. Zeile begin ListBox1.Canvas.Brush.Color := clRed; ListBox1.Canvas.Pen.Color := clWhite; ListBox1.Canvas.Rectangle(Rect); ListBox1.Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, ListBox1.Items[Index]); end; end; |
Re: Zeile einer ListBox einfärben
da hab ich blos 1 problem ...
wenn ich nen button nehm und mach onclick
Delphi-Quellcode:
Dann kann man die einträge oberhalb von der 5ten zeile nicht lesen =/
ListBox1.Items.Add('test');
|
Re: Zeile einer ListBox einfärben
Zitat:
das liegt an einem kleinen Fehler im Code von Matze ;-) Da sein .TextOut innerhalb des Blocks mit der IF-Abfrage steht wird das Item nur für die fünfte Zeile gezeichnet. So wird ein Schuh draus:
Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); begin with (control as TListBox) do begin if Index = 4 then // Farben für die 5. Zeile ändern. begin Canvas.Brush.Color := clRed; Canvas.Pen.Color := clWhite; Canvas.Rectangle(Rect); end; Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, Items[Index]); // Item wird immer gezeichnet end; end; |
Re: Zeile einer ListBox einfärben
Vielen danke, damit hat sich die sache erledigt :) :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 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