90______________________________________________Глава 2

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

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

Отметим еще одно свойство компонентов, которое часто путается со свойством
Parent. Это свойство Owner — владелец данного компонента. Свойство Owner
устанавливается в момент создания компонента в процессе выполнения приложе-
ния. Владелец компонента — этот тот компонент, при уничтожении которого
(освобождении занимаемой им памяти) уничтожится и данный компонент. Этим и
ограничивается связь между владельцем и компонентами, которыми он владеет, в
отличие от множества указанных выше свойств, связывающих родительский и до-
черние компоненты.

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

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

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

2.4.6.3 «Многослойное» размещение компонентов на форме

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

Если вы перенесли компонент из библиотеки не на форму, а на панель, то эта
панель становится для него родительской. Вы никакими передвижениями не смо-
жете переместить его за пределы родительской панели. Если же вы передумали
размещать компонент на данной панели и хотите переместить его на другую па-
нель или непосредственно на форму, то это можно сделать через буфер обмена Clip-
board. Выделите курсором переносимый компонент и вырежьте его в Clipboard
командой Edit | Cut или «горячими» клавишами Ctrl-X. Затем щелкните на форме
или на той панели, куда хотите перенести компонент, и выполните команду Edit |
Paste, дублируемую «горячими» клавишами Ctrl-V. Компонент перенесется из Clip-
board на новое место и обретет нового родителя — панель или форму.

Если вы в процессе проектирования перемещаете панель, она может накрыть
какие-то компоненты, размещенные на форме или на другой панели. Будут ли при
этом накрытые компоненты видны или нет определяется их местом в описанной
ранее Z-последовательности. Неоконные компоненты типа меток заведомо будут
невидимы, поскольку они располагаются в Z-последовательности всегда ниже лю-
бых оконных, к которым принадлежат панели. А вот видимостью других оконных
компонентов — панелей, кнопок, окон редактирования можно управлять. Это де-
лается командами меню Edit Bring To Front и Edit | Send To Back. Первая из них пере-
мещает выделенный оконный компонент на верх Z-последовательности и он начи-
нает загораживать все другие оконные компоненты. А вторая команда перемещает
выделенный оконный компонент на самый низ Z-последовательности и любые дру-
гие оконные компоненты, расположенные в Z-последовательности выше, начина-
ют перекрывать его. Эти команды можно выполнить и проще: щелкнув правой
кнопкой мыши и выбрав их из всплывающего меню.