![]() |
|
|
#1
|
|||
|
|||
|
Добрый вечер всем!!! Есть ли у кого нидь компонент TLabel, который при сокращении текста, не тупо обрезает, а ставит троеточие, например : 'эвамиваияваивяияваиакку', а обрезанный : 'эвамиваиява...' ? Ну чтоб сокращение (троеточие) мог ставить либо в начале, либо в середине, либо в конце
|
|
#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
|
|||
|
|||
|
Спс за помощь. Вобщем я понял так что надо создать свой компонент чтобы решить проблему раз и на всегда
|
|
#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
|
|||
|
|||
|
Вот спасибо. Я попробую.
|