Ich möchte gerne bei TListbox einzelne Zeilen in rot darstellen.
Wie ist das möglich ? Oder geht das nicht ?
TListbox: eine Zeile einfärben
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: TListbox: eine Zeile einfärben
Dann musst du selber zeichnen. Stell den Style der ListBox auf lbOwnerDrawFixed und mach dann folgendes in OnDrawItem:
Sollte natürlich noch ein wenig angepasst werden, damit es vertikal schön zentriert ist oder Ähnliches.
Code: Alles auswählen
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState);
var
ListCanvas: TCanvas;
begin
ListCanvas := TListBox(Control).Canvas;
if Index = 3 then begin
ListCanvas.Pen.Color := clRed;
ListCanvas.Brush.Color := clRed;
ListCanvas.Rectangle(ARect);
end;
ListCanvas.TextOut(ARect.Left + 1, ARect.Top + 1, TListBox(Control).Items[Index] );
end;
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TListbox: eine Zeile einfärben
Da habe ich mich nicht richtig ausgedrückt:
Ich wollte nur den Text rot, der Hintergrund sollte weiss bleiben.
Aber mit .Font.Color klappt das.
Dankeschön !
Ich wollte nur den Text rot, der Hintergrund sollte weiss bleiben.
Aber mit .Font.Color klappt das.
Dankeschön !