![]() |
TListBox: Unabhängig vom Inhalt einfärben
Also ich möchte die Zeilen einer ListBox verschieden einfärben, jedoch unabhängig davon, ob bzw. wieviele Items es gibt.
Wenn neue Items dazukommen, sollen diese natürlich dann drübergezeichnet werden, so dass die Hintergrundfarbe ganz normal bleibt. Dies hier ist ein Ansatz, färbt jedoch nur die Zeilen ein, wo sich auch wirklich Items befinden ( ![]() |
Re: TListBox: Unabhängig vom Inhalt einfärben
Wenn ich mich Recht erinnere gibts auch bei TListBox die Eigenschaft Color mit der du die Hintergrundfarbe festlegen kannst ...
|
Re: TListBox: Unabhängig vom Inhalt einfärben
Zitat:
Die Zeilen sollen abwechselnd eine andere Farbe bekommen (1. Grau, 2. Schwarz, 3. Grau, etc.) -> so wie in dem Beispiel was ich oben dazugehängt habe |
Re: TListBox: Unabhängig vom Inhalt einfärben
moechtest du, dass auch Zeilen gefaerbt werden, welche keinen Text haben?
|
Re: TListBox: Unabhängig vom Inhalt einfärben
Zitat:
|
Re: TListBox: Unabhängig vom Inhalt einfärben
Hallo,
Zitat:
überprüf mal ob Du den richtig eingebaut hast. |
Re: TListBox: Unabhängig vom Inhalt einfärben
Wahrscheinlich geht der Code vom SwissDelphiCenter. Aber der kommt mir doch reichlich kompliziert vor. Das hier müßte doch reichen :
Delphi-Quellcode:
Bei mir sind die Zeilen jetzt abwechseln weiß oder blau. Egal, ob sie neu hinzukommen, oder bereits da sind. Was macht denn da der Swiss-Code wichtiges ? :gruebel:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); var i : Integer; begin for i := 1 to Listbox1.Items.Count do begin if Index mod 2 = 0 then begin Listbox1.Canvas.Brush.Color := clBlue; Listbox1.Canvas.FillRect(Rect); Listbox1.Canvas.TextOut(Rect.Left, Rect.Top, Listbox1.Items[Index]); end else Listbox1.Canvas.TextOut(Rect.Left, Rect.Top, Listbox1.Items[Index]); end; end; |
Re: TListBox: Unabhängig vom Inhalt einfärben
Hallo,
der Code färbt auch Zeilen die noch nicht belegt sind. |
Re: TListBox: Unabhängig vom Inhalt einfärben
Zitat:
edit: hier war kein roter Kasten :angel2: Mfg Frank |
Re: TListBox: Unabhängig vom Inhalt einfärben
Und wozu soll das gut sein ? :shock: Man braucht doch selbst dann nur dafür sorgen, daß genügend Zeilen für den sichtbaren Bereich vorhanden sind. Z.B. so in der Richtung :
Delphi-Quellcode:
Kommen dann noch welche dazu, werden die auch wie vorher abwechselnd gefärbt. Aber ich sehe gerade, daß der Tip von Peter Below ist. Das erklärt einiges. :mrgreen: Wahrscheinlich ist der Code auch uralt.
procedure TForm1.FormCreate(Sender: TObject);
var i : Integer; begin for i := 1 to (ListBox1.Height DIV Listbox1.ItemHeight) do ListBox1.Items.Add(''); end; |
Re: TListBox: Unabhängig vom Inhalt einfärben
warum denn nicht?
In deinem code könntest du diese Items aber dann auch anklicken und müßtets den Rest des Codes auch noch daraufhin anpassen, denn die leeren Items willst du ja nicht wirklich weiterverarbeiten oder ;) ? Wenn du die Liste sortierst, kommst du auch nicht weiter. |
Re: TListBox: Unabhängig vom Inhalt einfärben
Ich hatte gedacht mal sowas in die Playlist von einem Programm einzubauen, aber das soll nur ein Item gefärbt werden und es muss dann mit einem Timer order so ständig aktualisiert werden. Hab schon ein bischen rumprobiert aber es funktioniert nicht.
Kennt das jemand 'ne lösung? |
Re: TListBox: Unabhängig vom Inhalt einfärben
Zitat:
|
Re: TListBox: Unabhängig vom Inhalt einfärben
Hallo,
@robinWie: Deine zusätzliche Frage in diesem Thread steht genau im Gegensatz zum Titel: Zitat:
![]() da ist bestimmt etwas passendes dabei :wink: Wenn Du dann noch Probleme hast, kannst Du in einem eigenem Thread eine diesbezügliche Frage stellen. @kurtm1: Erstell doch in die ListBox einen leeren Eintrag. Entweder im OnCreate der Form mit:
Delphi-Quellcode:
oder im Objekt-Inspektor bei der Eigenschaft Items,
ListBox1.Items.Add('');
indem Du mit der Taste [Enter] einen Zeilenumbruch im String-Editor erzeugst. Dann musst Du nur darauf achten, das vor dem Füllen der Listbox der leere Eintrag gelöscht wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 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