Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ TLabel

Автор: мисс_граффити 24.07.2009 16:30

Здравствуйте.
Есть в Delphi стандартный компонент - TLabel. Если текст из свойства Caption не помещается на нем, кусок как бы обрезается (не отображается).
Можно ли из программы как-либо определить, что влезло, а что нет?

Автор: volvo 24.07.2009 16:57

Цитата
Можно ли из программы как-либо определить, что влезло, а что нет?
Можно. Посимвольно пробегать по Label.Caption, и считать накапливающуюся длину текста:
Len := 0; s := 0;
for i := 1 to Length(Label1.Caption) do begin
LetterWidth := Label1.Canvas.TextWidth(Label1.Caption[i]);
if Len + LetterWidth < Label1.Width then begin
s := s + Label1.Caption[i]; inc(Len, LetterWidth);
end
else break;
end;
в результате в S будет то, что полностью видно в метке. Это все при условии, что Label1.AutoSize равно False, иначе это делается чуть-чуть по другому (надо будет химичить с Label1.Left + Len < Form1.Width, или что-то в этом роде, смотря, где Label, и какое выравнивание задано)

Автор: мисс_граффити 25.07.2009 7:22

Спасибо!
Не знала, как ширину символа получить...