2009-05-05 14 views
2

私は、それぞれに一意のショートカットを持つ場所のサブメニューを持つアプリケーションを持っています。これまではこのサブメニューは静的ですが、しばしばメニューに新しい場所を追加して新しいショートカットを割り当てる必要があります。アプリケーションには、ボタン、メニュー、および私が言及したサブメニューに必要なアクションを保持するTActionManagerを含むユニットClientdataがあります。Delphiの動的なメニュー/アクション

このサブメニューを実行時に変更可能にします。すべての場所がデータベースに保持されます。サブメニューにはまだアクションマネージャーでアクションがあるはずです。

さらに、すべての操作のショートカットエディタがあるため、各ユーザーには独自の個人用ショートカットを割り当てることができます。これらのショートカットは、個人ファイルディレクトリのテキストファイルに保存されます。

変更する必要のある場所が3つあります。

  • システムモジュール。ここでは、サブメニューに表示されるデータベース内の場所を追加、編集、削除することができます。
  • Actionmanager。サブメニューのすべてのアクションを保持します。また、ショートカットを保持し、テキストファイルからショートカットをロード/保存することもできます。
  • 計画モジュール。場所のサブメニューを使用します。データベース内の場所からサブメニューを作成し、右ショートカットを割り当てる必要があります。

私は実装を開始しましたが、正しいトラックにいるかどうかはわかりません。場所のリストがデータモジュールで編集されているとき、ActionManagerのデータが同期していることが重要です。実行時にActionManagerで削除アクションを追加、編集する方法がわかりません。私はデザイン時のみこれを行った。

その他のコメントや改善点は歓迎します。

よろしくお願いします。

答えて

3

実行時にアクションを追加または削除するのは少し後ろです。新しいTContainedActionを作成し、ActionListプロパティをリストに設定します。リストから削除するには、ActionList:= nilのいずれかを設定するか、アクションをフリーにします。

すべてがアクションではなく、リストから行われます。リストのActionsプロパティを使用してアクションを取得したり、for..inループをサポートするDelphiバージョンを使用している場合はリストを列挙できます。

actnlist.pasのソースを調べると、より詳しい情報が得られます。それはそれほど大きくなくてはならない。 D2009バージョンでは1162本しかありません。

関連する問題