Обзор компонентов библиотеки C++Builder____________________    179

пример, для компонента RadioGroup в верхней правой части формы рис. 3.21
свойство Items имеет вид:

бухгалтерия

администрация

цех 1

цех 2

цех 3

цех 4

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

Определить, какую из кнопок выбрал пользователь, можно по свойству Item-
Index, которое показывает индекс выбранной кнопки. Индексы, как всегда в
C++Builder, начинаются с 0. По умолчанию Itemlndex = -1, что означает отсутст-
вие выбранной кнопки. Если вы хотите, чтобы в момент начала выполнения при-
ложения какая-то из кнопок была выбрана (это практически всегда необходимо),
то надо установить соответствующее значение Itemlndex во время проектирова-
ния. Если вы используете радиокнопки не для ввода, а для отображения данных,
устанавливать значение Itemlndex можно программно во время выполнения при-
ложения.

Компонент RadioGroup очень удобен, но не свободен от некоторых недостат-
ков. Его хорошо использовать, если надписи кнопок имеют примерно одинаковую
длину и если число кнопок в каждом столбце (при размещении их в нескольких
столбцах) одинаково. Посмотрите, например, рис. 3.21 из раздела 3.3.1. Группа
радиокнопок в нижнем левом углу формы имеет нормальный вид. А группа анало-
гичных радиокнопок в верхней правой части формы выглядит плохо: она занимает
слишком много места, которое пропадает впустую. Связано это с тем, что длина
надписей у кнопок первого столбца превышает длину надписей у остальных кно-
пок. A RadioGroup при размещении кнопок ориентируется на надпись максималь-
ной длины. Еще хуже выглядела бы эта группа, если бы число кнопок было, на-
пример, равно 5.

В подобных случаях желательно нерегулярное расположение кнопок. Такую
возможность дают компоненты RadioButton, сгруппированные панелью Group-
Box. Панель GroupBox выглядит на форме так же, как RadioGroup, и надпись в ее
верхнем левом углу также определяется свойством Caption. Эта панель сама по
себе пустая. Ее назначение — служить контейнером для других управляющих эле-
ментов, в частности, для радиокнопок RadioButton. Отдельная радиокнопка Radio-
Button особого смысла не имеет, хотя и может служить индикатором, включае-
мым и выключаемым пользователем. Но в-качестве индикаторов обычно использу-
ются другие компоненты — CheckBox. А радиокнопки имеют смысл, когда они
взаимодействуют друг с другом в группе. Эта группа и объединяется единым кон-
тейнером, обычно панелью GroupBox.

Рассмотрим свойства радиокнопки RadioButton. Свойство Caption содержит
надпись, появляющуюся около кнопки. Значение свойства Alignment определяет,
с какой стороны от кнопки появится надпись: taLeftJustify — слева, taRightJus-
tify — справа (это значение принято по умолчанию). Свойство Checked определяет,
выбрана данная кнопка пользователем, или нет. Поскольку в начале выполнения
приложения обычно надо, чтобы одна из кнопок группы была выбрана по умолча-
нию, ее свойство Checked надо установить в true в процессе проектирования. Если
вы поэкпериментируете, то заметите, что можно установить в true значение Chec-
ked только у одной кнопки из группы.

Размещение кнопок RadioButton в панели GroupBox, как можно видеть из
рис. 3.21 раздела 3.3.1, дает большую свободу по сравнению с компонентом Radio-
Group и позволяет разместить кнопки не регулярно.