回答
你可以围绕onClick事件代码的东西,如
if myFlag then
begin
...event code...
end;
如果你不希望它被执行,设置myFlag假后的复选框状态的改变将其设置回真正的做。
我希望有一个按钮解决方案,但您可以将当前事件存储在TNotifyEvent var中,然后将Checkbox.OnChecked设置为零,然后将其恢复。
CheckBox-> Checked = false在按钮上,但它甚至调用onClick事件。所以我会尝试一下。谢谢。 – Cynede
另一种选择是使用中介类这样的改变保护ClicksDisable属性:
type
THackCheckBox = class(TCustomCheckBox)
end;
procedure TCheckBox_SetCheckedNoOnClick(_Chk: TCustomCheckBox; _Checked: boolean);
var
Chk: THackCheckBox;
begin
Chk := THackCheckBox(_Chk);
Chk.ClicksDisabled := true;
try
Chk.Checked := _Checked;
finally
Chk.ClicksDisabled := false;
end;
end;
+1对于ClicksDisabled – yonojoy
在您可以使用新版本的Delphi类助手添加此功能:
CheckBox.SetCheckedWithoutClick(False);
通过使用VCL的以下类助手TCheckBox
:
TCheckBoxHelper = class helper for TCheckBox
procedure SetCheckedWithoutClick(AChecked: Boolean);
end;
procedure TCheckBoxHelper.SetCheckedWithoutClick(AChecked: Boolean);
begin
ClicksDisabled := True;
try
Checked := AChecked;
finally
ClicksDisabled := False;
end;
end;
只是为了完整性:一个FMX TCheckBox
会表现相似(触发OnChange
)。您可以使用下面的类帮助解决此:
TCheckBoxHelper = class helper for TCheckBox
procedure SetCheckedWithoutClick(AChecked: Boolean);
end;
procedure TCheckBoxHelper.SetCheckedWithoutClick(AChecked: Boolean);
var
BckEvent: TNotifyEvent;
begin
BckEvent := OnChange;
OnChange := nil;
try
IsChecked := AChecked;
finally
OnChange := BckEvent;
end;
end;
免责声明:谢谢,dummzeuch了原来的想法。注意班级助手的常见提示。
这正是我正在寻找的!谢谢 – KryNaC
试试这个方法:
Checkbox.OnClick := nil;
try
Checkbox.Checked := yourFlag;
finally
Checkbox.OnClick := CheckboxClick;
end;
简单的办法就是把你的onclick代码onmouseup事件;
- 1. jQuery的 - 变化选择框状态
- 2. 变化复选框状态
- 3. 复选框状态发生变化时的JQuery事件
- 4. 如何调用onClick事件上选择框在轨
- 5. 什么是事件选择框动态变化值
- 6. 没有onclick或onchange事件的复选框状态
- 7. 需要动态复选框值来改变选择框的状态
- 8. Javascript复选框状态变化
- 9. 限制选择onclick事件
- 10. 选择孙子onclick事件
- 11. gps开/关状态变化事件
- 12. onclick事件,使复选框
- 13. 的onclick复选框事件
- 14. 保存复选框状态的onclick
- 15. 无限循环中的状态变化事件in angularjs
- 16. 调用onClick事件
- 17. 无法在javascript中调用函数来更改表单中文本框的值,而无需onclick事件
- 18. 绑定到点击事件动态创建按钮,而无需选择器
- 19. 获取选择框选项的值,而无需使用.change()
- 20. jQuery,选择变化时的事件
- 21. 表格选择角度变化事件
- 22. 阵营路由器改变状态,而无需使用链接
- 23. JavaScript和选择框改变事件
- 24. 无法调用JavaScript的onclick事件
- 25. 变化选择框选择点击
- 26. JQuery的输入变化与选择框不触发事件?
- 27. 在下拉框中的选择指数变化事件触发
- 28. 如何变化选择框
- 29. JavaScript值变化选择框
- 30. 平变化选择框中
是的...... -S很简单。不知道为什么我自己没有做到> _ < – Cynede