フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: ActionBand FAQ (Delphi6-7) [DelWiki]
RAN
メンバー
投稿数: 34
ActionBand FAQ (Delphi6-7) [DelWiki]
on: 2013/04/17 23:28 Wed

原文 http://homepages.borland.com/strefethen/index.php?pagename=Main.ActionBandFAQ
現在 http://www.stevetrefethen.com/wiki/Delphi%20ActionBand%20FAQ.ashx
ライセンスはCreative Commons Attribution-Noncommercial-Share Alike 3.0 United States License だそうです。リンク先で確認してください。

セパレーターをActionBandへ追加するには、どうすれば良いですか?
ActionBandsの最新アップデートでは、セパレーターをActionBandsへ追加する、新しい仕組みが追加されました。Customizeダイアログの下部にボタンがあります。ドラッグ&ドロップするだけで、ActionBandにセパレーターを追加出来ます。手動でTActionToolBarへセパレーターを追加するには、以下のようにします。

既に項目のあるActionToolBarの場合

  • ActionToolBar上の項目のひとつをクリックしましょう。矢印キーを使用して、セパレータを追加したい場所を選びましょう
  • Insertキーを押しましょう。Barに新しい項目を追加します
  • Captionに、"-" を設定しましょう

TActionMainMenuBarへセパレーターを挿入するためには、以下のようにします。

  • トップレベルのメニューの1つをクリックしましょう
  • キーボードやマウスを使用して、セパレーターを追加したい場所を選びましょう
  • "-" キーを押して、セパレーターを追加しましょう

オブジェクト・ツリービューを使用する方法もあります。TActionManager.ActionBandsノードに移動し、セパレータを追加する場所を選びましょう。新しい項目を追加し、Captionを"-" にしましょう。

追加情報:設計時にActionBand上の項目を選択し、Ctrlキーを押せば、矢印キーで項目の場所を移動できます。

Outlook風のActionToolBarを作るには、どうすれば良いですか?
http://www.geocities.com/delphihelp/info/ABExpressTutorial.htm を参照しましょう。
(アーカイブは http://web.archive.org/web/20021106111358/http://www.geocities.com/delphihelp/info/ABExpressTutorial.htm

(追記)http://www.google.com でactionband outlook style を検索すると良いです。

TActionMainMenuBarにサブメニューを作成するには、どうすれば良いですか?
これは、TActionMainMenuBarにサブメニューを作成する例です。

  • ファイル|新規作成|アプリケーションを選択しましょう
  • 以下のコンポーネントを置きましょう:TActionManager、TActionMainMenuBar
  • ActionManagerコンポーネントをダブルクリックして、Customizeダイアログを開きましょう。
  • CtrlキーとInsertキーを押して、標準アクション・ダイアログを表示しましょう(または新規アクション・ボタンのドロップダウン・ボタンをクリックして、標準アクションの新規追加を選択しましょう)
  • ファイルと編集カテゴリのアクションを全て選択し、OKをクリックしましょう
  • ファイル・カテゴリをクリックし、TActionMainMenuBar上へドラッグしましょう

サブメニューを作成する方法は以下の通りです。

  • 編集カテゴリをクリックし、ActionMainMenuBarのファイル項目へドラッグしましょう。ファイル・メニューが開きますので、編集カテゴリをドロップし、編集サブメニューを作成しましょう。
  • ファイル項目をクリックし、キーボードを使用して、サブメニューを作成したい位置へスクロールしましょう。Insertキーを押して、新規項目を追加し、Ctrlキーと右矢印キーを押して、サブメニューを作成しましょう。

(追記)http://groups.google.com で actionband create tactionmainmenubar submenu を検索すると良いです。

IDEでActionBandメニューを編集する場合、使用できるキーは何ですか?
設計時にTActionMainMenuBar上で、使用できるキー(Delphi/BCB IDE)は以下の通りです

キーと機能
Insert・・・新規項目を追加
Ctrl+Right・・・新規項目で、サブメニューを作成
Ctrl+Up/Ctrl+Down・・・項目を上下移動
Home・・・メニューの最初の項目を選択
End・・・最後の項目を選択

(追記)http://groups.google.com で %green%key IDE actionband を検索すると良いです。

最近使用したファイルを表示するメニューを作成するには、どうすれば良いですか?
デモがあります。ActionBandsを使用して、最近使用したファイルを表示するメニューを作成する方法を示します。ここからダウンロード出来ます(ミラー)。このデモはコード例も示しています。ツールバー上に、開くボタン(最近使用したファイルのリストを表示するドロップ・ダウン付き)を作成します。

TActionToolBar上にドロップダウン・ボタンを作成するには、どうすれば良いですか?
ドロップダウン・メニュー付きのActionToolBarボタンを作成するには、以下のようにしましょう。

  • フォーム上にTActionManagerとTActionToolBarを置きましょう(設計時IDE)
  • ActionManagerをダブル・クリックして、Customizeダイアログを表示しましょう
  • 新規Actionを、ActionManagerへ追加しましょう
  • 新規Actionを、TActionToolBarへドラッグしましょう
  • 表示|オブジェクト・ツリーを選択しましょう
  • ノードを開きましょう。Form1\ActionManager1\ActionBars\0 – ActionBar -> ToolActionBar1\Items\0 – ActionClient1\Items
  • 右クリックして、新規項目をこのノードに追加しましょう。

以上でドロップダウン・ボタンが作成されます。これは、今は何もしない項目です。ActionManagerに新しいActionを追加し、新しいノードのActionプロパティと関連付け、ドロップダウン・メニューを作りましょう。

ActionBandsは、MDIアプリケーションをサポートしていますか?
Yesでもあり、Noでもあります。ActionToolBarsは、MDIアプリケーションに対応していますが、ActionBandメニューは対応していません。ActionBandメニューは、MDIアプリケーションでも動きますが、自動的なMDIメニューのマージを現在はサポートしていません。また子ウィンドウの復元/最小化/閉じるアイコンを表示しません。この機能は将来のリリースで、追加する予定です。はい。TActionMainMenuBar のWindow プロパティを見ましょう。

自分のカスタムActionBandコンポーネントを作れますか?
もちろんです。ActionBandsコンポーネントは非常に拡張性が高く、ユーザーがカスタムActionBandコンポーネントを作れるようになっています。

  • Actionへ接続可能なコンポーネントを作成(または既存のコンポーネントを継承)しましょう。例えばコンポーネントの状態が変化した時、Actionが「何か」(発生させたい事をなんでも)を起こすようなコンポーネントです。
  • TCustomActionControlを作成し、ActionBand上で使用するコンポーネントを包みましょう。
  • 特定のコンポーネントとリンクするActionを作成しましょう。例えばListAction(TStaticListActionとTVirtualListAction)は、共にコンボ・ボックスで動作します。
  • TCustomActionToolbarを継承したコンポーネントを作成し、GetControlClassをオーバーライドしましょう。作成したActionクラスを探して、コンポーネント・クラスを返し、適切なコンポーネントが作成されるようにしましょう

(追記)http://groups.google.com で create actionband control を検索すると良いです。

ActionBandsを実行時に動的に修正できますか?(Delphi6)
もちろんです。TActionManagerHelperというコンポーネントも用意されています。これはActionBandsの動的修正を容易にします。デモの通りです。このデモは(TActionManagerHelperを使用した)、ActionBandsの動的修正の方法を示しており、最近使用したファイル・メニュー http://homepages.borland.com/strefethen/Demos/AMHelper.htm を実装します。
(AMHelperは http://cc.embarcadero.com/Item/17128 か?)

既存のスタイルに代わるActionBandsは用意されていますか?(Delphi6)
Delphi7.0には既に付属しています。Delphi 6.0用にも、2つの追加メニュー・スタイルを用意しました。1つはMicrosoft Office XP風のメニューとツールバーです。もう1つは、Microsoft Encartaの真似です。両スタイルのコードは、http://homepages.borland.com/strefethen/info/ から入手できます。XPとEncartaスタイルのActionBandメニューとツールバーを探しましょう。ここをクリックして、D7スタイルのActionBandsのサンプルを入手しましょう。
(アーカイブは http://web.archive.org/web/20040712224142/http://homepages.borland.com/strefethen/info/

Disabledの外見を指定する方法はありますか?
現在(D6では)、Disabledの外見を直接変更する方法はありませんが、開発者が自分で表示する事は簡単に出来ます。例えば、ツールバーのボタンの表示方法を変更したい場合は、以下のようにします。

  • 変更したいコンポーネントを継承した、コンポーネントを作成しましょう(例:TCustomButtonControl)
  • DrawGlyphメソッドをオーバーライドし、希望するグリプタル(浮き彫り)を表示しましょう
  • ActionBandで、OnGetControlClassイベントをフックし、新しいコンポーネント・クラスを返しましょう

これでActionBandがコンポーネントを生成する場合、デフォルトのコンポーネントではなく、先ほど作成した新しいコンポーネントが作成されます。

更にTCustomActionManagerを拡張し、DisabledImageIndexプロパティを持つ、TActionClientItemsを作り、先ほど作成したコンポーネントを使用することも可能です。これを行うには、以下のようにします。

  • TActionClientItemを継承したコンポーネントを作成しましょう。DisabledImageIndexプロパティを追加しましょう。
  • TCustomActionManager(またはTActionManager。お好きな方で)を継承したコンポーネントを作成しましょう。GetActionClientItemClassメソッドをオーバーライドし、1.で作成したクラスを返しましょう。

以上で、設計時に追加したプロパティが現れます。先ほど作成したカスタム・コンポーネントは、実行するまでは使用できませんが、これで良いのです。その理由は、設計時はどのコンポーネントも、Enabledな物として表示されるからです。

IDEで設計時に行ったActionBandへの変更が、実行時に現れません。
IDEで行ったActionBandへの変更が、実行時に現れないのは、ActionManagerのFileNameプロパティが設定されているからです。

使用情報とメニューのレイアウト情報を保存するためには、ActionManagerをファイルに保存する必要があります。アプリケーションを再スタートした時、ActionManagerはこのファイルをリロードし、ActionBandsを以前の状態に復元します。IDEで行った表示上の変更が、実行時に反映されない原因は、これです。

この状況を回避するためには、IDEでアプリケーションを実行する前に、設定ファイルを削除し、アプリケーションの配布準備が出来るまで、ActionManagerのFileNameプロパティの設定を無効にする必要があります。

ActionManagerのFileNameプロパティが設定されていない場合は、IDEの表示と実行時の表示が一致します。

TActionToolBarで、項目のCaptionを消すには、どうすれば良いですか?

  • ファイル|新規作成|アプリケーションを選択しましょう
  • TActionManager、TActionToolBar、TImageListコンポーネントを置きましょう
  • TActionManager.ImageList = ImageList1;
  • ActionManagerのCustomizeダイアログを開き、編集カテゴリの全Actionを追加しましょう
  • 編集カテゴリのActionを、TActionToolBarへドラッグ&ドロップしましょう
  • 表示|オブジェクトツリーを選択し、ActionManagerのノードを開きましょう
  • ActionBars->"0 – ActionBar->ActionToolBar1"->Itemsを開きましょう
  • ActionToolBar上にある、編集カテゴリの項目を開き、全て選択しましょう(最初の項目をクリックし、Shiftキーを押して、下矢印キーを押しましょう)
  • オブジェクト・インスペクタで、ShowCaption = Falseを設定しましょう
  • アプリケーションを実行しましょう。注目:「全てを選択」ActionのCaptionだけが表示されます。グリプタル(浮き彫り)を設定していないからです。

以上で、Captionを選択的にON/OFFできました。ポイントは、各項目のShowCaptionプロパティを使用するという事です。

(追記)http://groups.google.com で %green% caption items tactiontoolbar を検索すると良いです。D6 TActionManagerやTActionMainMenuBarやTActionToolBarのスレッドを参照しましょう。

注意:ShowCapitonプロパティをFalseにする為には、項目に関連付けられたImageが必要です。もしくはVisibleプロパティを使用し、ActionBand上の項目の表示/非表示をコントロールしましょう。

トップレベルのメニュー項目をDisableにするには、どうすれば良いですか?(Delphi6)
コンポーネントはユーザーにより、実行時に削除できますので、
以前は、コンポーネントには直接アクセスできませんでした。D7で、TActionManagerに、ActionBandsの項目を操作するメソッドが出来ました。

そこでD6用にも、TActionManagerHelperコンポーネントを用意しました。これは実行時に動的に、項目を見つけ、操作する事を容易にします。このコンポーネントは著者のウェッブ・サイトからダウンロードできます。

このコンポーネントを取得すれば、以下のコードを使用し、トップレベルのメニュー項目(ついでにActionBand上のコンポーネントも、関連するActionがオーバーライドしない場合は)のEnabledプロパティを操作できます。

 var
I: TActionClientItem;
begin
// In this case the Item's Caption is '&test'
I := ActionManagerHelper1.FindItemByCaption('&test');
if Assigned(I) then
I.Control.Enabled := not I.Control.Enabled;
end;

(追記)groups.google.com で disable top level menu TActionMainMenuBar を検索すると良いです。

ActionManagerのCustomizeダイアログで表示されるActionを隠すには、どうすれば良いですか?
TCustomizeDlgコンポーネントを使用し、CustomizeDlg.Showを呼び出す新規Actionを追加しましょう。TCustomizeDlgのOnShow/OnCloseイベントを使用し、ダイアログに表示したくないActionを、削除・復元しましょう。

ActionをActionListから削除する場合は、ActionListプロパティをnil にしましょう。Action Listへ復元する場合は、ActionListプロパティに再割り当てしましょう。

(追記)http://groups.google.com で customize actionmanager hide を検索すると良いです。

Actionbandの項目をコードで作成するにはどうすれば良いですか?
ActionBandsを全体的にコードで作成するには、TCollectionで気持ちよく一仕事をする必要があります。TActionManagerはコレクションに依存しているからです。

これはTActionManagerの新しいActionBarに、項目を1つ追加する方法の例です。


procedure TForm1.FormCreate(Sender: TObject);
var AnAction: TAction;
begin
// Setup the new action AnAction := TAction.Create(Self);
AnAction.Caption := 'Test';
AnAction.Category := 'New Category';
// Should assign some event handler if it's just a TAction
// AnAction.OnExecute := AnActionExecute;
// "Add" the action to the action manager AnAction.ActionList := ActionManager1;
// Add a new TActionBarItem, you could use an existing one ActionManager1.ActionBars.Add;
// Manually a new TActionClientItem and assign the new action to it with ActionManager1.ActionBars0.Items.Add do Action := AnAction;
end;
ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.04 sec.