Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.03.2010, 19:36
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию TLabel

Добрый вечер всем!!! Есть ли у кого нидь компонент TLabel, который при сокращении текста, не тупо обрезает, а ставит троеточие, например : 'эвамиваияваивяияваиакку', а обрезанный : 'эвамиваиява...' ? Ну чтоб сокращение (троеточие) мог ставить либо в начале, либо в середине, либо в конце
__________________
APPLICATION.TERMINATOR
Ответить с цитированием
  #2  
Старый 06.03.2010, 19:41
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,531
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Ama
Добрый вечер всем!!! Есть ли у кого нидь компонент TLabel, который при сокращении текста, не тупо обрезает, а ставит троеточие, например : 'эвамиваияваивяияваиакку', а обрезанный : 'эвамиваиява...' ? Ну чтоб сокращение (троеточие) мог ставить либо в начале, либо в середине, либо в конце
Код:
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  
Старый 07.03.2010, 14:26
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию

Спс за помощь. Вобщем я понял так что надо создать свой компонент чтобы решить проблему раз и на всегда
__________________
APPLICATION.TERMINATOR
Ответить с цитированием
  #4  
Старый 09.03.2010, 04:09
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Можно воспользоваться 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;
Есть ещё флаг DT_PATH_ELLIPSIS, он ставит многоточие в середине, при этом строка это путь, т.е. содержит символы '\'
Ответить с цитированием
  #5  
Старый 09.03.2010, 21:24
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию

Вот спасибо. Я попробую.
__________________
APPLICATION.TERMINATOR
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:43.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter