TListbox: eine Zeile einfärben

Für Fragen von Einsteigern und Programmieranfängern...

TListbox: eine Zeile einfärben

Beitragvon malabarista » 26. Sep 2017, 08:20 TListbox: eine Zeile einfärben

Ich möchte gerne bei TListbox einzelne Zeilen in rot darstellen.
Wie ist das möglich ? Oder geht das nicht ?
malabarista
 
Beiträge: 226
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

Beitragvon m.fuchs » 26. Sep 2017, 08:34 Re: TListbox: eine Zeile einfärben

Dann musst du selber zeichnen. Stell den Style der ListBox auf lbOwnerDrawFixed und mach dann folgendes in OnDrawItem:

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;


Sollte natürlich noch ein wenig angepasst werden, damit es vertikal schön zentriert ist oder Ähnliches.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1670
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.6, FPC 3.0) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon malabarista » 26. Sep 2017, 11:36 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 !
malabarista
 
Beiträge: 226
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast

porpoises-institution
accuracy-worried