Сначала об использовании радиогруппы или нет: если более чем у одной радиокнопки есть один и тот же родительский элемент, тогда этот родительский элемент автоматически действует как радиогруппа , независимо от того, используете ли вы компонент TRadioGroup или нет.Таким образом, переключатели с одним и тем же родителем ведут себя так, как и должны: ни одна или только одна может быть выбрана.
Во-вторых, совершенно правильно сбросить группу переключателей в невыбранное / непроверенное состояние.Для недавнего примера см. опция радио по умолчанию в диалоге отклонения редактирования .
Я воспроизвел вашу проблему, но у меня нет объяснения.Что происходит, когда вы снова показываете форму (вместо того, чтобы заново создавать ее), тогда сфокусированный элемент управления по-прежнему остается переключателем.Этот фокус как-то мешает изменить проверенное состояние. Кто-нибудь знает, почему?Я не могу найти его в источнике VCL.
Решение состоит в том, чтобы расфокусировать выбранный переключатель.Это можно сделать тремя способами в порядке предпочтения:
Сфокусируйте элемент управления, который появляется первым в списке порядка табуляции (что в любом случае является хорошей практикой):
procedure TSubForm.FormShow(Sender: TObject);
begin
SelectFirst;
RadioButton1.Checked := False;
RadioButton2.Checked := False;
end;
Но когда переключатель является первым элементом управления, установите фокус на саму форму:
SetFocus;
RadioButton1.Checked := False;
...
Или установите фокус на любой другой элемент управления весли имеет смысл:
OKButton.SetFocus;
RadioButton1.Checked := False;
...