在 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 处于正确的内部状态。
我有两个单选按钮 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 处于正确的内部状态。