2011-07-19 46 views
4

這很有趣:)但如何做類似ActionList1.MyAction.Enable:=false德爾福:禁用1動作列表中的動作

動作列表有按鈕的動作,如果按鈕是看不見我需要禁用它的作用(如果沒有做到這一點,PRES的快捷方式,然後程序將執行)。

可能是我做錯了什麼,但我沒有將操作分配給按鈕。我只有一個動作列表與行動。每個動作都有一個捷徑。當這個快捷鍵被按下時,該動作被執行並執行一個程序。如果點擊按鈕 - >同樣的程序也會執行。

State:=asSuspended是一個整體動作列表。

謝謝!

+1

假設你有一個按鈕,'button1',其'Action'屬性設置爲'myAction'。如果你想讓按鈕不可見,那麼你只需設置'myAction.Visible:= False'。這導致該操作不可調用。現在,你的問題在目前的狀態下幾乎沒有任何意義,我希望這個評論不是你正在尋找的。我建議你嘗試更清楚地解釋你的問題。 –

+2

'MyAction.Enabled:= False'? –

+1

@David - 通過一個簡單的測試,將動作的可見性設置爲false似乎不會阻止使用快捷方式執行動作。 –

回答

5

您應該指定按鈕的Action財產和控制通過行動的一切。設置要禁用的動作,不可見等,並按下按鈕。

不要設置按鈕的OnClick事件處理程序,而是使用操作的相應事件。使用動作的OnUpdate事件來設置像Visible,Enabled等屬性,基本上所有在運行時都會發生變化的屬性。

1

TActionList是含有一個或多個TAction的列表。

TAction具有以下性質:
自動檢查
標題
經過
啓用
的GroupIndex
HelpContext
HelpKeyword
HelpType
提示
的ImageIndex
個SecondaryShortCuts
快捷方式
可見

啓用就好了,只要應作爲您後續大衛的意見,並使用TActionList做的一切。

或者,如果taction.enabled不適合您,您可以隨時測試以確定設置actionxxxx.shortcut := '';是否有效。
如果沒有,那麼其他一些快捷方式是攔截擊鍵。

參見:
http://docwiki.embarcadero.com/VCL/XE/en/ActnList.TAction
http://docwiki.embarcadero.com/VCL/en/ActnList.TActionList

+2

爲什麼啓用不起作用? –

+0

@David它會,但其他一些快捷方式可能是^ H^H^H可能攔截按鍵。因此,我正在設法使OP能夠理解行爲來自哪裏(即不是來自行動列表)。 – Johan