- •Лекція №10
- •Панелі і компоненти зовнішнього оформлення
- •1. Загальна характеристика компонентів зовнішнього оформлення
- •2. Панелі загального призначення — компоненти Panel, GroupBox, Bevel, ScroIiBox, Splitter
- •3. Багатосторінкові панелі — компоненти TabControl, PageControl
- •4. Інструментальні панелі — компоненти ToolBar і PageScroller
- •5. Панелі із можливістю перебудови
- •6. Смуга стану StatusBar
3. Багатосторінкові панелі — компоненти TabControl, PageControl
Багатосторінкові панелі дозволяють економити простір вікна програми, розміщуючи на одному і тому ж місці сторінки різного змісту.
Почнемо розгляд багатосторінкових панелей з компоненту PageControl.
Перенесіть компонент PageControl на форму. Щоб задавати і редагувати сторінки цього компоненту, треба клацнути на ньому правою кнопкою миші. У меню, що спливло, ви можете бачити команди: NewPage — створити нову сторінку NextPage — перейти на наступну сторінку, PreviousPage — перейти на попередню сторінку.
Кожна створювана вами сторінка є об'єктом типу TTabSheet. Це панель, на якій можна розміщувати будь-які компоненти. Сторінка має наступні основні властивості:
Name - ім'я, по якому можна посилатися на сторінку;
Caption - напис, який з'являється на ярличку закладки;
PageІndex - індекс сторінки, по якому можна посилатися на сторінку;
ImageІndex - індекс зображення, яке може з'являтися на ярличку закладки;
Із загальних властивостей компоненту PageControl можна відзначити:
Style - Визначає стиль відображення компоненту: tsTabs — закладки, tsButtons — кнопкиб, tsFlatButtons — плоскі кнопки.
MultiLine - Визначає, чи будуть закладки розміщуватися в декілька рядів, якщо всі вони не поміщаються в одии ряд;
TabPosition - визначає місце розташування ярличків закладок: tpBottom — внизу, tpLeft — зліва, tpRight — справа і tpTop — зверху компоненту;
TabHeight і TabWidth - висота і ширина ярличків закладок в пікселах. Якщо значення цих параметрів задані рівними 0, то розміри ярличків визначаються автоматично за розмірами написів на них.
Images - посилання на компонент ImageList, який містить список зображень на ярличках. Властивості ImageІndex сторінок містять індекси, відповідні саме цьому списку.
ActivePage - ім'я активної сторінки.
Pages [int Index] - Доступ до сторінки по індексу (перша сторінка має індекс 0). Властивість тільки для читання.
PageCount - Кількість сторінок. Властивість тільки для читання.
У компонента є ряд методів, що дозволяють оперувати сторінками, створювати їх, знищувати, перемикати.
Основні події компоненту — OnChanging і OnChange. Перша з них відбувається безпосередньо перед переходом на іншу сторінку після клацання користувача на новій закладці. При цьому в обробник події передається по посиланню параметр AllowChange — дозвіл переходу. Якщо в обробнику задати AllowChange = false, то перехід не відбудеться. Подія OnChange відбувається відразу після переходу.
Розглянемо тепер компонент TabControl. Зовні цей компонент виглядає як PageControl, і має багато тих же властивостей: Style, MultiLine, TabPosition, TabHeight, TabWidth, Images, ScrollOpposite, ті ж події OnChanging і OnChange. Але принципова відмінність його від PageControl полягає в тому, що TabControl не має багатьох панелей (сторінок). Компонент є однією сторінкою з елементом управління, типу кнопки з багатьма положеннями. І треба написати відповідні обробники подій OnChanging і OnChange, щоб визначити, що саме повинно відбуватися на панелі при перемиканнях закладок користувачем. У компоненту є ще одна властивість — MultySelect, що дозволяє множинний вибір закладок. Якщо ця властивість встановлена в true, то в обробниках подій треба описати реакцію на такий вибір користувача.
Число закладок і їх надписи визначаються властивістю Tabs типу TStrings. У ньому ви можете задати написи закладок. Скільки строчок написів ви вкажете, стільки буде закладок. Поточний стан перемикача визначається властивістю TabІndex. Ви можете встановити його в процесі проектування, щоб визначити початковий стан перемикача. А потім в обробниках подій. OnChanging і OnChange можете читати цю властивість, щоб визначити, що саме вибрав користувач.
Застосовувати компонент TabControl має сенс в тих випадках, в яких потрібен багатопозиційний перемикач.