AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Farbe von einzelnen Items einer Listbox ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Farbe von einzelnen Items einer Listbox ändern

Ein Thema von Splinter · begonnen am 24. Mär 2004 · letzter Beitrag vom 27. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
Splinter

Registriert seit: 25. Jan 2004
Ort: Oppenheim
43 Beiträge
 
Delphi 7 Enterprise
 
#1

Farbe von einzelnen Items einer Listbox ändern

  Alt 24. Mär 2004, 22:03
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
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#2

Re: Farbe von einzelnen Items einer Listbox ändern

  Alt 24. Mär 2004, 22:15
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
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Splinter

Registriert seit: 25. Jan 2004
Ort: Oppenheim
43 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Farbe von einzelnen Items einer Listbox ändern

  Alt 24. Mär 2004, 22:22
ok also jetz ändert er aber alle items
wie kann ich ihm sagen das er nur einzelne bearbeiten soll?
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Farbe von einzelnen Items einer Listbox ändern

  Alt 25. Mär 2004, 06:25
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Farbe von einzelnen Items einer Listbox ändern

  Alt 25. Mär 2004, 07:27
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!
  Mit Zitat antworten Zitat
Splinter

Registriert seit: 25. Jan 2004
Ort: Oppenheim
43 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Farbe von einzelnen Items einer Listbox ändern

  Alt 25. Mär 2004, 16:47
ok thx =)
  Mit Zitat antworten Zitat
keineahnung1

Registriert seit: 22. Jan 2005
44 Beiträge
 
#7

Re: Farbe von einzelnen Items einer Listbox ändern

  Alt 8. Mär 2005, 18:33
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
Macht sollte nur an Leute gegeben werden die damit auch umgehen können, und nicht an Leute die wahlweiße Threads schließen. Ein Forum ist da um geholfen zu werden, nicht um Leuten das reden zu verbieten
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Farbe von einzelnen Items einer Listbox ändern

  Alt 8. Mär 2005, 19:30
Zitat von keineahnung1:
.... ListBox1DrawItem(playlist1,1,rect,nil);
gehts nicht, ...
Du musst den oben gezeigten Code in das .OnDrawItem-Ereigniss der Listbox eintragen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Farbe von einzelnen Items einer Listbox ändern

  Alt 27. Mai 2008, 11:30
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?
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#10

Re: Farbe von einzelnen Items einer Listbox ändern

  Alt 27. Mai 2008, 11:33
Hast du den Style der Listbox auf lbOwnerDrawFixed gesetzt?
Jonas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr.
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