Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л10.doc
Скачиваний:
8
Добавлен:
30.10.2018
Размер:
111.62 Кб
Скачать

4. Інструментальні панелі — компоненти ToolBar і PageScroller

Інструментальні панелі можна створювати, не застосовуючи спеціальні компоненти. Можна помістити на форму просту панель Panel, розмістити на ній швидкі кнопки SpeedButton і панель готова. Залишається тільки написати для кнопок відповідний код. Але спеціалізовані компоненти, які ми розглянемо в цьому розділі, надають додаткові можливості для побудови інструментальних панелей.

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

Якщо розмістити компонент ToolBar на формі, то за умовчанням він розташується вгорі, оскільки його властивість Align за умовчанням - alTop. Якщо ви хочете, щоб панель розташовувалася інакше, встановите Align = alNone, після чого можете додати панелі будь-яку форму і розташувати її в будь-якому місці.

Занесення компонентів на панель ToolBar можна здійснювати звичайним способом — перенесенням їх з палітри компонентів. Але для занесення кнопок є і простіший варіант. Клацніть на ToolBar правою кнопкою миші і виберіть з контекстного менюкоманду NewButton. На формі з'явиться чергова кнопка — об'єкт типу TToolButton. Це не зовсім звичайна кнопка, оскільки надалі ви побачите, що зовні вона може не бути схожою на кнопку. Її вигляд і поведінка визначається її властивістю Style, яка за умовчанням рівне tbsButton — кнопка. Інші можливі стилі ми розглянемо пізніше. А як кнопка цей об'єкт дуже схожий на кнопку SpeedButton. Тільки зображення на кнопці визначається не властивістю Glyph, а властивістю ImageIndex. Воно визначає індекс зображення, що зберігається в зовнішньому компоненті ImageList. Вказівка на цей компонент може задаватися такими властивостями компоненту ToolBar, як Images, DisabledImages (указує на список зображень кнопок в недоступному стані) і HotlImages (указує на список зображень кнопок в моменти, коли над ними переміщається курсор миші).

Властивість MenuItem дозволяє задати розділ головного або контекстного меню, який дублюється даною кнопкою. При установці цієї властивості, якщо у відповідному розділі меню було задане зображення і встановлений текст підказок (властивість Hint), то це ж зображення з'явиться на кнопці і той же текст з'явиться у властивості Hint кнопки. Передадуться з розділу меню в кнопку також значення властивостей Enabled (доступність) і Visible (видимість). Правда, все це передасться в кнопку тільки у момент установки властивості MenuItem. Якщо в процесі подальшого проектування ви зміните відповідні властивості розділу меню, це не відобразиться на властивостях кнопки. Але якщо ви зітрете значення MenuItem, а потім встановите його знову, то в кнопці зафіксуються нові значення властивостей розділу меню.

Властивість Wrap, встановлена в true, призводить до того, що після цієї кнопки ряд кнопок на панелі переривається і наступні кнопки розміщуються в наступному ряду.

Тепер повернемося до властивості Style, яка задає стиль кнопки. Значення Style = tbsCheck визначає, що після клацання користувача на кнопці вона залишається в натиснутому стані. Повторне клацання на кнопці повертає її у віджатий стан. Поведінка такої кнопки подібно до кнопок SpeedButton і визначається аналогічними властивостями AllowAllUp і Down. Якщо при цьому в декількох кнопках встановлено властивість Grouped = true, то ці кнопки утворюють групу, з якої тільки одна кнопка може знаходитися в натиснутому стані.

Значення Style = tbsDropDown відповідає кнопці у вигляді випадного списку. Цей стиль зручний для відтворення випадного меню. Якщо для подібної кнопки задати як властивість MenuItem головний розділ меню, то у випадному списку автоматично з'являтимуться розділи випадного меню. При Style = tbsDropDown можна замість властивості MenuItem задати властивість DropDownMenu, що визначає контекстне меню (компонент PopupMenu), яке відображатиметься у випадному списку.

Значення Style = tbsSeparator приводить до появи роздільника, що дозволяє відокремити один від одного кнопки різних функціональних груп. Значення Style tbsDivider приводить до появи роздільника іншого типа — у вигляді вертикальної лінії. Роздільник можна ввести і з контекстного меню ToolBar, вибравши команду NewSeparator.

Властивість кнопки Indeterminate задає її третій стан — не натиснута і не відпущена. Цю властивість можна встановлювати в true під час виконання, якщо в даному режимі кнопка не доступна.

Властивість Marked виділяє кнопку.

Ми розглянули занесення на панель кнопок. Але в інструментальних панелях нерідко використовуються і випадні списки. Наприклад, для завдання розміру шрифту. Можна розташувати на панелі ToolBar такі компоненти, як ComboBox, CSpinEdit і ін.

Із загальних властивостей компоненту ToolBar слід ще відзначити ButtonHeight і ButtonWidth — висота і ширина кнопок в пікселах, і Wrapable — автоматичне перенесення кнопок в наступний ряд панелі, якщо вони не поміщаються в попередньому. Таке перенесення здійснюється і під час проектування, і під час виконання при зміні користувачем розмірів панелі.

Властивості, що визначають вид панелі ToolBar: BorderWidth — ширина рамки, EdgeІnner і EdgeOuter — стиль зображення внутрішньої і зовнішньої частини панелі (втоплений або виступаючий), EdgeBorders — визначає зображення окремих сторін панелі (лівої, правої, верхньої, нижньої).

Ми розглянули побудову інструментальної панелі на основі компоненту ToolBar. Але смуга може бути дуже довгою і не поміщатися у відведеному їй місці форми. Прикладом є палітра компонентів C++Builder. У цих випадках може допомогти компонент PageScroIler, що забезпечує прокрутку панелі. Власне кажучи, PageScroIler може прокручувати будь-який компонент, не обов'язково панель ToolBar. Наприклад, він може прокручувати якусь панель разом з розміщеними на ній компонентами. PageScroIler прокручує тільки один компонент і лише в одному напрямі — горизонтальному або вертикальному. Та і оформлення управління прокруткою у PageScroller не схоже на смуги прокрутки в ScrollBox.

Основна властивість компоненту PageScrollerControl. Вона указує компонент, який повинен розміщуватися і прокручуватися у вікні PageScroller. Завдяки наявності цієї властивості ви можете проектувати свою інструментальну панель, наприклад, ToolBar, не поміщаючи її наперед у вікно PageScroller і не замислюючись про її розмір. А після того, як ви спроектували панель, можна ввести на форму компонент PageScroller і встановити його властивість Control. У цей момент ваша інструментальна панель переміститься у вікно компоненту PageScroller і з'явиться, якщо необхідно, кнопка прокрутки.

Властивість AutoScroll визначає, чи повинна прокрутка здійснюватися автоматично, як тільки курсор миші пройде над кнопкою прокрутки. Випробуйте режим автоматичної прокрутки експериментально. На мій погляд, краще залишати значення AutoScroll рівним false, оскільки така автоматична прокрутка не дуже зручна користувачу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]