Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2298
Erhaltene Danke: 44

Windows 7 64 Bit
Delphi XE2 Starter, Delphi 10.1 Starter, Delphi 10.2 Tokyo Community Edition
BeitragVerfasst: Sa 05.01.19 06:52 
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:
ausblenden 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);

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!