我有兩個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