Программирование PC Microsoft Visual C++: как группировать радиокнопки Sat, December 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Microsoft Visual C++: как группировать радиокнопки Печать
Добавил(а) microsin   

Предположим, на форме нужно разместить несколько независимых групп радиокнопок. Группируются радиокнопки как обычно - с помощью контрола Group Box. Но убогий инструмент визуального редактирования Visual Studio не позволяет включить группирование радиокнопок, даже если Вы их добросовестно разместили на форме, как полагается (каждая группа радиокнопок внутри своего Group Box).

radiogroup01.jpg 

После такого размещения логично ожидать, что группа Radio1/Radio2 будет работать отдельно от группы Radio3/Radio4, но не тут то было - после запуска приложение радиокнопки Radio1, Radio2, Radio3 и Radio4 иногда работают как одна группа. Я долго не мог понять, почему. Оказалось это происходит, если Вы сначала добавили 2 контрола Group Box, а потом 4 контрола Radio Button, даже не подозревая о том, что порядок добавления контролов в форму имеет значение - надо было сначала добавить первый Group Box, потом в него радиокнопки Radio1 и Radio2, потом добавить второй Group Box, и в него добавить радиокнопки Radio3 и Radio4.

Чтобы решить проблему, нужно сделать 2 вещи:

1. Установить в IDE Visual Studio у каждого Group Box, куда помещены радиокнопки, свойство Group в True (по умолчанию оно False).

2. Любым текстовым редактором вручную отредактировать файл ресурсов *.rc. Если Ваш проект называется testradio, то файл ресурсов будет называться testradio.rc. Когда его откроете, секция описания контролов на форме будет такого вида:
radiogroup02.jpg

Нужно вторую строк GROUPBOX переставить перед CONTROL Radio3, это включит разделение радиокнопок Radio1, Radio2, Radio3 и Radio4 на две группы:
radiogroup03.jpg

После такой правки группа Radio1/Radio2 будет работать отдельно от группы Radio3/Radio4.

Другой способ решения проблемы - все контролы удалить и разместить их заново в требуемой последовательности (не забываем установить у контролов Group Box свойство Group в True). Причем важен именно порядок добавления контролов, а не место размещения радиокнопок - их можно даже поместить не в область Group Box.

 

Добавить комментарий


Защитный код
Обновить

Top of Page