Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
70
Добавлен:
27.03.2015
Размер:
379.39 Кб
Скачать

Компонент Panel

Компонент Panel расположен на вкладке Standard и предназначен для компоновки объектов в окне:

Основное его свойство - это Align. Оно отвечает за то, как наша панель расположена в окне - прилеплена ли она, например, к верхнему или левому краю или же занимает всю клиентскую область окна. При этом при изменении размеров окна панель остается в определяемым этим свойством положении - т. е., например, если мы задали значение этого свойства в alRight, то при растягивании нашего окна по горизонтали панель все равно будет располагаться в правой части окна. Обратите внимание, что одно из значений этого свойства - это alClient. При задании этого значения панель будет занимать все оставшиеся место на форме. Например, если вы расположили на форме две панели и задали для них значения этого свойства в alLeft и alClient соотвественно, то первая панель будет располагаться в левой части формы (от верхнего края до нижнего), а вторая - занимать всю оставшуюся область. Причем при изменении размера окна такое расположение будет сохраняться.

Еще несколько полезных свойств панели отвечают за ее внешний вид. Например, свойства BevelInner и BevelOuter отвечают, как будет выглядеть граница нашей панели относительно своей внутренной и своей внешних частей. Например, если хотите, чтобы граница панели представляла из себя приподнятую границу, то эти два свойства надо установить в bvLowered и bvRaised соответственно. Если же мы хотим, чтобы панель выглядела как традиционная панель - безо всякой вдавленной внутренней части, то эти свойства устанавливаем в bvRaised и bvNone соответсвенно.

Еще одно свойство панели - это AutoSize. Оно если установить его в True, то панель будет стремится установить минимально возможный для себя размер. Так, например, если на панели ничего не расположено, то она примет нулевую ширину.

На панели могут располагаться другие компоненты. Все они будут храниться в коллекции Controls. Получить число элементов на панели можно через свойство ControlCount.

Вот пример кода, который делает все элементы на панели Panel1 невидимыми:

void __fastcall TForm1::Button2Click(TObject *Sender)

{

TControl *child;

int n = Panel1->ControlCount;

for(int i = 0; i < n; i++)

{

((TControl*)Panel1->Controls[i])->Visible = false ;

}

}

Совместное использование сплиттера и Panel

Если использовать только сплиттеры, то некоторые способы разбиения формы на части осуществить невозможно. Например, только сплиттерами невозможно добиться, чтобы у нас была одна область слева (по всей высоте формы) и 2 области друг над другом справа:

Но это можно сделать с помощью сплиттеров и панелей.

Например, вот так:

Размещаем на форме панель, устанавливаем ее свойство Align в alLeft. Затем щелкаем на свободном месте формы и затем размещаем в нем сплиттер. Его свойство Align также устанавливаем в alLeft. Опять щелкаем на свободном месте формы и размещаем в нем вторйю панель. Для нее устанавливаем свойство Align в alClient. Таким образом мы получили две панели (слева и справа), разделенные сплиттером.

Теперь на левой панели размещаем Memo1, его свойство Align устанавливаем в alClient. На правой же панели сначала размещаем верхнийMemo (для него свойство Align устанавливаем в alTop), затем размещаем на этой же правой панели сплиттер (устанавливаем для него свойство Align в alTop) и, наконец, нижнийMemo - для него свойство Align устанавливаем в alClient.

После запуска программы получаем желаемое разбиение нашей формы.