Учись программированию на C++ Builder бесплатно!

В ряде случаев возникает необходимость ввода или отображения в поле одного из значений, входящих в состав фиксированного набора. С этой целью удобно использовать компонент DBRadioGroup, представляющий собой группу зависимых переключателей, из которых в каждый момент времени может быть включен (выбран) только один. Зависимые переключатели также называют просто переключателями. В форме они отображаются в виде кружка с текстовой надписью.

Выбрать для поля одно из значений можно также с помощью списков, которые представляют для этих целей более широкие возможности.

Управление числом и названиями переключателей производится с помощью свойства items типа TStrings, позволяющего получить доступ к отдельным переключателям в группе. Это свойство содержит строки, отображаемые как заголовки переключателей. Отсчет строк в массиве начинается с нуля: items[0], items [1] и т.д. Обычно задание значений этого свойства выполняется при разработке приложения с помощью Редактора строк. При выполнении приложения для манипуляции со строками (заголовками) можно использовать такие методы, как Add и Delete.

Свойство values типа Tstrings содержит список значений поля, на которые должны реагировать переключатели группы. Управление этим списком осуществляется аналогично управлению списком items. Если возможные значения свойства values не заданы, то они выбираются из значений свойства items, т.е. в этом случае значение, соответствующее переключателю, совпадает с названием этого переключателя.

Группа переключателей работает следующим образом. Переключатель включается при переходе к очередной записи, если значение связанного с ним поля содержит одно из значений, присутствующих в списке values. Если же поле содержит значение, отсутствующее в списке возможных, то ни один переключатель не выбирается. Изменение значения поля происходит при выборе другого переключателя группы.

Для поля, с которым связана группа переключателей, пользователь может выбрать значение только из списка. Попытки ввести в поле произвольное значение, например, с помощью компонента DBGrid, блокируются.

Новое значение поля будет зафиксировано в наборе данных и отображено другими визуальными компонентами (DBGrid и подобными) после потери фокуса группой переключателей, например, в связи с переходом к другой записи.

Доступ к отдельному переключателю можно получить через свойство itemindex типа int, содержащее позицию (номер) переключателя, выбранного в группе в текущий момент. Это свойство используется для выбора отдельного переключателя или для определения, какой из переключателей является выбранным. Если свойство itemindex имеет значение -1, то не выбран ни один из переключателей.

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

Вот пример, иллюстрирующий выбор переключателя на программном уровне:

void fastcall TForm1::Button1Click(TObject *Sender)

{

Table1->Edit();

DBRadioGroupl->ItemIndex = 1;

Table1->Post();

}

В приведенной процедуре при нажатии кнопки Button1 в группе DBRadioGroup1 выбирается второй переключатель. Предварительно набор данных переводится в режим редактирования, а после переключения и смены значения поля сделанные изменения сохраняются.

Поделиться