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

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

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

Завдання 6. Вивчити інструментальну панельToolBar.

Почніть новий проект. Збережіть файл модуля та проект. Помістіть панельToolBarна форму. За умовчанням вона розташується нагорі, оскільки її властивістьAlign=alTop. ЗадавшиAlign=alNone, можна надати панелі будь-яку форму і розташувати її в будь-якому місці. Властивості, що визначають вид панеліToolBar:BorderWidth-ширина бордюру,EdgeInnerтаEdgeOuter-стиль зображення внутрішньої та зовнішньої частини панелі (утоплений або виступаючий),EdgeBorders− визначає зображення окремих сторін панелі (лівої, правої, верхньої, нижньої).

Занесіть компоненти – кнопки на панельToolBar. Це можна зробити звичайним способом – переносом їх із палітри компонентів. Проте скористайтеся більш простим варіантом: клацніть наToolBarправою кнопкою миші та з меню виберіть командуНова кнопка. На формі з'явиться кнопка – об'єкт типуTTollButton. Вигляд та поведінка цієї особливої ​​кнопки визначається її властивістюStyle, яка за умовчанням дорівнюєtbsButton− кнопка. На відміну від кнопкиSpeedButton, зображення на ній визначається властивістюImageIndex, в якому знаходиться індекс зображення, що зберігається в компонентіImageList. Вказівка ​​нацей компонент може задаватися такими властивостями компонентаToolBar, якImages,DisAbledImages(вказує на список зображень кнопок у недоступному стані) таHotImages( вказує на список зображень кнопок у моменти, коли над ними рухається курсор миші).

Введіть чотири кнопки на панельToolBar. Завантажте в компонентImageListфайли зображеньfldropen,filesave,print,toolsз каталогуProgramFiles\CommonFiles\BorlandShared\Images\Buttonsдля чотирьох кнопок на панеліToolBar. У властивостіImagesпанеліToolBarзішліться на компонентImageList.

Збережіть все та виконайте програму. Переконайтеся, що кнопки на панеліToolBarпрацюють як кнопкиButton.

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

Клацніть правою кнопкою миші наToolBarі виберіть опціюНова кнопказі спливаючого меню. Унової кнопки, що з'явилася на панелі, встановітьStyle=tbsSeparator. Так заноситься на панель ToolBar горизонтальний роздільник, що дозволяє відокремити один від одного кнопки різних функціональних груп. Потім додайте ще одну кнопку та виконайте програму. Видаліть роздільник та додану кнопку.

Для занесення на панельToolBarвертикального роздільника в кнопці, що додається, потрібно встановитиStyle=tbsDivider. Однак простіше ввести вертикальний роздільник із контекстного менюToolBar, вибравши командуНовий сепаратор. Переконайтеся в цьому, додавши вертикальний роздільник на панель і п'яту кнопку. Після виконання програми видаліть роздільник та п'яту кнопку.

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

ВластивістьWrap, встановлена ​​вtrue, призводить до того, що після цієї кнопки ряд кнопок на панелі переривається, і наступні кнопки розміщуються в наступному рядку. Переконайтеся в цьому, додавши на панель 6-7 кнопок, змінивши значенняWrapнаtrueу другої кнопки, що додається. Виконайте програму. Видаліть усі додані кнопки.

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

Зі сторінкиСтандартперенесіть на форму компонентMainMenuта

сконструюйте меню з підменю такого вигляду:

ФАЙЛ ПРАВКА ІНСТРУМЕНТИ

Зберегти Шаблон 1

Друк Шаблон 2

У властивостіImagesкомпонентаMainMenuвкажітьImageList. Для розділівВідкрити, Зберегти, Друк, ІНСТРУМЕНТИу властивостіImageIndexвкажіть відповідно 0, 1, 2, 3. Для розділівВідкрити, Зберегти, Друку властивістьHintвпишіть відповідновідкрити текстовий файл, зберегти текстовий файл, друк текстового файла.Все збережіть і виконайте програму.

У властивістьMenuItemкнопок панеліToolBarвнесіть відповідно номери розділівВідкрити, Зберегти, Друк, ІНСТРУМЕНТИ, а якShowHintдля перших трьох кнопок внесітьtrue. Збережіть все та виконайте програму. Переконайтеся, що при натисканні четвертої кнопки на панеліToolBarз'являється підменю головного розділуІНСТРУМЕНТИ. Зіставте та поясніть отримані результати в останніх двох випадках.

Для четвертої кнопки, що відповідає розділуІНСТРУМЕНТИ, встановітьStyle=tbsDropDown. Кнопка набуде вигляду списку. Виконайте програму і переконайтеся, що у списку, що випадаєз'являються розділи меню.

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

Зі сторінкиСтандартперенесіть на форму компонентPopupMenuта

сконструюйте контекстне меню з розділамикопіювати, вставити.Додайте на панельToolBarп'яту кнопку, у її властивістьDropDownMenuвнесітьPopupMenuі задайте для неїStyle=tbsDropDown. Виконайте програму. Переконайтеся, що при натисканні на п'ятій кнопці з'являється контекстне меню. Видаліть п'яту кнопку.

В інструментальних панелях використовуються інші компоненти. Як експеримент помістимо на панель компонентComboBox(зі сторінкиСтандарт) і компонентCSpinEdit(зі сторінкиПриклади). Виконайте програму та переконайтесь у її правильній роботі.

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

Смуга інструментальної панелі може бути дуже довгою і не поміщатися у відведеному місці форми (наприклад палітра компонентівC++Builder). У цих випадках використовують компонентPageScroller, що забезпечує прокручування панелі (може прокручувати будь-який компонент, але тільки один і тільки в одному напрямку – горизонтальному або вертикальному).

Основна властивість компонентаPageScrollerControl. Воно вказує компонент, який повинен розміщуватися та прокручуватися у вікніPageScroller. Продовжимо проектування програми.

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