Лекция № 2
Тема: «Размещение и масштабирование форм и компонентов»
 
План

1. Выделение компонентов на форме

2. Перемещение и изменение размеров компонентов

3. Выравнивание компонентов на форме

4. Масштабирование компонентов на форме

 

 

1. Выделение компонентов на форме

На стадии проектирования любой компонент может быть выделен на форме. Свойства выделенного компонента видны в окне свойств и доступны для редактирования. Чтобы выделить компонент, достаточно навести на него указатель и нажать кнопку мыши. Вокруг компонента тут же появятся так называемые "точки растяжки" (sizing handles) для изменения размеров компонента по ширине и высоте.

 

При проектировании сложных форм вы столкнетесь с ситуацией, когда сразу в нескольких компонентах нужно установить некоторое свойство в одно и то же значение. Например, в нескольких кнопках установить свойство Enabled

в значение False. Быстрее всего это можно сделать, если выделить несколько компонентов, после чего перейти к окну свойств и изменить нужное свойство. Когда на форме выделено несколько компонентов, в окне свойств видны только их общие свойства.

Выделить несколько компонентов можно двумя способами:

– нажать клавишу Shift и, удерживая ее, отметить щелчками мыши все требуемые компоненты, после чего клавишу Shift отпустить. В углах каждого выделенного компонента появятся небольшие квадратики-маркеры;

– нажать кнопку мыши, когда курсор находится вне компонентов. Затем, удерживая кнопку в нажатом состоянии, протянуть курсор над выделяемыми компонентами, включив их в пунктирный прямоугольник. Когда в пунктирный прямоугольник попадут все требуемые компоненты, кнопку мыши следует отпустить. (Если выделяемые компоненты находятся внутри компонента Panel или GroupBox, то эту операцию нужно выполнять с нажатой клавишей Ctrl.) В результате перечисленных действий в углах всех компонентов, хотя бы частично попавших в пунктирный прямоугольник, появятся небольшие квадратики-маркеры, свидетельствующие о том, что компоненты выделены.

Вы можете комбинировать оба способа для выделения лишь тех компонентов, которые вам нужны.

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

Когда на форме выделено несколько компонентов, некоторые свойства могут как бы не иметь значения в окне Object Inspector (в поле значения — пусто). Это говорит о том, что свойства имеют различные значения в выделенных компонентах.

 

2. Перемещение и изменение размеров компонентов

Когда все компоненты помещены на форму, нужно оценить ее с точки зрения эстетики. Посмотрите на форму со стороны. Как правило, в пейзаже обнаружатся некоторые изъяны. Наверняка что-то захочется уменьшить, что-то увеличить, что-то переместить на другое место. Сделать все это — проще простого.

Для перемещения компонента на другое место:

– поместите курсор над компонентом, который хотите переместить, и щелкните мышью (компонент тут же окажется в фокусе). Не отпуская кнопки мыши, отбуксируйте компонент на новое место;

– когда компонент будет там, где надо, отпустите кнопку мыши.

Изменить размер компонента тоже просто:

– щелчком мыши активизируйте компонент, размер которого хотите изменить (он тут же окажется в фокусе);

– наведите указатель мыши на точку вертикальной или горизонтальной “растяжки”, при этом вид указателя изменится на двунаправленную стрелку. Нажмите кнопку мыши и, удерживая ее, перемещайте указатель в сторону уменьшения или увеличения размера компонента;

– добившись желаемого размера, отпустите кнопку мыши и отведите указатель от точки растяжки (при этом указатель примет обычный вид). Компонент с новыми размерами готов к работе.

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

Нажмите клавишу Ctrl и, удерживая ее нажатой, с помощью клавиш со стрелками подвиньте компонент на нужное количество точек экрана. Отпустите клавишу Ctrl.

Нажмите клавишу Shift и, удерживая ее нажатой, с помощью клавиш со стрелками растяните или сожмите компонент на нужное количество точек экрана. Отпустите клавишу Shift.

Если необходимо задать одинаковый размер для нескольких компонентов, то выделите их, в контекстном меню одного из них выберите команду Position - Size. Появится окно Size.

В левой колонке отображаются параметры задания ширины компонента, а в левой - высоты. Можно сжать размер до наименьшего (shrink), растянуть до наибольшего (grow) или в поле задать конкретный размер в пикселях.

 

3. Выравнивание компонентов на форме

Когда на форме размещено много компонентов, ручное выравнивание становится весьма утомительным занятием. На этот случай в среде Delphi предусмотрены средства автоматизированного выравнивания компонентов. Алгоритм выравнивания следующий:

1.Выделите компоненты, которые собираетесь выровнять. Во всех четырех углах каждого выделенного компонента появятся небольшие квадратики-маркеры;

2.В контекстном меню любого из выделенных компонентов выберите команду Position - Align.   В результате откроется окно Alignment, в котором можно задать параметры размещения компонентов. В левой колонке задаются параметры размещения по горизонтали, в правой - по вертикали. Предпоследние из переключателей могут распределить выделенные компоненты на промежутке между первым и последним выделенными компонентами (перед этим последний компонент в группе нужно поместить вручную в нужное место на форме). Последние переключатели выравнивают компоненты по центру окна формы.

Для более быстрого доступа к функции выравнивания компонентов в среде Delphi можно отобразить специальную панель инструментов с помощью команды View - Toolbars - Align. Назначение кнопок на ней приведено на рисунке.

 

4. Масштабирование компонентов на форме

При проектировании пользователь задает всем ее компонентам нужные размеры и положение. Однако, как только пользователь начинает изменять размеры окна, то все настройки нарушаются и форма принимает непрезентабельный вид. Самым простым способом предотвратить данную ситуацию является задание для формы фиксированной границы (BorderStyle = dbSingle) и отключение кнопки раскрытия окна на весь экран (BorderIcons - biMaximized = false).

Данный способ не всегда уместен и нужно задавать масштабирование компонентов на форме с помощью специальных свойств.

Свойство Align

Позволяет привязать компонент к заданном краю формы. При этом, если компонент привязан к левому или правому краю, то его ширина остается постоянной, а высота масштабируется под высоту формы. Если компонент привязан в верху или низу формы, то его высота остается постоянной, а ширина масштабируется под ширину формы. Если задано значение свойства Align = alClient, то компонент заполняет собой все свободное пространство на форме и его ширина и высота масштабируются под ширину и высоту формы.

Свойство Achors

Данной свойство позволяет привязать любой край компонента к соответствующему краю формы. При этом, если форма будет увеличиваться или уменьшаться. то расстояние от края формы до края компонента будет сохраняться в том значении, которое было в момент включения привязки. Для выполнения привязки необходимо открыть свойство Anchors и включить нужный край компонента (задать значение true).

Свойство Constraints

Данной свойство позволяет задать максимально и минимально допустимый размер нудного компонента. Если данной свойство задано, то компонент не смодет увеличится или уменьшиться за пределы указанных в свойстве значений. Данной свойство чаще всего задается для самой формы, чтобы пользователь не смог сделать ее меньше или больше некоторых значений. особенно актуально задание минимальных значений, так как при уменьшении формы компоненты на ней могут начать "наезжать" друг на друга.

 

Вопросы для самоконтроля

1. Какие способы выделения компонентов на формы Вы знаете? Как задать одинаковое значение свойства для нескольких компонентов одновременно?

2. Как изменить размер компонента? Как изменить размер попиксельно? Как задать одинаковый размер для нескольких компонентов одновременно?

3. Как изменить положение компонента на форме? Как сдвинуть компонент на форме попиксельно? Как выровнять несколько компонентов одновременно?

4. Какие свойства для масштабирования компонентов на форме Вы знаете? Дайте их характеристику.