Also ich verstehe das nicht.
Lösung Sir Rufo:
Delphi-Quellcode:
type
TCharMeasureWidthDelegate = function( const C: Char ): Integer of object;
function ShortenText( const Text: string; const MaxLength: Integer; const CharMeasurement: TCharMeasureWidthDelegate; const ShortenSuffix: string = '...' ): string;
snip...
So jetzt eine function
Delphi-Quellcode:
function TmyView.CalculateCharWith( const C: Char ): Integer;
begin
Result := tsFontGetCharParameteri(C, TS_CHAR_ADVANCE);
end;
und das ganze Aufrufen mit
lDrawText := ShortenText( Edit1.Text, PaintBox1.ClientWidth, myView.CalculateCharWith );
fertig.
Also in meinen Augen ist die Lösung von Sir Rufo super weil komplett unabhängig
und vor allem auch testbar.