我有两个TSpeedButton
:btn1
和btn2
。它们的属性被设置为使得它们在一组共同行动和是互斥的,这意味着,当按下一个按钮另一个按钮是自动未按下:如何在TSpeedButton已经关闭的情况下提早退出()?
AllowAllUp = False
GroupIndex = 1
OnClick = onSpeedButtonsClick
我在onSpeedButtonsClick()
一些代码,运行取决于一些代码哪个按钮被点击。
我想要做的就是让这个如果btn1
目前Down
,并且用户按下这个按钮,没有什么应该发生:
procedure frmMyForm.onSpeedButtonsClick(Sender: TObject);
begin
{ Don't do anything if the clicked button is already currently pressed down. }
if ((Sender = btn1) and btn1.Down) or
((Sender = btn2) and btn2.Down) then
Exit();
{ ... some other code here that should only run when
the `Down` state of the buttons changes }
end;
的问题是,当btn1
是目前下跌并且用户按btn2
,Down
属性btn2
设置为True
之前onSpeedButtonsClick()
执行,所以它Exit()
s不管什么。
不应该你的代码是'if((Sender = btn1)and btn2.D拥有)或...'。在你显示的代码中,你正在检查是否按下了与触发OnClick事件的按钮相同的按钮。 – SilverWarior
@SilverWarior如果一个按钮已经是'Down',并且用户按下这个当前向下的按钮,我想让该例程'Exit()'。如果用户按下了一个当前正在运行的按钮(即未按下),那么我想让'OnClick()'处理程序运行一些代码。 – DBedrenko
用户如何按下一个已经倒下的按钮?遵循由Windows定义的标准按钮点击处理,这应该是不可能的。也许在多点触控环境中。但是,为了能够在第二次按下按钮时不必先按下按钮,将按钮状态更改为“向上”,则不能再进行其他操作。或者我可能错过了一些关于你的设计的重要信息? – SilverWarior