Tips - Delphi メニューバーとツールバーで共通の処理をしたい

 「ファイル(F) …… ヘルプ(H)」などと設定したメニューバーと、アイコンボタンを用意したツールバー。同じ処理をさせたいけど、どうすれば?  そんなときには、Standardタブ(Delphi 6)の ActionList コンポーネントを使います。


ActionList
共通で使いたい処理を管理するコンポーネントです。ここに登録した処理をメニューバーやツールバーで呼び出す、と言う形で使います。ここに登録した処理を変更すれば、メニューバーやツールバーの処理も自動変更されます。

ImageList
複数の画像を管理するコンポーネントです。メニューやツールバーに表示されるアイコン画像を管理するために使います。

基本的な使い方

  1. Formに配置したImageListに、アイコン画像を読み込みます。
    アイコン画像を表示させない場合は不要。
  2. Formに配置したActionListに、共通で使う処理(アクション)を登録。
    アイコンをダブルクリックすると編集ウィンドウが出現しますので、そこからアクションを登録してください。
    ファイルの読み書きやクリップボードを使った編集などが標準アクションとして用意されていますが、アクションの自作もできます。
    アイコン画像を使う場合は、ActionListのImagesプロパティにアイコン画像を読み込んだImageListを指定してください。
  3. メニューバーやツールバーなどのActionプロパティに、ActionListで登録したアクションを指定します。
    • アイコン画像を表示する場合は、メニューバーやツールバーのImagesプロパティにも、ActionListと同じImageListを指定してください。
  4. 処理動作を変更したい場合は、ActionListに登録した処理を変更してください。

使用例

  • メニューバーの「ファイル→ファイルを開く」と、ツールバーの「ファイルを開く」ボタンを同じ処理にしたい場合
  1. Formに、StandardタブからMainMenuコンポーネントとActionListコンポーネント、Win32タブからImageListコンポーネントとToolBarコンポーネントを配置する。
  2. ImageListをダブルクリックし、アイコン画像を読み込む。
  3. ActionListを編集する。
    1. ActionListのImagesプロパティに、アイコン画像を読み込んだImageList名を指定する。
    2. ActionListをダブルクリックして編集する。
      1. ツールバーの「新規アクション」ボタン右のプルダウンメニューから「標準アクションの新規追加 Ctrl+Ins」を選ぶ。
      2. ツリー型リストが表示されるので、「ファイル」ツリーの「TFileOpen」を選ぶ
      3. ImageIndexプロパティに、ImageListの何番目の画像を使うかを指定する。右のプルダウンメニューから選ぶと、番号と画像が同時に表示される。アイコン画像を使わない場合は-1。
      4. 一覧にない独自の処理をしたい場合は「アクションの新規追加 Ins」を選ぶか、ツリー型リストから「(カテゴリなし)」ツリーの「TAction」を選ぶ。その後、通常のコンポーネントと同様にイベントを記述すれば良い。
  4. MainMenuをダブルクリックして編集する。
    1. 「ファイル(&F)」を作る。
    2. 「ファイル(&F)」下のプルダウンメニューのActionプロパティに、ActionListのTFileOpenオブジェクト名を選ぶ。するとCaptionなどが自動で書き換わる。
    3. アイコンを表示させたいときは、MainMenuのImagesプロパティに、アイコン画像を読み込んだImageList名を指定する。
  5. ToolBarを編集する。
    1. ToolBarのImagesプロパティに、アイコン画像を読み込んだImageList名を指定する。
    2. ToolBarを右クリックして「ボタン新規作成」する。
    3. 作成したボタンのActionプロパティに、ActionListのTFileOpenオブジェクト名を選ぶ。するとCaptionなどが自動で書き換わる。
  6. アイコンやイベント内容の変更は、ActionListのTFileOpenオブジェクトを変更すればよい。
最終更新:2009年07月19日 21:37