Здравствуйте. Есть в Delphi стандартный компонент - TLabel. Если текст из свойства Caption не помещается на нем, кусок как бы обрезается (не отображается). Можно ли из программы как-либо определить, что влезло, а что нет?
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
Можно ли из программы как-либо определить, что влезло, а что нет?
Можно. Посимвольно пробегать по 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, и какое выравнивание задано)
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!