mybox.Checked := true;
将TRadioButton设置为选中(通过代码)会导致调用OnClick事件处理程序。
如何识别用户是否通过GUI交互进行状态更改
答案 0 :(得分:11)
您可以在以编程方式更改radiobutton状态时取消OnClick事件处理程序:
procedure TForm1.Button6Click(Sender: TObject);
var
Save: TNotifyEvent;
begin
Save:= RadioButton2.OnClick;
RadioButton2.OnClick:= nil;
RadioButton2.Checked:= not RadioButton2.Checked;
RadioButton2.OnClick:= Save;
end;
答案 1 :(得分:4)
mybox.Tag := 666;
mybox.Checked :=true;
mybox.Tag := 0;
procedure myboxOnclick(Sender : TObject);
begin
if Tag = 0 then
//Do your thing
end;
答案 2 :(得分:3)
如果您有一个连接到radiobutton的操作,则可以设置操作的checked属性。这也将阻止触发OnClick事件。
答案 3 :(得分:0)
TRadioButton
(如TCheckBox
)提供了受保护的财产ClicksDisabled
,可以为您提供帮助。
我使用类助手来添加所需的功能:
RadioButton1.SetCheckedWithoutClick(False);
使用以下VCL TRadioButton
的类帮助程序:
TRadioButtonHelper = class helper for TRadioButton
procedure SetCheckedWithoutClick(AChecked: Boolean);
end;
procedure TRadioButtonHelper.SetCheckedWithoutClick(AChecked: Boolean);
begin
ClicksDisabled := True;
try
Checked := AChecked;
finally
ClicksDisabled := False;
end;
end;