![]() |
Farbe von einzelnen Items einer Listbox ändern
Hi ich möchte gerne wie oben genannt die Farbe von einzelnen bestimmten Items einer Listbox ändern.
Ich habe bereits in der Suchfunktion geschaut bin dort aber nich wirklich fündig geworden bis auf ein Thread wo das Problem mit canvas gelöst wurde. Allerdings bin ich damit nicht so zurecht gekommen wie ich mir das vorstelle, deswegen wollte ich fragen ob jemand eine andere Lösung weiß. mfg Splinter |
Re: Farbe von einzelnen Items einer Listbox ändern
Hallo,
Soweit ich weiß gehts über den Canvas von der ListBox. Den Style von der Listbox musst du auf lbOwnerDrawFixed stellen. Un im OnDrawItem zeichnest du dann das Item selbst:
Delphi-Quellcode:
grüße, daniel
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); var TopDif: Integer; // Gleicht die Höhendifferenz aus begin with (Control as TListbox) do begin Canvas.Brush.Color := clRed; //Hintergrundfarbe Canvas.Font.Color := clYellow; //Schriftfarbe TopDif := (ItemHeight div 2) - (Canvas.TextHeight(#32) div 2); Canvas.TextRect(Rect, Rect.Left, Rect.Top + TopDif, Items[Index]); end; end; |
Re: Farbe von einzelnen Items einer Listbox ändern
ok also jetz ändert er aber alle items
wie kann ich ihm sagen das er nur einzelne bearbeiten soll? |
Re: Farbe von einzelnen Items einer Listbox ändern
Zitat:
Delphi-Quellcode:
begin
if (index MOD 2 = 0) then //Es wird z.B. jeder Zweite Eintrag bearbeitet. begin //Farben setzen end; end; |
Re: Farbe von einzelnen Items einer Listbox ändern
Also legst du alle relevanten Einträge in ein Array und checkst das nacheinander für den jeweiligen Index durch(, wenn du willst).
Delphi-Quellcode:
Und dann eben noch den Index durchchecken!
var a: array[1..10] of integer;
a[1] := 9; a[2] := 19; ... |
Re: Farbe von einzelnen Items einer Listbox ändern
ok thx =)
|
Re: Farbe von einzelnen Items einer Listbox ändern
aber wie kann ichd ass dann aufrufen
so ListBox1DrawItem(playlist1,1,rect,nil); gehts nicht, was für params müssen da rein. vielen dank |
Re: Farbe von einzelnen Items einer Listbox ändern
Zitat:
|
Re: Farbe von einzelnen Items einer Listbox ändern
Hallo,
ich weiß der Artikel ist schon älter, ich habe jedoch das gleiche Problem: Habe den o.g. Code übernommen
Delphi-Quellcode:
Leider passiert da garnichts!?
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); {----------------------------------------------------------------------------------------------------} var TopDif: Integer; // Gleicht die Höhendifferenz aus begin with (Control as TListbox) do begin if index = (StrToInt(EdtTreffer.Text)) then //es sollen nur das Item verändert werden, dass der Eingabe entspricht! begin Canvas.Brush.Color := clRed; //Hintergrundfarbe Canvas.Font.Color := clYellow; //Schriftfarbe TopDif := (ItemHeight div 2) - (Canvas.TextHeight(#32) div 2); Canvas.TextRect(Rect, Rect.Left, Rect.Top + TopDif, Items[Index]); end; end; end; Muss diese Prozedur nicht explizit aufgerufen werden? |
Re: Farbe von einzelnen Items einer Listbox ändern
Hast du den Style der Listbox auf lbOwnerDrawFixed gesetzt?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:42 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 by Thomas Breitkreuz