2014-09-25 42 views
1

我在得到一個TToolbar按鈕的問題出現「啓用」用下拉菜單按鈕TToolbar灰色的

按鈕已分配給它的行動 - 它通過OnClick事件

它是火還設置了一個下拉菜單,該菜單上有兩個選項,兩個選項均已啓用,並且兩個選項均在單擊時觸發。

儘管如此,TToolbar Button仍然保持灰色,但接受點擊。

有什麼建議嗎?

回答

3

你在做錯事。 :-)

使用時的操作,你不使用按鈕的OnClick事件 - 你把代碼放在操作的OnExecute事件,而不是(因爲那正是執行 - 動作 - 而不是按鈕)。當操作分配給控件時,控件不能啓用,直到TAction.OnExecute有一個處理程序。

使用動作的原因是您可以將代碼放在一個位置(與動作相關的事件),然後每個附加到該動作的控件都使用該通用代碼執行相同的功能。在該單個位置編輯代碼意味着附加到該操作的所有控件都會看到相同的更改。

如果TAction.OnExecute事件沒有附加任何東西,控件在被選中(單擊)時無關緊要,因此沒有理由首先啓用它。

+1

另請參閱DisableIfNoHandler。 – 2014-09-25 14:57:19

+0

Delphi已添加OnClick,並設置爲ActionOnExecute過程。 – 2014-09-26 08:20:10

+0

@DanKelly:不,當您在對象檢查器中雙擊OnClick時,*您*會添加OnClick,並且*您*將其設置爲ActionOnExecute過程。 (IDE可能已經生成了一些代碼,但它是* your *操作的結果。)再次,不要這樣做。 :-)刪除OnClick處理程序(只刪除begin..end之間的代碼,留下空白行,並刪除任何var語句,然後編譯。一旦* *爲該按鈕創建了一個OnClick事件,那麼'ActionOnExecute'在運行時沒有看到附加到按鈕,因爲它有一個OnClick事件。 – 2014-09-26 12:49:49