Есть функции API, которые сами ставят многоточие. Вот пример. Я, правда, не совсем знаком с хэндлами и у меня получился немного больший по размеру шрифт, но кто-нибудь вам подскажет.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
dc: HDC;
Rect: TRect;
S: String;
begin
S:= 'D:\Мои документы\Санитарные_правила_и_нормы\СанПиН-2_2_4_1294-03.2003-06-15\';
dc:=GetWindowDC(Edit1.Handle);
Rect:= Edit1.ClientRect;
DrawText(dc,
PAnsiChar(S),
Length(S),
Rect,
DT_PATH_ELLIPSIS); // DT_END_ELLIPSIS
ReleaseDC(Edit1.Handle,dc);
end;
Флаг DT_PATH_ELLIPSIS ставит многоточие в середине (правило в справке), а флаг DT_END_ELLIPSIS - в конце.