100 компонентів Delphi - TabControl, PageControl, TabSet, TabbedNoteBook, NoteBook
У компоненті є низка методів, що дозволяють оперувати сторінками, створювати їх, знищувати, перемикати. Подивіться їх у довідці Delphi. Основні події компонента -OnChangingіOnChange. Перше з них відбувається безпосередньо перед перемиканням на іншу сторінку після натискання користувача на новій закладці. При цьому обробник події передається за посиланням параметрAllowChange— дозвіл перемикання. Якщо в обробнику встановитиAllowChange = false, то перемикання не відбудеться. ПодіяOnChangeприходить відразу після перемикання.
Розглянемо тепер компонентTabControl. Зовні цей компонент виглядає так само, якPageControl, і має багато тих же властивостей:Style,MultiLine,TabPosition,TabHeight,TabWidth,Images,ScrollOpposite, тих самих подій:OnChangingтаOnChange. Але принципова відмінність його відPageControlполягає в тому, щоTabControlне має безлічі панелей (сторінок). Компонент є однією сторінкою з керуючим елементом типу кнопки з багатьма положеннями. І треба написати відповідні обробники подійOnChangingтаOnChange, щоб визначити, що саме має відбуватися на панелі при перемиканні закладок користувачем. У компонента є ще одна властивість -MultiSelect, що дозволяє множинний вибір закладок. Якщо ця властивість встановлена вtrue, то в обробниках подій треба описати реакцію на такий вибір користувача.
Застосовувати компонентTabControlмає сенс у додатках, у яких потрібен багатопозиційний перемикач. Ви можете, звичайно, імітувати за допомогоюTabControlповедінку, аналогічну компонентуPageControl. Для цьогодостатньо, наприклад, розташувати в межахTabControlдві панелі, що закривають один одного, і в обробник подіїOnChangeвставити оператор:
ЯкщоPanel2— верхня панель, то при виборі першої закладки (TabIndex = 0) вона буде невидимою і під нею проступатиме нижня панель.
Але подібна імітаціяPageControlнемає сенсу, оскільки простіше використовувати сам компонентPageControl. ATabControlтреба застосовувати, якщо потрібні якісь перебудови в межах однієї панелі.
Тепер коротко зупинимося на компонентахTabSet,TabbedNoteBookтаNoteBook. Ці компоненти застосовуються в Delphi 1 і не рекомендуються для застосування у 32-розрядних програмах.
КомпонентTabbedNoteBookє аналогом багатосторінкової панеліPageControl. Тільки багато однакових цих панелей властивості називаються по-різному. Основна властивість -Pages, що визначає кількість сторінок і написи закладок. ВластивістьActivePageвизначає напис активної сторінки. ВластивістьPageIndexвизначає індекс активної сторінки (0 – перша сторінка). Так що дізнатися, яка сторінка активна, можна або за значеннямActivePage, абоPageIndex.
У обробник подіїOnChange, що відбувається при перемиканні користувачем сторінки, передається параметрNewTab, що дорівнює індексу нової сторінки, іAllowChange— роздільна здатність перемикання. Для заборони перемикання можна в обробнику встановитиAllowChange = false.
КомпонентNoteBookє пачкою панелей, імена та кількість яких визначаються властивістюPages, як у компонентіTabbedNoteBook. Індекс вибраної сторінки визначається властивістюPageIndex. У цьому компоненті відсутнякеруючий елемент – закладки. Так що сторінки можна перемикати якимись кнопками, перемикати їх в залежності від дій користувача, в залежності від даних, що відображаються і т.п. КомпонентиNoteBookтаTabSetможуть бути, звичайно, об'єднані програмно в компонент, аналогічнийTabbedNoteBook. Для цього достатньо в обробник подіїOnChangeкомпонентаTabSetвставити оператор
Але подібне використання цих компонентів навряд чи доцільне: краще використовувати безпосередньоTabbedNoteBook.