
- •Программирование для Windows
- •Литература
- •Вам необходимо знать и уметь
- •Первая программа
- •Соглашения операционной системы Windows
- •Вызовы функций Windows
- •Идентификаторы, написанные прописными буквами
- •Новые типы данных
- •Описатели
- •Венгерская нотация
- •Точка входа программы
- •Оконная процедура
- •Регистрация класса окна
- •Создание окна
- •Отображение окна
- •Цикл обработки сообщений
- •Оконная процедура
- •Обработка сообщений
- •Воспроизведение звукового файла
- •Сообщение wm_paint
- •Сообщение wm_destroy
- •Сложности программирования для Windows
- •Синхронные и асинхронные сообщения
- •Думайте о пользователе
- •Лекция3. Приступаем с изучению компонент
- •Урок 4. Класс tObjectи его потомки
- •Урок 5. Работа с кнопками
- •Урок 6. Компонент ActionList
- •Урок 7. Работаем с меню (класс tMainMenu)
- •Урок 8. Работаем с контекстным меню (класс tPopupMenu)
- •Урок 9. Компонент Edit
- •Урок 10. Работаем с двумя формами
- •Урок 11. Текст (компоненты tLabel и tStaticText)
- •Урок 12. Компонент ListBox
- •Урок 13. Компонент ComboBox
- •Урок 14. Используем api-функции
- •Урок 15. Разные MessageBox'ы
- •Урок 16. Компонент CheckBox
- •Урок 17. Компонент RadioButton
- •Урок 18. Класс tStrings
- •Урок 19. Класс tStringList
- •Урок 20. Работаем с сетью. Клиент (класс tClientSocket)
- •Урок 21. Работаем с сетью. Сервер (класс tServerSocket)
- •Урок 22. Компонент ImageList
- •Урок 23. Пересчитываем компоненты на форме
- •Урок 24. Форма - добавление методов
- •Урок 25. Форма - добавление полей
- •Урок 27. Значок на панели задач (компонент tTrayIcon)
- •Урок 28. Работаем со сплиттером
- •Урок 29. Компонент Panel
- •Урок 30. Совместное использование сплиттера и Panel'ей
- •Урок 31. Компонент HotKey
- •Урок 32. Компонент StatusBar
- •Урок 33. Установка главной формы приложения
- •Урок 34. Рисование на форме
Урок 29. Компонент 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 ;
}
}
Урок 30. Совместное использование сплиттера и Panel'ей
Если использовать только сплиттеры, то некоторые способы разбиения формы на части осуществить невозможно. Например, только сплиттерами невозможно добиться, чтобы у нас была одна область слева (по всей высоте формы) и 2 области друг над другом справа:
Но это можно сделать с помщью сплиттеров и панелей.
Например, вот так:
Размещаем на форме панель, устанавливаем ее свойство AlignвalLeft. Затем щелкаем на свободном месте формы и затем размещаем в нем сплиттер. Его свойствоAlignтакже устанавливаем вalLeft. Опять щелкаем на свободном месте формы и размещаем в нем вторйю панель. Для нее устанавливаем свойствоAlignвalClient. Таким образом мы получили две панели (слева и справа), разделенные сплиттером.
Теперь на левой панели размещаем memo, его свойствоAlignустанавливаем вalClient. На правой же панели сначала размещаем верхнийmemo(для него свойствоAlignустанавливаем вalTop), затем размещаем на этой же правой панели сплиттер (устанавливаем для него свойствоAlignвalTop) и, наконец, нижнийmemo- для него свойствоAlignустанавливаем вalClient.
После запуска программы получаем желаемое разбиение нашей формы.