2011-07-19 19 views
4

これは面白いです:)しかし、ActionList1.MyAction.Enable:=falseのような何かを行うには?Delphi:disableアクションリストからのアクション

アクションリストにはボタンのアクションがあります。ボタンが見えない場合は、アクションを無効にする必要があります(そうしないと、ショートカットを実行してからプロシージャが実行されます)。

私は何か間違っているかもしれませんが、私はボタンにアクションを割り当てませんでした。私はアクションを持つアクションリストしか持っていません。各アクションにはショートカットがあります。このショートカットを押すと、アクションが実行され、プロシージャが実行されます。ボタンをクリックすると、同じ手順が実行されます。

State:=asSuspendedはアクションリスト全体です。

ありがとうございました!

+1

あなたはmyAction' 'に設定された' Action'プロパティを持つボタン、 'button1'を、持っていると仮定します。ボタンを見えないようにするには、 'myAction.Visible:= False'を設定するだけです。この結果、アクションは呼び出せません。さて、あなたの質問は、現在の状態ではほとんど意味がなく、私はこのコメントがあなたが探しているものではないと思います。あなたの問題をより明確に説明しようとすることをお勧めします。 –

+2

'MyAction.Enabled:= False'? –

+1

@David - 簡単なテストでは、アクションの可視性をfalseに設定しても、ショートカットで実行されるアクションは妨げられないようです。 –

答えて

5

ボタンのActionプロパティを割り当て、アクションを介してすべてを制御する必要があります。無効にする、不可視にするなどのアクションを設定し、ボタンはスーツに従います。

ボタンのOnClickイベントハンドラを設定しないでください。代わりに、アクションの対応するイベントを使用してください。アクションのOnUpdateイベントを使用して、Visible、Enabledなどのプロパティを設定します。基本的には実行時に変更されます。

1

TActionListは、1つまたは複数の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

関連する問題