Лекція 9. Елементи користувацького інтерфейсу. Панелі інструментів Як відомо, панель інструментів являє собою елемент керування, призначений для спрощення виклику команд найбільш використовуваних операцій. Панелі інструментів можуть бути статичними, тобто постійно прикріпленими до деякого краю вікна, або плаваючими, які можна переміщувати в межах вікна. Створити панель інструментів можна на основі: компоненти Panel; спеціальних компонент ToolBar або CoolBar; компоненти Form. Для створення панелі інструментів можна розмістити у формі компоненту Panel (панель), яка розміщена на сторінці Standard Палітри компонент. Заголовок у цієї компоненти, як правило, відсутній, і вирівнювання встановлене по одному з країв форми, найчастіше по верхньому. Панель є контейнером для інших компонент, і на ній переважно розміщуються кнопки швидкого доступу SpeedButton та комбіновані списки ComboBox. Якщо у форми є головне або контекстне меню, то кнопки панелі (швидкого доступу) дублюють їх команди. На поверхні кнопок панелі розміщуються малюнки (властивість Glyph) або заголовки (властивість Caption), які ідентифікують кнопки та пояснюють їх призначення. На практиці для створення панелі інструментів зручно використовувати компоненти ToolBar або CoolBar, які знаходяться на сторінці Win32 Палітри компонент. Компонента ToolBar містить спеціальні (інструментальні) кнопки ToolButton і дозволяє маніпулювати ними. Така панель інструментів автоматично задає для усіх свої кнопок однакові розміри, упорядковує їх розміщення і при необхідності переносить на другий рядок. Керувати панеллю інструментів та її окремими елементами можна на етапі конструювання або динамічно під час виконання програми. Кнопка ToolButton є нащадком класу TGraphicControl і подібна на кнопку швидкого доступу SpeedButton. Крім кнопок ToolButton, на панель ToolBar можна поміщати й інші компоненти керування, наприклад, швидкі кнопки SpeedButton, комбіновані списки ComboBox або однорядкові редактори Edit. Ці компоненти також розміщуються та впорядковуються автоматично. При розробці програми для додавання до панелі інструментів нової кнопки ToolButton потрібно клікнути на компоненті ToolBar правою клавішею миші і вибрати пункт New Button контекстного меню. Після цього її поведінкою можна керувати через Інспектор об’єктів. Якщо кнопка ToolButton дублює команду пункту меню, то при натисненні цієї кнопки команда, закріплена за цим пунктом, буде виконуватись без написання обробника події OnClick кнопки. Малюнок для кнопки ToolButton визначається властивістю ImageIndex типу Integer, значення якої є порядковий номер малюнку у списку (відлік починається з нуля). Якщо відображати малюнок не потрібно, то можна задати цій властивості значення -1. Список малюнків знаходиться в компоненті ImageList, вмістиме якого формується при конструюванні програми. Відображені на кнопках малюнки являють собою зображення типу BMP, як правило, розміром 16(16 пікселів, і можуть бути підготовлені за допомогою будь-якого графічного редактора. Якщо кнопка ToolButton використовується як перемикач, то вона може відображати другий малюнок, який відповідає ї включеному (вибраному) стану. Цей малюнок вибирається з другого списку ImageList, який також формується завчасно і вказується властивістю HotImages панелі інструментів. Неактивні або заблоковані кнопки ToolButton відображають малюнки з третього списку, який вказується властивістю DisableImages панелі інструментів. Якщо такий малюнок відсутній, то виводиться блідішим основний малюнок. Панель інструментів, яка реалізується через компоненту CoolBar, містить декілька спеціальних смужок, які визначаються властивістю Bands. Ці смуги можуть містити інші елементи керування (в тому числі компоненти ToolBar), які здатні переміщуватись і змінювати свої параметри. Прикладом використання панелі інструментів CoolBar може бути панель кнопок в програмному продукті MS Internet Explorer. Для створення панелі інструментів можна використовувати і форму-панель. Для цього у форму поміщаються потрібні інтерфейсні елементи, а властивість BorderStyle встановлюється у значення bsSizeToolWin або bsToolWindow. Тоді область заголовка форми прийме вигляд, як в панелі інструментів. Якщо властивість BorderStyle має значення bsSizeToolWin, то розміри панелі інструментів можна змінювати мишкою. Коли властивість BorderStyle має значення bsToolWindow, то розміри візуально змінювати не можна. Однак на програмному рівні керування розмірами форми-панелі інструментів реалізується в будь-якому випадку. Крім того, форма-панель інструментів є плаваючою, тобто її можна переміщати мишкою. При розробці багатодокументної програми панель інструментів є дочірнім вікном і може переміщуватись в межах головного (батьківського) вікна. У випадку створення однодокументної програми форма-панель інструментів є незалежною від інших вікон, і користувач може розмістити її в будь-якому місці екрану. Рядок статусу Рядок статусу являє собою елемент керування, який відображає поточну інформацію про стан вмістимого вікна та клавіатури, контекстні підказки поточного пункту меню або кнопки панелі інструментів та інші відомості. Рядок статусу, як правило вирівняний по нижньому краю головного вікна програми. Для роботи з рядками статусу в Delphi є спеціальна компонента StatusBar, яка знаходиться на сторінці Win32 Палітри компонент. Крім того, рядок статусу можна створити програмно на основі компоненти StatusPanel. Як правило, така панель не має заголовка і вирівняна по нижньому краю форми. Всередині такого рядка статусу розміщуються декілька додаткових панелей, призначених для відображення інформації. Замість панелей для виводу поточної інформації можна використовувати окрему компоненту, найчастіше Label. Зручнішим способом відображення поточної інформації про стан є використання компоненти StatusBar. Вона являє собою рядок статусу, який може мати одну або декілька панелей виводу текстової інформації. Можливість підтримки рядком статусу декількох панелей визначає властивість SimplePanel типу Boolean. Якщо вона має значення True, то рядок статусу має лише одну панель, і текст можна задати через властивість SimpleText типу String. Якщо властивість SimplePanel має значення False (по замовчуванню), то рядок статусу має декілька панелей, і текст кожної з них встановлюється за допомогою властивості Text типу String окремої панелі. Для створення декількох панелей і керування ними призначена властивість Panels, яка дозволяє звертатись до панелей рядка статусу як до елементів масиву, нумерація яких починається з нуля. Наприклад, StatusBar1.Panels[1].Text:=’Час’+TimeToStr(Time); Тут інформація про поточний час відображається у другій панелі рядка статусу. Для налаштування панелей на етапі розробки програми використовується Редактор панелей рядка статусу, який можна активізувати подвійним кліком у вікні Інспектора об’єктів на значені властивості Panels компоненти StatusBar. Таблиці Таблиця представляє собою елемент, який дозволяє відображати дані, розбиті на рядки та стовпці. Для роботи з таблицями система Delphi надає компоненти DrawGrid та StringGrid, розміщені на сторінці Additional Палітри компонент. Таблиця DrawGrid дозволяє відображати у своїх комірках текстову та графічну інформацію. Автоматично виводиться лише сітка, а за заповнення вмістимого комірок відповідає програміст. Крім того, компонента DrawGrid лише відображає інформацію, а не зберігає її. Розміщення та наступний вибір даних поза компонентою DrawGrid також входить до функцій програміста. Більш простим та зручним для використання є компонента StringGrid, яка застосовується для обробки текстових даних, які й зберігаються у ній автоматично. Дана компонента може відображати й графічну інформацію, однак в цьому випадку збереження та занесення їх у таблицю програміст реалізує самостійно. Розмір таблиці визначають властивості ColCount та RowCount типу Longint, які задають максимальний індекс рядка та стовпця відповідно. За замовчуванням обидві властивості мають значення 5, що відповідає таблиці розміром 6(6. Якщо елементи не поміщаються у відведену для таблиці область, то автоматично з’являється прокрутка, що забезпечується властивістю ScrollBars. Крайні ліві стовпці та верхні рядки таблиці можна встановлювати фіксованими. Переважно фіксація використовується для оформлення заголовків. Кількість фіксованих стовпців і рядків таблиці визначають властивості FixedCols та FixedRows типу Integer відповідно. За замовчуванням властивості мають значення 1. Фіксовані елементи можуть виділятись кольором і при прокрутці інформації в таблиці залишаються нерухомими. Для доступу до окремої комірки служить властивість Cells[ACol,ARow: Integer] типу Sring, яка є двомірним масивом: індекс ACol визначає номер стовпця, а індекс ARow – номер рядка таблиці. Нагадаємо, що нумерація починається від нуля. Дану властивість можна використовувати лише під час виконання програми, вона доступна для читання та запису. Властивості Cols[Index:Integer] та Rows[Index:Integer] типу TStrings забезпечують доступ до будь-якого стовпця або рядка таблиці відповідно. Вмістиме комірок фіксованих стовпців та рядків також входить до значень властивостей Cols та Rows. Елементи з закладками Односторінковий блокнот TabControl. Багатосторінковий блокнот PageControl. Робота з діапазоном значень Робота з діапазоном значень полягає у виборі та заданні цілочисельних значень. В Delphi для цього використовуються компоненти ScrollBar (прокрутка, скролер) та TrackBar (повзунок, шкала), розміщені відповідно на сторінках Standard та Win32 Палітри компонент. Компонента TrackBar використовується для зміни значень в заданому діапазоні для вибору цілих чисел всередині діапазону. В Windows, наприклад, повзунок застосовується в регуляторі гучності звуку та ін. Названі компоненти походять від одного класу TWinControl і мають схожі поведінку та характеристики. Індикатори Компонента ProgressBar. Список графічних образів Компонента ImageList. Список дій Компонента ActionList. Компонента ActionManager. Компонента ActionMainMenuBar. Компонента ActionToolBar. Компоненти кольорових схем XPColorMap, StandardColorMap, TwilightColorMap.