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

时间:2015-02-17 12:07:37

标签: delphi

我有两个单选按钮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被选中返回并且如果我切换窗口的焦点并返回到表单再次触发rdoAClick事件。

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

1 个答案:

答案 0 :(得分:1)

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

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处于正确的内部状态。