250_____________________________________________Глава 4

В более ранних версиях C++Builder свойство Constraints отсутствует. Работая
с этими версиями ограничение размеров как отдельных компонентов, так и всего
окна приложения можно осуществить, вставив в обработчики событий OnResize
этих компонентов или формы операторы, ограничивающие размер. Например,
вставленный в обработчик события OnResize панели Panel 1 код

if (Panell->Width < 100) Panell->Width = 100;

if(Panell->Width > 200) Panell->Width = 200;

будет при любых перестроениях поддерживать ширину панели в диапазоне от 100
до 200 пикселей. Аналогичный код

if (Width > 600) Width = 600;

if (Width < 500) Width = 500;

вставленный в обработчик события OnResize формы ограничит снизу и сверху раз-
мер окна. Причем это ограничение будет действовать даже если пользователь на-
жмет системную кнопку, разворачивающую окно на весь экран.

Другой способ ограничить размеры окна приложения — применение стандарт-
ных сообщений Windows. В главе 6 в разделе 6.3 этот вопрос рассмотрен более по-
дробно. А пока приведем без комментариев код, позволяющий ограничить размер
окна:

class TFormI : public TForm
(

private:         // User declarations

void _fastcall OnGetMinMaxInfo(TWMGetMinMaxInfos Message);

public:          // User declarations

BEGIN_MESSAGE_MAP

MESSAGE_HANDLER(WM_GETMINMAXINFO, TWMGetMinMaxInfo,
OnGetMinMaxInfo)

END_MESSAGE_MAP(TComponent)
);

void _fastcall TFormI::OnGetMinMaxInfo(TWMGetMinMaxInfoS a)

(

a.MinMaxInfo->ptMinTrackSize.x = 180
a.MinMaxInfo->ptMaxTrackSize.x = 300
a.MinMax!nfo->ptMinTrackSize.y = 150
a.MinMaxInfo->ptMaxTrack3ize.y = 300;

a.MinMaxInfo->ptMaxPosition.x = BoundsRect.Left;

a.MinMax!nfo->ptMaxPosition.y = BoundsRect.Top;

Этот код ограничивает возможности пользователя по изменению размеров
окна пределами 150 — 300 пикселей в высоту (значения ptMinTrackSize.y и
ptMaxTrackSize.y) и 180 — 300 пикселей в ширину (значения ptMinTrackSize.x и
ptMaxTrackSize.x), а также задает координаты левого верхнего угла распахнутого
окна (ptMaxPosition.x и ptMaxPosition.y) равными текущим координатам левого
верхнего угла окна. Таким образом этот код не только ограничивает размеры окна,
но и позволяет задать положение полностью развернутого окна на экране.

4.2.5 Масштабирование компонентов

Говоря о размерах компонентов следует упомянуть еще об одной возможности
их изменения — о методе ScaleBy. Он определен как:

void _fastcall ScaieByfint M, int D);