Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

3 . 2. Панели (panel, gradient panel, group box)

Еще один важный и часто используемый вид контролов - panel (панель). Конструктор панели:

NewPanel( Parent, edge ) - создает панель типа TControl (возвращая на нее указатель типа PControl - больше я останавливаться на этом моменте не буду). Отличие в параметрах состоит в том, что строка текста для Caption этому конструктору не передается. Дело не в том, что панель не может иметь текста. Может, точно так же, как и метка. Но вот вопрос: часто ли вы в своем проекте Delphi оставляете у панели присвоенный ей по умолчанию заголовок (Panel1, Panel2, ...)? Лично я практически во всех случаях сразу перехожу к свойству Caption в Инспекторе Объектов и нажимаю кнопку <Delete>.

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

Никаких других особенностей у панели нет. В отличие от метки, она может (и именно для этого она и предназначена) являться родителем для других визуальных элементов формы. В том числе, и при проектировании формы в MCK, панель "принимает" брошенные на нее с линейки инструментов KOL контролы в качестве дочерних.

Дополнительно, в KOL имеется особая панель с эффектом градиентной заливки своего содержимого.

NewGradientPanel( Parent, Color1, Color2 ) - создает такую панель со стилем по умолчанию gsVertical. Этот стиль заливки можно изменить дополнительно, изменив свойство GradientStyle, или использовать альтернативный конструктор:

NewGradientStyleEx( Parent, Color1, Color2, style, layout ). Имеются стили вертикальной, горизонтальной, диагональной - слева направо сверху вниз, и слева направо снизу вверх, а так же ромбической, эллиптической и прямоугольной заливки. Есть возможность так же управлять размещением условного центра заливки (последний параметр второго конструктора - layout).

Градиентная панель является полноценной панелью, она может содержать в себе произвольные дочерние визуальные объекты. Если использовать прозрачность (но не для всех контролов это возможно), то можно получить потрясающие эффекты. Разумеется, использование градиентной панели добавляет к размеру приложения несколько килобайт, так что выбор между красотой и размером за вами.

Еще один важный оконный объект, который предназначен для использования в качестве панели - это группа (group box). На самом деле, в API Windows, группа - это особая разновидность кнопки. Когда я реализовывал данный объект в KOL, то, прежде всего, интересовался тем, чтобы он обеспечивал автоматическую отрисовку весьма характерного своего внешнего вида, т.е. самостоятельно обеспечивал изображение заголовка, рамки, и при этом мог использоваться именно как родитель для дочерних контролов, подобно панели.

Конструктор:

NewGroupBox( Parent, s ). Собственно, никаких других особых свойств у группы нет.

Примечания к данному снимку с экрана: поскольку градиентная панель не может отображать свой заголовок, надпись на ней выполнена с помощью положенной на нее метки, которой добавлена прозрачность. На рисунке после его сжатия стали заметны вертикальные полосы. На самом деле, такие полосы заметны только при установке разрешения рабочего стола в 64К цветов и меньше.

Для целей MCK-проектирования имеются зеркальные компоненты TKOLPanel, TKOLGradientPanel и TKOLGroupBox. Набор свойств этих компонент вполне коррелирует со всем вышеописанным. Для TKOLGradientPanel цвета Color1 и Color2, стиль (GradientStyle) и положение центра (GradientLayout) настраиваются в Инспекторе Объектов, на их основании MCK генерирует код для вызова конструктора NewGradientPanel или NewGradientPanelEx с соответствующими параметрами.