Описание
Метод BringToFront позволяет изменять последовательность перекрытия компонентов на форме и тем самым управлять видимостью компонентов.
Перекрывающиеся компоненты на форме размещаются поверх друг друга в так называемой Z-последовательности, соответствующей порядку размещения компонентов в процессе проектирования. Например, если вы поместили в одно и то же место формы две кнопки одинаковых размеров, то видна будет только вторая из размещенных кнопок, поскольку она расположена в Z-последовательности выше. Применение во время выполнения приложения метода BringToFront к нижней кнопке переместит ее наверх в Z-последовательности и она станет видна пользователю.
Это справедливо по отношению к не оконным объектам, таким, как кнопки, метки, изображения и т.д., а также и к оконным компонентам, таким, как Memo, ComboBox и др. Но все не оконные компоненты всегда расположены в Z-последовательности ниже оконных и метод BringToFront не может изменить это правило. Например, попытка перенести наверх методом BringToFront метку, размещенную под оконным компонентом, ни к чему не приведет.
Классы
TControl
Прототип
void __fastcall BringToFront(void);
Пример №1
Пусть вы хотите, чтобы в каком-то месте формы размещалась кнопка, которая в зависимости от текущего режима работы имела бы два различных набора свойств и выполняла бы различные функции. Вы можете разместить в нужном месте две кнопки друг на друге (пусть они имеют имена Button1 и Button2), задать каждой нужные свойства и для каждой описать соответствующие обработчики событий. Тогда для смены этих кнопок вы в соответствующих местах кода программы пропишите:
Button1->BringToFront();
Button2->BringToFront();
Пользователь будет видеть то одну, то другую из этих кнопок.
Пример №2
Пусть в приложении в одном и том же месте формы друг на друге расположены две панели: Panel1 и на ней Panel2, содержащие какие-то управляющие компоненты для разных режимов работы. Panel2 расположена на Panel1, которая является, таким образом, ее родителем. В обработчик события формы OnCreate можно вставить следующее:
Panel2->Parent = Form1;
Panel2->BoundsRect = Panel1->BoundsRect;
Panel1->BringToFront();
Первый оператор делает родительским компонентом панели Panel2 форму Form1. Второй оператор задает панели Panel2 то же местоположение и размеры, которые имеет панель Panel1. Последнее необходимо, поскольку при проектировании ее координаты соответствовали координатному пространству контейнера - клиентской области панели Panel1. А теперь ее родитель сменился на форму, и надо ее расположить в том же месте формы, в котором расположена Panel1. Третий оператор перемещает наверх форму Panel1.