Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Länge der Items nach Pixeln begrenzen


galagher - Sa 05.01.19 06:52
Titel: Länge der Items nach Pixeln begrenzen
Hallo!

Ich habe eine TListBox, dabei ist Anchors := [akLeft,akTop,akRight,akBottom] und Style := lbOwnerDrawFixed. Ich möchte nun, dass in Prozedur DrawItem die Darstellung der Items immer an der gleichen Stelle abgeschnitten wird, unabhängig von der Textlänge und der Breite der Zeichen. Die Anzeige der Items soll bis kurz vor Rect.Right gehen und sich an ClientWidth anpassen.
Also so und soviele Pixel zählen und dort abschneiden.

Ich könnte nun natürlich mit Copy arbeiten, das berücksichtigt aber nicht die Breite einzelner Zeichen, so ist ja zB. ein W breiter als ein i.


//Edit: Lösung gefunden:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
FillRect(Rect);

//...

Rect.Right := TJvListBox(Control).ClientWidth-10;

//Hier kommt nun die Ausgabe des Textes mit dem neuen Text.Right:
TextRect(Rect, Rect.Left, Rect.Top + (Rect.Bottom - Rect.Top - TextHeight(item)) div 2, item);