2013-02-05 145 views
2

我在Delphi中創建了一個表單。 說我有Form與與標籤"&Add"(下劃線A,作爲鍵盤快捷鍵),和dbgrid(只讀狀態)(或其他控制像TButton)。禁用鍵盤快捷鍵(delphi)

然後我將焦點改爲Dbgriddbgrid得到了重點)(或TButton)。

每次我壓在dbgrid一個鍵,在speedbutton觸發器onClick方法。

有時我需要禁用它一段時間的原因,然後我再次啓用它。 如何禁用speedbutton快捷方式? 然後如何再次啓用它?

回答

4

當您按A時窗體正在按下按鈕,因爲該按鈕已表示對該按鍵感興趣,並且窗體上沒有任何其他按鈕正在接受按鍵操作。如果您的表單上有一個編輯框,並且它具有輸入焦點,則不會觸發該按鈕。

你可以讓一個控件表示它想要在有焦點時接收按鍵,但是通常在編寫一個自定義控件時發生,你一定會想到新控件類在接收鍵盤輸入時應該做什麼。

如果您不希望按鈕被觸發,您可以禁用它。另一種選擇是在執行通常的點擊處理代碼之前,更改OnClick事件處理程序以檢查其他條件(例如網格是否具有焦點)。

+0

如何使用** formShortcut **事件?我們可以從這裏禁用它嗎?我不明白,爲什麼這個事件發生了兩次? –

+0

是的,它看起來像OnShortcut事件也會起作用。不過,我不知道爲什麼它會發生兩次。你可以做一些調查,或者你可以發表另外一個問題,問爲什麼它的工作方式如此。 –

0

您可以通過將速度按鈕的標籤從&Add更改爲Add來禁用快捷方式。當您需要再次啓用快捷方式時將其更改回來。

請注意,指定這樣的加速器性質使快捷鍵,一個是剛剛與&Alt鍵其他相同的密鑰開頭的關鍵。所以,在你的情況下,他們將是AAlt + A。以同樣的方式,消除加速器禁用這兩個快捷方式。因此,請記住,通過此禁用快捷方式的方法,您將無法觸發該按鈕,因爲它們都不會與AAlt + A一起觸發。