AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schriftfarbe in Listbox

Ein Thema von Hansa · begonnen am 24. Aug 2004 · letzter Beitrag vom 7. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

Schriftfarbe in Listbox

  Alt 24. Aug 2004, 21:17
Hi,

in einer Listbox definiere ich die Farben folgendermaßen :

Delphi-Quellcode:
      Listbox1.Canvas.Brush.Color := clRed;
      Listbox1.Canvas.Pen.Color := clWhite;
      Listbox1.Canvas.FillRect(Rect);
      Listbox1.Canvas.TextOut(Rect.Left, Rect.Top, Listbox1.Items[Index]);
Brush läuft auch richtig, aber die Schriftfarbe bleibt immer schwarz. Da kann ich machen, was ich will. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
paelesoft

Registriert seit: 3. Jul 2004
37 Beiträge
 
Delphi 7 Professional
 
#2

Re: Schriftfarbe in Listbox

  Alt 24. Aug 2004, 21:21
Muss im property "Font" (ListBox.Font.Color) gesetzt werden
Gruß Erik
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Schriftfarbe in Listbox

  Alt 24. Aug 2004, 21:36
Das muß zur Laufzeit geschehen, da ich beim Entwurf nicht wissen kann, welcher Wert tatsächlich gebraucht wird. Ob es also weiß auf rot ist oder Standard.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Schriftfarbe in Listbox

  Alt 24. Aug 2004, 21:37
Na dann verwende ListBox1.Font.xxx
Das müsstest du ja überschreiben können

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
paelesoft

Registriert seit: 3. Jul 2004
37 Beiträge
 
Delphi 7 Professional
 
#5

Re: Schriftfarbe in Listbox

  Alt 24. Aug 2004, 21:38
Geht nicht:
Delphi-Quellcode:
  ....
  Listbox1.Font.Color := clRed;
  ....
???
Gruß Erik
  Mit Zitat antworten Zitat
paelesoft

Registriert seit: 3. Jul 2004
37 Beiträge
 
Delphi 7 Professional
 
#6

Re: Schriftfarbe in Listbox

  Alt 24. Aug 2004, 21:41
Das ^^ wird natürlich beim OnDrawItem - Ereignis eingesetzt.
Und die Listbox hat logischerweise den Stil lbOwnerdrawFixed
Gruß Erik
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Schriftfarbe in Listbox

  Alt 24. Aug 2004, 21:59
Natürlich setze ich das im OnDraw. 8) Allerdings ist Pen das falsche. Es ist Font, an gleicher Stelle.
Gruß
Hansa
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#8

Re: Schriftfarbe in Listbox

  Alt 21. Okt 2004, 22:36
Hallo,

ich hab mir jetzt verschiedene Threads durchgelesen zu dem Thema, aber ich hab 's nicht verstanden. Ich will auch einer Listbox ein Item hinzufügen und jedem Item eine eigene Farbe verpassen. (Die Listbox soll Einträge der Registry anzeigen.)

Zuerst wird ein Farbwert ausgelesen, dann soll die Farbe eben geändert (werden) und danach das Item in dieser Farbe hinzugefügt werden.
Der Code sieht etwa so aus:

Delphi-Quellcode:
procedure TForm1.Listbox1Click(Sender: TObject);
[...]
for i:=1 to Liste.Count do //Liste ist eine StringListe
  begin
    if regist.ValueExists('Name_'+IntToStr(i)) then
    begin
      Name:=regist.ReadString('Name_'+IntToStr(i));
      Farbe:=regist.ReadInteger('Name_'+IntToStr(i)+'_color');
      Listbox1.Font.Color:=Farbe;
      Listbox1.Items.Add(Name);
    end;
  end;
Ich habe es schon mit dem OnDrawItem versucht, aber da wurden gar keine Items hinzugefügt, wenn es so aussah ("Listbox1.Font.Color:=Farbe" oben dann ausgeklammert):
Delphi-Quellcode:
procedure TForm1.Listbox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
  Listbox1.Font.Color:=Farbe;
end;
Achim
  Mit Zitat antworten Zitat
paelesoft

Registriert seit: 3. Jul 2004
37 Beiträge
 
Delphi 7 Professional
 
#9

Re: Schriftfarbe in Listbox

  Alt 5. Nov 2004, 16:55
Jo,

beim Hinzufügen der Items zur Liste, nutzt dir die Angabe der Farbe überhaupt nichts.
Du musst die Farbinformation für jeden deiner Items in einer Extra-Liste speichern, oder
erst im OnDrawItem-Ereignis aus der Registry auslesen.
Bei der zweiten Methode, wird die Ausgabe etwas lahm, aber, sie ist am einfachsten zu realisieren.

Lasse also bitte in "Listbox1Click" alles weg, was mit "Farbe" zu tun hat und setze Folgendes in
"Listbox1DrawItem" so ein:
Delphi-Quellcode:
procedure TForm1.Listbox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
// "regist" ist in TForm1.FormCreate initialisiert worden?!
var Farbe : TColor;
begin
  Farbe:=regist.ReadInteger('Name_'+IntToStr(Index)+'_color');
  Listbox1.Font.Color:=Farbe;
end;
Gruß Erik
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Schriftfarbe in Listbox

  Alt 5. Nov 2004, 17:31
das ganze wie folgt ändern
Delphi-Quellcode:
  Listbox1.Canvas.Brush.Color := clRed;
  Listbox1.Canvas.Pen.Color := clWhite;
  Listbox1.Canvas.FillRect(Rect);
  Listbox1.Canvas.Font.Color := clRed; //<== natürli kannste auch ne andere farbe nehmen
  Listbox1.Canvas.TextOut(Rect.Left, Rect.Top, Listbox1.Items[Index]);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 02:29 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