« FireMonkey/OSX メニューアイテムのショートカット | トップページ | FireMonkey小ネタ5つ(未解決ネタも含む) »

2011年10月11日 (火)

FireMonkey TPopupを使いやすくする

Delphiの補完ウインドウのようなもの(親ウインドウの外観はアクティブのまま子ウインドウをポップアップする)を作りたくなりました。

VCLだとこの手のウインドウに非常に苦労したのでFireMonkeyでも苦労するかと思いきや、TPopupを使うと簡単に実現できました。(キー操作等に難があるので、要改良ですが、ちゃんとリージョン切り抜きもできるし便利です)

2011_1011_popuppanel

ただし、現状のFireMonkeyだとTPopup周りのコードはすべて手書きで書く必要があるようなので簡単にコンポーネント化してみました:(コンポーネントとして登録するだけで、ほとんど何もしてないですが)
unit FMX.ESXPopupPanel;

interface
uses
  System.Classes, System.Types, FMX.Types;

type
  TESXPopupPanel = class(TPopup)
  private
  protected
  public
    procedure Popup; override;
  end;

{$ifdef WIN32}
procedure Register;
{$endif}

implementation

{$ifdef WIN32}
procedure Register;
begin
  RegisterComponents('ESX', [TESXPopupPanel]);
end;
{$endif}


{ TESXPopupPanel }

procedure TESXPopupPanel.Popup;
begin
  Position.X := 0;
  Position.Y := 0;
  inherited;
end;

end.
上記ソースを保存し、適当なパッケージに含めてインストールしてください。
(ユニット名やクラス名はお好きにどうぞ)

インストールしたら、適当なプロジェクトを作成して、
1.フォームにTESXPopupPanelを配置
2.ボタンも配置
3.Visible=false、PlacementTarget=ボタン、Placement=plBottomCenterにする
4.PopupPanelの上に適当な部品を配置(ここではCalloutPanel&Calemdar)
5.ボタンのOnClickイベントに ESXPopupPanel1.Popup() を記述
6.実行してボタンを押すとPopupPanelが表示されます

|

« FireMonkey/OSX メニューアイテムのショートカット | トップページ | FireMonkey小ネタ5つ(未解決ネタも含む) »

プログラミング」カテゴリの記事

Delphi」カテゴリの記事

FireMonkey/Delphi XE2」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: FireMonkey TPopupを使いやすくする:

« FireMonkey/OSX メニューアイテムのショートカット | トップページ | FireMonkey小ネタ5つ(未解決ネタも含む) »