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

3. Кнопка з фіксацією SpeedButton

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

У кнопок SpeedButton, як і у інших кнопок, є властивість Caption — напис, але в цих кнопках вона найчастіше порожня, оскільки замість напису використовується піктограма. Зображення на кнопці задається властивістю Glyph точно так, як і для кнопок BitBtn. І так само властивість NumGlyphs визначає число використовуваних піктограм, властивості Layout і Margin визначають розташування зображення, а властивість Spacing — відстань між зображенням і написом.

Особливістю кнопок SpeedButton є властивості GroupІndex (індекс групи), AllowAllUp (дозвіл віджатого стану всіх кнопок групи) і Down (початковий стан - натиснута). Якщо GroupІndex = 0, то кнопка поводиться так само, як Button і BitBtn. При натисненні користувачем кнопки вона занурюється, а при відпуску повертається в нормальний стан. В цьому випадку властивості AllowAllUp і Down не впливають на поведінку кнопки.

Якщо GroupІndex > 0 і AllowAllUp = true, то кнопка при клацанні користувача на ній занурюється і залишається в натиснутому стані. При повторному клацанні користувача на кнопці вона звільняється і переходить в нормальний стан (саме для того, щоб звільнення кнопки відбулося, необхідно задати AllowAllUp true). Якщо властивість Down під час проектування встановлена рівною true, то початковий стан кнопки — натиснута.

Якщо є декілька кнопок, що мають однакове ненульове значення GroupIndex, то вони утворюють групу взаємозв'язаних кнопок з яких натиснутої може бути тільки одна. Якщо одна кнопка знаходиться в натиснутому стані і користувач клацає на іншій, то перша кнопка звільняється, а друга фіксується у натиснутому стані. Поведінка натиснутої кнопки при клацанні на ній залежить від значення властивості AllowAllUp. Якщо воно дорівнює true, то кнопка звільниться, оскільки в цьому випадку можливий стан, коли всі кнопки групи віджаті. Якщо ж AllowAllUp дорівнює false, то клацання на натиснутій кнопці не приведе до зміни виду кнопки. Втім, і в цьому випадку, як і при будь-якому клацанні на кнопці, виникає подія OnClick, яка може бути оброблена.

Стан кнопки під час виконання можна визначити по значенню властивості Down: якщо значення рівне true, то кнопка натиснута. Під час події OnClick значення вже дорівнює тому стану, який приймає кнопка в результаті клацання на ній.

4. Групи радіокнопок — компоненти RadioGroup, RadioButton і GroupBox

Радіокнопки утворюють групи взаємозв'язаних індикаторів, з яких може бути вибраний тільки один. Вони використовуються для вибору користувачем однієї з декількох взаємовиключних альтернатив, наприклад, відділу, в якому працює співробітник, або статі співробітника. Втім, радіокнопки можуть використовуватися не тільки для вибору, але і для відображення аналогічних даних. В цьому випадку управління кнопками здійснюється програмно.

Почнемо розгляд радіокнопок з компоненту RadioGroup - панель групи радіокнопок. Це панель, яка може містити розташовані радіо кнопки розташовані різними способами. Напис в лівому верхньому кутку визначається властивістю Caption. А написи кнопок і їх кількість визначаються властивістю Items, що має тип TStrings. Клацнувши на кнопці з багатокрапкою біля цієї властивості у вікні Інспектора Об'єктів, ви потрапите в редактора списків рядків. У ньому ви можете занести написи, які хочете бачити біля кнопок, по одній в рядку.

Кнопки, що з'явилися в панелі після завдання значень Items, можна розмістити в декілька стовпців (не більше 17), задавши властивість Columns, За умовчанням Columns = 1.

Визначити, яку з кнопок вибрав користувач, можна по властивості ItemІndex, яка показує індекс вибраної кнопки, індекси, як завжди в C++Builder, починаються з 0. За умовчанням ItemІndex = -1, що означає відсутність вибраної кнопки. Якщо ви хочете, щоб у момент початку виконання програми якась з кнопок була вибрана (це практично завжди необхідно), то треба встановити відповідне значення ItemІndex під час проектування. Якщо ви використовуєте радіокнопки не для введення, а для відображення даних, встановлювати значення ItemШndex можна програмно під час виконання.

Компоненти RadioButton, згруповані панеллю GroupBox надають можливість зручніше розташовувати радіо кнопки на формі. Панель GroupBox виглядає на формі так само, як RadioGroup, і напис в її верхньому лівому кутку також визначається властивістю Caption. Ця панель сама по собі порожня. Її призначення — служити контейнером для інших елементів управління, зокрема, для радіокнопок RadioButton. Окрема радіокнопка RadioButton особливого сенсу не має, хоч і може служити індикатором, що включається і вимикається. Але як індикатори звичайно використовуються інші компоненти — CheekBox. А радіокнопки мають сенс, коли вони взаємодіють один з одним в групі. Ця група і об'єднується єдиним контейнером, звичайно панеллю GroupBox.

Розглянемо властивості радіокнопки RadioButton. Властивість Caption містить напис, що з'являється біля кнопки. Значення властивості Alignment визначає, з якого боку від кнопки з'явиться напис: taLeftJustify — зліва, taRightJustify — справа (це значення прийняте за умовчанням). Властивість Checked визначає, вибрана дана кнопка користувачем, чи ні. Оскільки на початку виконання програми потрібно, щоб одна з кнопок групи була вибрана за умовчанням, її властивість Checked треба встановити в true в процесі проектування.

Радіокнопки RadioButton можуть розміщуватися не тільки в панелі GroupBox, але і в будь-якій панелі іншого типа, а також безпосередньо на формі. Група взаємозв'язаних кнопок в цих випадках визначається тим віконним компонентом, який містить кнопки. Зокрема, для радіокнопок, розміщених безпосередньо на формі, контейнером є сама форма.

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