Delphi中自动取消选中按钮的执行操作
我想在按下 TSpeedButton 时执行一项操作,而在“未按下”同一按钮时执行另一项操作。 我知道没有 onunpress 事件,但是有没有简单的方法可以让我在按下不同的按钮时执行操作?
procedure ActionName.ActionNameExecute(Sender: TObject);
begin
PreviousActionName.execute(Sender);
//
end;
看起来太笨重了。
I have one action I want to perform when a TSpeedButton is pressed and another I want to perform when the same button is "unpressed". I know there's no onunpress event, but is there any easy way for me to get an action to execute when a different button is pressed?
procedure ActionName.ActionNameExecute(Sender: TObject);
begin
PreviousActionName.execute(Sender);
//
end;
Seems too clunky.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据您的描述,我想您将快速按钮与 GroupIndex <>0 一起使用,但同一组中没有其他按钮,或者至少不作为 RadioButtons (AllowAllUp True) 工作。
您只有 1 个 onClick 事件用于按下按钮,但如果按钮具有 GroupIndex,执行操作取决于按钮的状态。
因此,您必须在 onClick 事件处理程序中测试 Down 是否为 False,因为 Down 在 onClick 处理程序触发之前已更新。
前任:
From what you describe, I suppose you use your speedbutton with a GroupIndex <>0 but no other buttons in the same group, or at least not working as RadioButtons (AllowAllUp True).
You only have 1 onClick event for pressing the button, but what to do depends on the state of the button if it has a GroupIndex.
So, you have to test for Down being False in your onClick event handler, as Down is updated before the onClick Handler is fired.
ex:
没有unpress,但是可以查询Down属性。
该示例进行了一些肮脏的转换,但它对于操作和 OnClick 都有效。
There is no unpress, but you can query the Down property.
The example took some dirty casts, but it works both for the action and for the OnClick.