|
#1
|
|||
|
|||
TLabel
Добрый вечер всем!!! Есть ли у кого нидь компонент TLabel, который при сокращении текста, не тупо обрезает, а ставит троеточие, например : 'эвамиваияваивяияваиакку', а обрезанный : 'эвамиваиява...' ? Ну чтоб сокращение (троеточие) мог ставить либо в начале, либо в середине, либо в конце
APPLICATION.TERMINATOR |
#2
|
||||
|
||||
Цитата:
Код:
function TForm3.end_points(lbl: TLabel): string; var s: string; i: integer; begin s:=lbl.Hint; // if lbl.Canvas.TextWidth(s)<=lbl.Width then begin result:=s; lbl.ShowHint:=false; Exit; end; // lbl.Caption:=''; // for i:=1 to Length(s) do begin lbl.Caption:=lbl.Caption+s[i]; if (lbl.Canvas.TextWidth(lbl.Caption)+16>=lbl.Width) then begin result:=lbl.Caption+'...'; lbl.ShowHint:=true; Break; end; end; end; |
#3
|
|||
|
|||
Спс за помощь. Вобщем я понял так что надо создать свой компонент чтобы решить проблему раз и на всегда
APPLICATION.TERMINATOR |
#4
|
|||
|
|||
Можно воспользоваться API, если многоточие в конце:
Код:
procedure TForm1.Button1Click(Sender: TObject); var S: String; R: TRect; begin S:= 'эвамиваияваивяияваиакку'; R:= Label1.ClientRect; DrawText(Label1.Canvas.Handle, PAnsiChar(S), Length(S), R, DT_END_ELLIPSIS); end; |
#5
|
|||
|
|||
Вот спасибо. Я попробую.
APPLICATION.TERMINATOR |