Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Panel


Lexann ©   (2002-03-04 21:43:00) 

Как сделать чтобы появляющаяся в Panel строчка при большем объеме чем Panel стала меньшей ?


lipskiy   (2002-03-05 00:18:00) [1]

Может быть можно и проще, но я делаю примерно так.
Допустим на панели лежит лейбл.
На ресайз панели вешаем обработчик:

procedure TForm1.Panel1CanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean);
var fw:integer;
label ex, up;
begin

Label1.Canvas.Font:= Label.Font;
fw:= Label1.Canvas.TextWidth(Label1.Caption);
if NewWidth > fw then goto up;

// уменьшаем шрифт, пока не влезет
repeat
Label1.Canvas.Font.Size:= Label1.Canvas.Font.Size-1;
fw:= Label1.Canvas.TextWidth(Label1.Caption);
until NewWidth > fw;
Label1.Font.Size:= Label1.Canvas.Font.Size;
goto ex;

// увеличиваем шрифт, пока не вылезет
up:
repeat
Label1.Canvas.Font.Size:= Label1.Canvas.Font.Size+1;
fw:= Label1.Canvas.TextWidth(Label1.Caption);
until NewWidth < fw;
Label1.Font.Size:= Label1.Canvas.Font.Size-1;

ex:
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо