在 OnClick 事件中选择另一个单选按钮

Selecting another radio button inside OnClick event

我有两个单选按钮 rdoA 和 rdoB。我的要求是每当用户单击 rdoA 时,我必须检查某些参数,如果不满足这些参数,则将选择恢复为 rdoB。我有这样的代码

MyForm.rdoAClick
var
  Save: TNotifyEvent;
begin
 if //some condition then
 begin
     Save := rdoB.OnClick;
     rdoB.OnClick := nil;
     rdoB.Checked := true;
     rdoB.OnClick := Save;
     Exit;
 End;
 //Other stuff
End;

问题是这段代码有效,但在某些情况下,如果已经选择了 rdoB,如果我们将其更改为 rdoA,如果条件满足 rdoB,则选择回来,如果我切换 window 的焦点并返回到表单 rdoAClick 事件再次被触发。

我在这里做错了什么?有没有更好的方法来解决这个问题?任何帮助将不胜感激。

我曾经遇到过类似的问题并找到了解决方案(适应您的代码)

procedure TForm6.rdoAClick(Sender: TObject);
var
  save: TNotifyEvent;
begin
  if MessageDlg('Allow change?',mtConfirmation, [mbYes,mbNo],0) = mrNo then
  begin
    save := rdoB.OnClick;
    rdoB.OnClick := nil;
    rdoB.SetFocus;
//    rdoB.Checked := True;
    rdoB.OnClick := save;
  end;
end;

设置 Focus 而不是 Checked(设置 Focus 后无论如何都会设置)确保 RadioButton 处于正确的内部状态。