Загальний опис

Компоненти-контейнери

Компоненти-контейнери призначені для додавання в них інших елементів управління, у тому числі і інших контейнерів теж. Кількість контейнерів на екрані і ступінь їх вкладеності залежить від складності інтерфейсу і не обмежується ні середовищем розробки, ні операційною системою.

Контейнери зазвичай мають рамку і підпис. Візуально елемент-контейнер охоплює групу компонентів. Але іноді контейнери застосовуються тільки для організації інших елементів управління і не присутні візуально на екрані. Зате вони допомагають організувати інтерфейс на основі властивостей автоматичного розташування компонентів Align і Anchors.

На мал. 1 представлено вікно програми, в якому один під одним знаходяться два компоненти-контейнери. У контейнерах розміщуються інші елементи управління. Така організація зручна як з погляду користувача, оскільки контейнери своєю рамкою відокремлюють різні групи елементів управління, так і з погляду розробника, оскільки дозволяє при візуальному проектуванні пересувати формою безліч компонентів одночасно. Нагадаємо, що положення компонентів визначається щодо контейнера, в якому вони розміщені.

Мал. 1. Компоненти-контейнери

Приведемо список найбільш вживаних контейнерів, а потім розглянемо кожен з них докладніше (див. таблицю. 1).

Таблиця 1

Найбільш вживані контейнери

Компонент Название Описание
Panel Простий контейнер для елементів управління
ScrollBox Контейнер для елементів управління з можливістю зміни (прокрутки) області видимості, якщо елементи управління займають область більшу, ніж клієнтська область даного компоненту
PageScroller Контейнер для одного елементу управління з можливістю зміни (прокрутки) області видимості в одному напрямі (або по горизонталі, або по вертикалі)
GroupBox Контейнер для елементів управління із заголовком
RadioGroup Контейнер із заголовком для створення груп залежних перемикачів
TabControl Контейнер для організації багатосторінкових діалогів засобами програми
PageControl Контейнер для організації багатосторінкових діалогів з автоматичною зміною сторінок
ControlBar Контейнер для організації панелей інструментів
CoolBar Контейнер для організації панелей інструментів

2. Контейнери-панелі

Види панелей і загальний опис

Панелі використовуються для розташування груп елементів управління, візуальна структура яких не міняється під час виконання програми, за винятком, можливо, видимості і доступності деяких компонентів. Такі панелі призначені тільки для візуального відділення якої-небудь групи компонентів від решти вмісту вікна.

Контейнери-панелі представлені компонентами:

· Panel (закладка standard Палітри компонентів);

· ScrollBox (закладка Additional);

· GroupBox (закладка Standard);

· RadioGroup (закладка Standard).

Всі панелі володіють властивостями, спільними для візуальних елементів управління, такими, як: властивості розташування, вирівнювання, видимості і доступності. Причому при зміні розташування, видимості або доступності панелі відповідним чином змінюються однойменні властивості компонентів, розташованих в ній.



Так, якщо властивість Enabled якого-небудь контейнера має значення False, то і всі компоненти усередині нього будуть недоступні користувачеві. Одночасно з цим компоненти ScrollBox і RadioGroup мають додаткову функціональність.

Панель ScrollBox — панель із смугами прокрутки

Панель ScrollBox призначена для угрупування великого числа елементів управління, і має можливість відображати на екрані тільки частину групи. Для управління видимою областю користувач може використовувати смуги скролінгу, розташовані в правій і нижній частинах панелі.

Смуги скролінгу представлені свойствами HorzScrollBar і VertScrollBar типу TControlScrollbar і мають у свою чергу властивості, перераховані в таблиці 2. Наприклад, для того, щоб програмно змінити положення видимої області, слід змінити значення властивостей Position полів HorzScrollBar і VertScrollBar:

ScrollBox1. VertScrollBar.Position := 30;

Таблиця 14.5

Властивості класу TControlScrollBar

Властивість Тип Опис
Size Integer Висота в точках (для горизонтальної смуги скролінгу) або ширина (для вертикальної)
ButtonSize Integer Розмір (у точках) кнопок із стрілками, розташованих по краях смуги скролінгу
ThumbSize Integer Розмір (в точках) частини смуги скролінгу яка переміщується
Margin Word Відстань (в точках) між кнопками із стрілками, розташованими по краях смуги скролінгу
Tracking Boolean Указує на необхідність (значення True) негайного переміщення видимої області при зміні положення частині смуги скролінгу, інакше (значення False) положення видимої області змінюється після відпуску користувачем кнопки миші
Smooth Boolean Указує, чи слід переміщати плавно (значення True) видиму область при натисненні мишею на фоновій області смуги скролінгу. Не рекомендується для використання в програмах, що виконуються на малопотужних комп'ютерах
ParentColor Boolean Указує на необхідність використання (значення true) фонового кольору батьківського компоненту (у якому знаходиться даний компонент), інакше (значення False) фон смуги скролінгу встановлюється відповідно до властивості Color
Color TColor Колір фону смуги скролінгу
Range Integer Висота (для вертикальної смуги скролінгу) і ширина (для горизонтальної) видимої області в точках
Position Integer Положення видимої області в точках. Змінюється в діапазоні від 0 до значення властивості Range
Increment Integer Крок зміни регульованого значення (положення видимої області)в крапках
Style TScrollBarStyle Зовнішній вигляд смуги скролінгу. Властивість може мати три значення: ssRegular (звичайний стиль Windows з тривимірними елементами управління). tsFM(елементи управління смугою плоскі і стають тривимірними при наведенні миші) і ssHotTrack (елементи управління плоскі і підсвічують при наведенні миші)
Visible Boolean Видимість смуги скролінгу

Панель ScrollBox зручно використовувати у випадках, коли необхідно зберегти можливість використання деякого набору елементів управління незалежно від розмірів вікна. Другий мотив використання компоненту ScrollBox - це організація в одному вікні декількох незалежних один від одного областей, що використовують можливість прокрутки. Відзначимо, проте, що надмірне вживання компонентів такого роду істотно ускладнює роботу користувача з інтерфейсом.

Простішим аналогом компоненту ScrollBox є PageScroller, розташований на сторінці Win32. Даний компонент має таке ж призначення, але передбачений для прокрутки одного елементу управління, який, втім, може бути контейнером і містити в собі інші компоненти.

Напрям прокрутки задається властивістю Orientation, яка може мати два значення:

· soHorizontal — прокрутка в горизонтальному напрямі;

· soVertical (прокрутка у вертикальному напрямі).

Компонент Page Scroller часто використовується спільно з панелями інструментів, які зазвичай мають фіксовану ширину або висоту, тобто не вимагають переміщення видимої області на всіх напрямках.

На мал. 2 представлено вікно програми, в якому знаходиться компонент PageScroller. Елементом управління, зона видимості якого переміщається, є компонент-контейнер Panel, в який вставлено 10 кнопок. З них на екрані видно тільки 7, але за допомогою кнопок-стрілок компоненту PageScroller можна зробити видимими інші кнопки.

мал. 2. Компонент PageScroller

Панель RadioGroup - панель залежних перемикачів

Панель RadioGroup призначена для створення групи залежних перемикачів. Якщо користувачем вибирається один з перемикачів з такої групи, то значення всіх останніх скидаються. У разі використання RadioGroup залежні перемикачі створюються автоматично на основі списку рядків, заданого властивістю Items:

propertyItems: TStrings;

Розробник має доступ до властивості Items як під час роботи програми, так і під час візуальної побудови, внаслідок чого істотно спрощується створення елементів програми, які керують станом деякого параметра.

Для визначення, який з елементів є виділеним, використовується властивість ItemIndex (елементи нумеруються з нуля):

propertyItemIndex: Integer;

Дана властивість доступна і на етапі розробки програми, що дозволяє заздалегідь встановити вибраний за умовчанням елемент групи.

Компонент RadioGroup вирівнює елементи управління так, щоб вони рівномірно займали його поверхню. Також передбачена можливість автоматичного розбиття групи елементів управління на декілька стовпців, кількість яких задається властивістю Columns:

propertyColumns: Integer;

Елементи управління, створені панеллю RadioGroup охоплені рамкою, у верхній частині якої знаходиться рядок, що пояснює зазвичай сенс параметра, для налаштування якого призначена група. Рядок, що виводиться як заголовок, міститься у властивості Caption

propertyCaption: TCaption;

Такі ж властивості є і у компонентів Panel і RadioGroup. Компонент ScrollBox заголовка не має.

3. Сторінкове представлення груп компонентів

Компоненти-контейнери посторінкового представлення інформації призначені для розбиття елементів на групи і виводу в кожен момент часу роботи програми тільки однієї групи компонентів з декількох. У Delphi дані компоненти реалізовані у вигляді класів TabСontrol і PageСontrol.

Спільною рисою компонентів TabControl і PageControl є наявність смуги із закладками, за допомогою яких користувач може вибрати необхідну сторінку елементів управління (див. мал. 3). Якщо закладки не поміщаються у вікно компоненту, то автоматично з'являється елемент управління для їх переміщення, що складається з двох стрілок.

Мал. 3. Компоненти посторінкового представлення елементів управління

Розташування закладок можна змінити за допомогою властивості TabPosition:

propertyTabPosition: TTabPosition;

Type TTabPosition = (tpTop, tpBottom, tpLeft, tpRight )

Это свойство может принимать значения:

tpTop..закладки расположены вдоль верхней стороны контейнера, как показано на рисунке;

tpBottom закладкирасположены вдоль нижней стороны контейнера;

tpLeft.....закладки расположены вдоль левой стороны контейнера;

tpRight . закладки расположены вдоль правой стороны контейнера.

Також можливе розташування закладок в декілька рядів, якщо властивість Multiline має значення True. Більш того, якщо закладки розташовані уздовж однієї з бічних сторін компоненту, то ця властивість завжди повинна мати значення True.

property MultiLine: Boolean;

Розмір закладок вибирається автоматично, проте може бути встановлений розробником за допомогою цілочисельних властивостей TabWdth (ширина закладки) і TabHeight (висота закладки):

property Tab Width: SmallInt;

property TabHeight: SmallInt;

Візуальне представлення закладок можна змінити, використовуючи властивість Style:

property Style: TTabStyle;

Type TTabStyle = (tsTabs, tsButtons, tsFlatButtons);

Ця властивість може набувати наступних значень:

tsTabs............... звичайні закладки;

tsButtons........закладки у вигляді тривимірних кнопок;

tsFlatButtons . закладкиу вигляді плоских кнопок.

Під час виконання програми або візуальної розробки номер активної закладки можна визначити або змінити за допомогою цілочисельної властивості TabIndex (закладки нумеруються від нуля):

property TabIndex: Integer;

При зміні активної закладки викликається обробник повідомлення OnChange, якщо він визначений для даного компоненту. Обробник OnChange є процедурою з одним параметром - посиланням на компонент-джерело, в якому відбулася подія:

property OnChange: TNotifyEvent;

Type TNotifyEvent = procedure(Sender: TObject) Of Object;

Тепер розглянемо відмінності компонентів TabControl і PageControl один від одного. Простішим у використанні є компонент PageControl, який вже під час розробки програми надає набір сторінок, на яких розташовуються групи елементів управління.

При додаванні PageControl на форму в ньому не містяться сторінки для розміщення елементів управління і, відповідно, немає закладок. Для додавання чергової сторінки в процесі візуальної побудови програми слід скористатися контекстним меню компоненту, що викликаються при натисненні правої кнопки миші, і вибрати пункт New Page. Для видалення сторінки призначений пункт меню Delete Page. Найбільш важливою властивістю компоненту TTabSheet є властивість Caption, що визначає заголовок сторінки, який виводиться на закладці.

Елементи управління, що додаються на сторінки, належать цим сторінкам, у тому числі і візуально, тому компонент PageControl має можливість управляти видимістю цих елементів управління через видимість сторінок.

Компонент TabControl побудований за іншим принципом і є тільки набором закладок і місцем для розташування елементів управління. Визначення видимості елементу управління в кожен момент часу виконання є функцією програми. Аналіз може бутизаснований на властивості TabIndeх, розглянутому вище, і проводитися в обробнику події Onchange. На перший погляд, така конструкція істотно програє порівняно з компонентом PageControl, проте є і деякі позитивні сторони такого підходу. По-перше, компонент TabControl може бути використаний не тільки для угрупування компонентів, а ще і для вибору одного значення із списку, представленого закладками.

По-друге, з'являється цікава можливість активності декількох сторінок одночасно. Для того, щоб користувач мав можливість вибору декількох сторінок, властивість MultiSelectповинна мати значення True.

property MultiSelect: Boolean;

Використання множинного вибору можливе тільки при використанні стилів закладок tsButtons або tsFlatButtons.

Оскільки компонент TabControl не містить яких-небудь реальних сторінок, підписи, що виводяться на закладках, задаються за допомогою властивості Tabs:

property Tabs: TStrings;

Компоненти для відображення інформації

1. Види компонентів для відображення інформації

Дана група візуальних компонентів призначена для відображення наступної текстової і графічної інформації у вікнах програми:

· текстові рядки;

· геометричні фігури;

· діаграми і графіки;

· зображення, прочитані з графічних файлів;

· відеокліпи.

Розглянемо стандартні компоненти, вказані в таблиці 1.

Таблиця 1

Компоненти для відображення інформації

Компонент Назва Опис
Label Текстова мітка
StaticText Текстова мітка
ProgressBar Індикатор процесу
Animate Програвач відеофайлів
Bevel Рамка або окремі лінії рамки
Shape Геометрична фігура
Image Зображення з графічного файлу
Chart Діаграма

2. Текстові мітки

Текстові мітки використовуються для підпису інших елементів управління, розташованих на формі і представлені в Delphi компонентами Label (закладка Standard) і StaticText (закладка Additional). Як візуальні компоненти, Label і StaticText підтримують властивості розташування, вирівнювання і видимості Left, Тор, Width, Height, Align, Anchors та Visible, а також додають безліч власних, наведених в таблицях 2, 3 і 4.

Таблиця 2

Спільні властивості компонентів Label і StaticText

Свойство Тип Описание
Caption String Рядок, що виводиться на екран
Color TColor Колір фонової області, на якій відображається рядок
Font TFont Шрифт, яким виводиться рядок
AutoSize Boolean Указує, чи слідує компоненту автоматично змінювати свій розмір при зміні рядка, що виводиться, або характеристик виводу. При використанні значення True у властивості Wordwrap компоненту Label (розбивати рядок по словах) пріоритетною є зміна висоти. Збільшення ширини мітки Label відбувається тільки якщо чергове слово має ширину, більшу за ширину Label. Інакше при введенні чергового слова воно переноситься на новий рядок
Alignment TAlignment Указує спосіб вирівнювання тексту усередині компоненту. Може мати наступні значення: taLeftJustify (вирівнювати рядок по лівому краю - встановлено за умовчанням), taCenter (вирівнювання по центру) і taRightJustify (вирівнювання по правому краю)

Таблиця 3.

Специфічні властивості компоненту Label

Властивість Тип Опис
Layout TTextLayout Указує вирівнювання тексту, що виводиться міткою, по висоті і може набувати три значення: tlTop (текст вирівняний по верхньому краю), tlCenter (текст вирівняний по центру), tlBottom (вирівнювання по нижньому краю). Використання властивості має сенс при відключенні функції автоматичного підбору розмірів (установка властивості AutoSize значення False)
Transparent Boolean Відключає промальовування фону мітки незалежно від значення властивості Color

Таблиця 3.

Специфічні властивості компоненту StaticText

Властивість Тип Опис
BorderStyle TStaticBorderStyle Визначає наявність і вид рамки, що виводиться навколо мітки. Може набувати наступних значень: sbsNone (рамка відсутня), sbsSingle (проста рамка з тонкої лінії) и sbsSunken: (тривимірна рамка)
BevelOuter BevelInner TBevelCut Визначають відповідно наявність і вид зовнішньої і внутрішньої рамки. Можуть набувати наступних значень: bvNone (рамка відсутня), bvLowered (рамка, що втиснута), bvRaised (рамка опукла), bvSpace (рамка не виводиться, але місце під неї резервується, якщо властивість BevelKind = bkTile, інакше рамка опукла)
BevelKind TBevelKind Визначає стиль зовнішньої і внутрішньої рамок і може набувати наступних значень: bkNone (рамки не виводяться), bkTile (чітке виділення рамки), bkSoft (менш контрастна в порівнянні з bkTile рамка), bkFlat (рамки виводяться без ефекту тривимірності, незалежно від значень властивостей Bevelouter і Bevellnner)

Істотна відмінність текстових міток полягає в тому, що при використанні великої кількості текстових міток, одночасно розташованих на екрані, слід враховувати, що компонент StaticText є більш ресурсоємним, і, по можливості, вибирати мітки Label для розробки інтерфейсу.

Проте це не є загальним правилом, оскільки компонент StaticText при деяких обставинах має переваги перед Label. Одна з таких переваг - наявність рамки, що виводиться навколо тексту, що дозволяє відокремити мітку від інших елементів інтерфейсу.

Друге витікає з невіконності компоненту Label. Будь-який віконний компонент перекриватиме зображення мітки Label, якщо вони знаходяться в одному і тому ж контейнері, і їх видимі області перетинаються.

Обидві текстові мітки мають можливість виведення багаторядкового тексту, проте настроювання розбиття на рядки проводиться різними методами. Компонент Label управляє можливістю розбиття довгого рядка на декілька за допомогою логічної властивості WordWrap:

property Wordwrap: Boolean;

Якщо властивість WordWrap має значення False, то рядок, що виводиться на екран, не розбивається. Якщо при цьому властивість AutoSize має значення True, то мітка повинна автоматично змінювати свій розмір. Інакше рядок урізується за розміром мітки, і на екрані видно тільки частину чергового слова.

Розбиття рядка в компоненті StaticText проводиться завжди, причому незалежно від розмірів мітки і значення властивості AutoSize на екран виводяться тільки цілі слова, а ті, які не підходять по ширині для поточного рядка, переносяться на наступний.

3. Компоненти-індикатори

Для представлення одного або декількох числових параметрів в графічному вигляді в Delphi реалізовані компонент-індикатор ProgressBar, розташований на сторінці Win32 палітри компонентів, і компонент-діаграма Chart (сторінка Additional).

  • Иерархические организационные структуры управления
  • Этиология лейкозов
  • Порядок организации учебного процесса
  • 29 страница
  • Пересадка растений
  • Понятие и сущность себестоимости.
  • Выбор контакторов и магнитных пускателей
  • Какое отношение это имеет к зоне сражения?
  • ПРЕДСТАВЛЕНИЕ О БУДУЩЕМ
  • Дизайн товара
  • Психология массовых коммуникаций 16 страница
  • Введение в профессию «психолог» 21 страница
  • Основные направления тактики действий ОВД (групп элементов боевых порядков) по ликвидации массовых беспорядков
  • ОБРАЗОВАНИЕ. Разворачивающаяся в России промышленная революция требовала множество образованных
  • Конструктивное решение
  • Методы контроля
  • Нина - профессиональная в прошлом танцовщица, после развода с мужем оказывается в ситуации, когда невозможно обеспечить себя и ребенка. В чужом городе, потеряв даже малооплачиваемую работу учителя 27 страница
  • Глава 3. ОСУЩЕСТВЛЕНИЕ ЗАКУПОК 6 страница
  • Формирование односвязного списка
  • Шри Югал Дас Баба