将 TRadioButton 设置为选中会导致 OnClick 事件

发布于 2024-09-02 03:40:25 字数 135 浏览 8 评论 0原文

mybox.Checked := true;

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

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

mybox.Checked := true;

Setting TRadioButton to checked (by code) causes OnClick event handler to be called.

How can I recognize if user is making the state change by GUI interaction

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

绻影浮沉 2024-09-09 03:40:25

您可以在以编程方式更改单选按钮状态时取消 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;

You can nil the OnClick event handler while changing a radiobutton state programmatically:

procedure TForm1.Button6Click(Sender: TObject);
var
  Save: TNotifyEvent;

begin
  Save:= RadioButton2.OnClick;
  RadioButton2.OnClick:= nil;
  RadioButton2.Checked:= not RadioButton2.Checked;
  RadioButton2.OnClick:= Save;
end;
走过海棠暮 2024-09-09 03:40:25
 mybox.Tag := 666; 
 mybox.Checked :=true; 
 mybox.Tag := 0;

procedure myboxOnclick(Sender : TObject);
begin
if Tag = 0 then
//Do your thing
end;
 mybox.Tag := 666; 
 mybox.Checked :=true; 
 mybox.Tag := 0;

procedure myboxOnclick(Sender : TObject);
begin
if Tag = 0 then
//Do your thing
end;
吾性傲以野 2024-09-09 03:40:25

如果您有一个操作连接到单选按钮,则可以设置该操作的选中属性。这也将阻止触发 OnClick 事件。

If you have an action connected to the radiobutton, you can set the checked property of the action instead. This will also prevent the OnClick event to be fired.

叹梦 2024-09-09 03:40:25

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;

TRadioButton (like TCheckBox) provides a protected property ClicksDisabled that can help you.

I use class helpers to add the needed functionality:

RadioButton1.SetCheckedWithoutClick(False);

with the following class helper for a 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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文