AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
Delphi2010 アクションマネージャー(ActionManager) 2010/09/27
 
前回は[Additional]内の「CategoryPanelGroup」(分類パネルグループ)について見ましたので、今回は同じく[Additional]内の「ActionManager」(アクションマネージャー)について見てみます。アクションマネージャーは Delphi6 にもあります。私自身、このコンポーネントを使用した事がありませんので詳細は分かりませんから軽く書いていますので御了承の程を(ちょっとややこしいので…)。

 
まず最初に、テスト11として新規作成しておきます(フォルダ011)。そしてエディットを配置して Alignプロパティを「alTop」にし、メモを配置して Alignプロパティを「alClient」にしておきます。ScrollBarsプロパティを「ssBoth」にしてスクロールバーを表示するようにして、WordWrapプロパティを「False」にして自動改行しないようにして、WantTabsプロパティを「True」にしてメモ内でタブ([Tab]キー)を使えるようにしておきます。

エディット Edit1 の OnKeyPressイベントハンドラを下記のようにして、エディットで文字入力をして[Enter]キーを押したらメモにそれを追加出来るようにします。
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if (Key = #13) then begin
  Memo1.Lines.Add(Edit1.Text);
  Edit1.Text := '' ;
  Key := #0 ;
 end;
end;
 
準備はこれくらいにして、それではアクションマネージャーのコンポーネントを配置してみます。1つ目ですので Nameプロパティは「ActionManager1」となります。

 
アクションマネージャーは、アクションリスト(ActionList)、アクションメインメニューバー(ActionMainMenuBar)、アクションツールバー(ActionToolBar)、を利用してメニューバーやツールバーを利用する事が出来るのですが、通常のメインメニューやツールバーとの違いは、利用者でカスタマイズできるバーを作ることが出来て、それを保存する事が出来る、との事です。
 
[Standard]内の「ActionList」(アクションリスト)を配置します。

また、[Additional]内の「ActionMainMenuBar」(アクションメインメニューバー)を配置します。

画面は下記のようになります。

アクションメインメニューバーがEdit1よりも下になっていますので、マウスでドラッグして上に移動します。

 
アクションリストについては以前の「アクションリスト(ActionList)」で既に記述していますのでここでは詳しくは書きません。右クリックメニュー「アクションリストの設定」或いはダブルクリックを行い、「ActionList1の編集」画面にて、右クリックメニュー「標準アクションの新規追加」を行います。

「標準アクションクラス」画面の中の「編集」のものを選択して[OK]します。



 
使用するアクションをアクションリストに登録したら、「ActionList1の編集」画面を閉じて、次に、アクションマネージャーとアクションリストを関連付けます。<オブジェクトインスペクタ>にて、アクションマネージャー ActionManager1の LinkedActionListsプロパティの欄を選択し、右端に表示される[…]をクリックします。

[LinkedActionListsの編集]画面が表示されますので、新規追加を行います。

<オブジェクトインスペクタ>にて、LinkedActionLists[0]の ActionListプロパティを「ActionList1」にします。

 
次に、アクションマネージャーとアクションメインメニューバーを関連付けます。。<オブジェクトインスペクタ>にて、アクションマネージャー ActionManager1の ActionBarsプロパティの欄を選択し、右端に表示される[…]をクリックします。

[ActionBarsの編集]画面が表示されますので、新規追加を行います。

<オブジェクトインスペクタ>にて、ActionBars[0]の ActionBarプロパティを「ActionMainMenuBar1」にします。

 
 
関連付けは出来ましたので、次に、メニュー作成をしてみます。
 
アクションマネージャー ActionManager1 をダブルクリックして下さい。編集画面が表示されます。[アクション]頁のカテゴリを「編集」にすると、上記のアクションリストで登録したアクションが表示されているのが分かります。

アクションの項目を、<フォームデザイナ>の アクションメインメニューバー ActionMainMenuBar1 の上へマウスでドラッグ&ドロップします。

すると、アクションメインメニューバー ActionMainMenuBar1 にメニュー項目が追加されます。

同様にして他のアクションの項目もドラッグ&ドロップしてメニュー追加します。

 
これでメニュー作成完了です。
保存・コンパイル(再構築)・実行をしてみます。正常動作が確認できます。

 
 
メニューらしく、プルダウンでメニューを表示したい場合には、以下のようにすれば出来るようです。
 
まずは、<構造>にて
ActionManager1
 〜ActionBars
  〜0 - ActionBar ->〜
   〜Items
の箇所で右クリックメニュー「項目の追加」を行います。

Itemsに「3 - ActionClientItem3」が追加されます(上記で既に0,1,2は使用済みのため 3となります)。<オブジェクトインスペクタ>にて、TActionClients[3]の Captionプロパティを「編集(&E」と入力します。

同様に、<構造>にて
ActionManager1
 〜ActionBars
  〜0 - ActionBar ->〜
   〜Items
    〜3 - 編集(&E
     〜Items
の箇所で右クリックメニュー「項目の追加」を行います。

すると同様に「0 - ActionClientItem0」が作成されます。これはダミーとして一時的に作成したのですが後で不要になった時に消します。

 
アクションマネージャー ActionManager1 をダブルクリックして下さい。編集画面が表示されます。[アクション]頁のカテゴリを「編集」にすると、上記のアクションリストで登録したアクションが表示されます。そしてメニューバーの上へドラッグ&ドロップするのですが、「編集(E」にマウスを合わせると、プルダウンのメニュー項目が現れますので、その上に挿入するようにしてマウスボタンを離します。



同様にして他のアクションの項目を追加します。追加し終わったらアクションマネージャーの編集画面を閉じて下さい。そして、「編集(E」の中の「ActionClientItem3」と表示されるメニュー項目をクリックして [Delete]キーを押します。



これでダミーで一時的に作成したメニュー項目は消えました。それでは、保存・コンパイル(再構築)・実行をして確認します。
 
 
これでアクションマネージャーによるメニュー作成は出来ましたが、ソフトウェアの利用者はカスタマイズできません。出来るようにするため、[Additional]内の「CustomizeDlg」(カスタマイズダイアログ)を配置します。



<オブジェクトインスペクタ>にて、CustomizeDlg1の ActionManagerプロパティを「ActionManager1」にします。

 
アクションリスト ActionList1 をダブルクリックして、「標準アクションの新規追加」を行います。

「ツール」内の「TCustomizeActionBars」を選択して[OK]します。

追加されるのを確認して閉じます。

 
メニュー上の「切り取り」「コピー」「貼り付け」は「編集」の中にありますので不要ですから削除します。メニューの項目を選択して [Delete]キーで消せます。

 
アクションマネージャー ActionManager1 をダブルクリックして、カテゴリ内に「ツール」が追加され、その中に、アクション「カスタマイズ」が追加されているのが確認できます。その「カスタマイズ」をクリックして選択します。

<オブジェクトインスペクタ>にて、CustomizeActionBars1 の ActionManagerプロパティを「ActionManager1」にします。

「ActionManager1 の編集」画面から、アクション「カスタマイズ」を<フォームデザイナ>の アクションメインメニューバー ActionMainMenuBar1 の上へマウスでドラッグ&ドロップします。メニュー「カスタマイズ」が追加されます。

 
それでは、保存・コンパイル(再構築)・実行を行います。
 
カスタマイズを選択すると、これまで開発環境で使ってきた編集画面、のような、[Customize]画面が表示され、同じように、マウスでのドラッグ&ドロップで、ソフトウェア実行中、ソフトウェア利用者によってメニューがカスタマイズできるのが確認できると思います。

 
 
それでは、カスタマイズした内容を反映させるため、プログラムを終了させたとき=フォーム Form1 を閉じた時に、状況を保存するようにします。プログラムのあるフォルダ内に、プログラム名と同じ名前で拡張子を「.dat」としたファイルを作成します。
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
 fn : string ;
begin
 fn := ChangeFileExt(Application.ExeName,'.dat');
 try
  ActionManager1.SaveToFile(fn);
 finally
  ;
 end;
end;
そして、プログラム起動時=フォーム Form1 を開いた時に、状況を読み出すようにします。
procedure TForm1.FormShow(Sender: TObject);
var
 fn : string ;
begin
 fn := ChangeFileExt(Application.ExeName,'.dat');
 if (FileExists(fn)) then begin
  try
   ActionManager1.LoadFromFile(fn);
  finally
   ;
  end;
 end;
end;
保存・コンパイル(再構築)・実行をして、実際にやってみると、メニューをカスタマイズして保存・呼び出しすることが出来るようになるのが分かります。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/09/26
 2010/09/27
▼2010/09/28
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.