ステップ 3 - スタイルリソースを RCDATA として追加する(Object Pascal)

提供: Appmethod Topics
移動先: 案内検索

FireMonkey コンポーネントの作成(Object Pascal) への移動


.style ファイルには、対応するプラットフォーム固有の(1 行の).rc ファイルが必要です。このファイルのルート名はコンポーネント ユニットに一致します。

たとえば、Windows、Mac、iOS、Android の各 .rc ファイルは以下のようになります。

  • DialogButtons.win.rc
DialogButtonPanelStyle RCDATA "DialogButtonPanel_win.style"
  • DialogButtons.mac.rc
DialogButtonPanelStyle RCDATA "DialogButtonPanel_mac.style"
  • DialogButtons.ios.rc
DialogButtonPanelStyle RCDATA "DialogButtonPanel_ios.style"
  • DialogButtons.android.rc
DialogButtonPanelStyle RCDATA "DialogButtonPanel_android.style"

スタイルリソースを RCDATA として追加する

  1. プロジェクト マネージャDialogButtonsPackage.bpl プロジェクトをダブルクリックしてアクティブにします。
  2. 作成しなければならない .rc ファイルごとに以下の作業を行います。
    • [ファイル|新規作成|その他...|その他のファイル|テキスト ファイル]を選択し、[新規ファイル]ダイアログで[.rc リソース ファイル]を選択します。
    • 上に示した 1 行を追加し、正しいファイル名で保存します。
    .rc ファイルがプロジェクト ツリーの[Contains]ノードに表示されます (編集しやすいよう .style ファイルをプロジェクトに追加することもできますが、追加しなくてもコンパイルには問題ありません。.style ファイルは .rc ファイルと同じディレクトリにあるので、自動的に見つかります)。
  3. これらのスタイルを読み込むために、DialogButtons.pasTStyledControl.GetStyleObject のオーバーライドを宣言し実装します。
protected
    function GetStyleObject: TControl; override;

implementation

uses
  System.Types, FMX.Controls, FMX.Styles;

{$IFDEF MACOS}
{$R *.mac.res}
{$ENDIF}
{$IFDEF MSWINDOWS}
{$R *.win.res}
{$ENDIF}

function TDialogButtonPanel.GetStyleObject: TControl;
const
  Style = 'MyPanelButtonsStyle';
begin
  if (FStyleLookup = '') then
  begin
    Result := TControl(TStyleManager.LoadFromResource(HInstance, Style,
      RT_RCDATA));
    Exit;
  end;
  Result := inherited GetStyleObject;
end;
プラットフォームごとの条件指令によって、.rc ファイルからコンパイルされた適切な .res が含められます。RCDATA 項目の名前(両方のファイルで同一)は関数内の定数になっています。

メモ: .style ファイルにあるルート(TRectangle)コンポーネントの StyleName は、RCDATA 名とたまたま同じになっています。StyleName が必要なのはスタイルがスタイル ブックに組み込まれている場合で、StyleName はスタイルの内容を表す名前になっています。そのため、含めておくことを推奨します。ただし、直接読み込まれたときは、ルートの StyleName は使用されず、不必要なものとして扱われます。

この関数がスタイルを読み込むのは、StyleLookup が空の場合のみです。TStyleManager を使用して、現在のモジュールのハンドル(設計時には、パッケージ .bpl、実行時にはプログラムの .exe または .dll)でスタイルを読み込みます。これは、存在しない RCDATA にアクセスしようとすると例外が発生するからです。空白でない場合は、継承した動作により、名前の指定されたスタイルを見つけるか、クラス名からデフォルト スタイルを見つけます。

  1. コードが準備できたら、[プロジェクト マネージャ]でパッケージ プロジェクトを右クリックして、[インストール]を選択します。これによりパッケージ プロジェクトがコンパイルされ、コンポーネントが[ツール パレット]に追加されます。

前のステップ

次のステップ

関連項目