Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Farbe von einzelnen Items einer Listbox ändern (https://www.delphipraxis.net/18806-farbe-von-einzelnen-items-einer-listbox-aendern.html)

Splinter 24. Mär 2004 21:03


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

Sanchez 24. Mär 2004 21:15

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:
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;
grüße, daniel

Splinter 24. Mär 2004 21:22

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?

Sharky 25. Mär 2004 05:25

Re: Farbe von einzelnen Items einer Listbox ändern
 
Zitat:

Zitat von Splinter
ok also jetz ändert er aber alle items
wie kann ich ihm sagen das er nur einzelne bearbeiten soll?

Dafür musst Du die Variable Index auswerten.

Delphi-Quellcode:
begin
  if (index MOD 2 = 0) then //Es wird z.B. jeder Zweite Eintrag bearbeitet.
  begin
    //Farben setzen
  end;
end;

Dax 25. Mär 2004 06:27

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:
var a: array[1..10] of integer;

a[1] := 9;
a[2] := 19;

...
Und dann eben noch den Index durchchecken!

Splinter 25. Mär 2004 15:47

Re: Farbe von einzelnen Items einer Listbox ändern
 
ok thx =)

keineahnung1 8. Mär 2005 17:33

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

Sharky 8. Mär 2005 18:30

Re: Farbe von einzelnen Items einer Listbox ändern
 
Zitat:

Zitat von keineahnung1
.... ListBox1DrawItem(playlist1,1,rect,nil);
gehts nicht, ...

Du musst den oben gezeigten Code in das .OnDrawItem-Ereigniss der Listbox eintragen.

mo_greene 27. Mai 2008 10:30

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:
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;
Leider passiert da garnichts!?
Muss diese Prozedur nicht explizit aufgerufen werden?

Aurelius 27. Mai 2008 10:33

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 02:35 Uhr.
Seite 1 von 2  1 2      

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