将TRadioButton设置为checked会导致OnClick事件

时间:2010-05-18 12:33:26

标签: delphi

mybox.Checked := true;

将TRadioButton设置为选中(通过代码)会导致调用OnClick事件处理程序。

如何识别用户是否通过GUI交互进行状态更改

4 个答案:

答案 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;
相关问题