Свойства, методы, события, типы, классы_______________________935

int Bottom;

};

property Windows::TRect BoundsRect

Описание

Свойство BoundsRect использует тип TRect и позволяет получить одновремен-
но координаты пикселей всех четырех углов компонента. Иной способ получить те
же координаты — использовать свойства компонента Left (левый край), Тор (верх-
ний край). Width (ширина). Height (высота) и соответствующие вычисления.
Иначе говоря, при чтении данных эквивалентны следующие выражения:

Control->BoundsRect.Left             Control->Left
Control->BoundsRect.Top             Control->Top
Control->BoundsRect.Right            Control->Left + Control->Width
Control->BoundsRect.Bottom          Control->Top + Control->Height

Началом координат считается левый верхний угол родительского окна.

Отмеченная выше эквивалентность выражений для различных свойств спра-
ведлива только при чтении данных. Но присвоить целое значение, например, свой-
ству BoundsRect.Left нельзя. Точнее, можно, но это не повлияет на размер компо-
нента. Присвоить значение можно только всей структуре BoundsRect.

При задании значений BoundsRect удобно пользоваться функцией Rect (см.
раздел 14.9 главы 14), принимающей координаты сторон прямоугольника и воз-
вращающей структуру типа TRect.

Помимо перечисленных свойств, определяющих размеры компонента, имеются
еще свойства ClientWidth и ClientHeight. определяющие размеры его клиентской
области. Эти размеры равны или меньше размеров Width и Height.

Свойства, определяющие координаты компонента, полезны в задачах, требую-
щих изменения размеров или перемещения компонентов.

Примеры

1. Пусть панель Panell может менять свою длину при изменении пользователем
размеров окна (например, имеет значение Align = alTop). И пусть в середине
этой панели имеется метка StaticTextl типа StaticText, которая при всех из-
менениях должна оставаться посередине, не изменяя своих размеров. Это
можно осуществить, вставив в обработчик событий формы OnResize и OnShow
оператор:

StaticTextl->Left = (Panell->BoundsRect.Left + Panell->

BoundsRect.Right - StaticTextl->Width) / 2;

Впрочем, того же эффекта можно добиться и не прибегая к свойству Bounds-
Rect, заменив приведенный оператор на следующий:

StaticTextl->Left := Panell->Left + (Panell->

Width - StaticTextl->Width) / 2;

2. Пусть мы хотим, чтобы при нажатии некоторой кнопки окно текстового ре-
дактора Memol перемещалось в новую заранее определенную позицию с новы-
ми определенными размерами. Мы можем в нужной позиции разместить па-
нель Panell с нужными размерами, сделать ее невидимой, а в нужный момент
выполнить всего один оператор:

Memol->BoundsRect F Panell->BoundsRect;