ステップ 3 - スタイルリソースを RCDATA として追加する(Delphi)
FireMonkey コンポーネントの作成(Delphi) への移動
各 .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 として追加する
- プロジェクト マネージャで DialogButtonsPackage.bpl プロジェクトをダブルクリックしてアクティブにします。
- 作成しなければならない
.rc
ファイルごとに以下の作業を行います。- [ファイル|新規作成|その他...|その他のファイル|テキスト ファイル]を選択し、[新規ファイル]ダイアログで[.rc リソース ファイル]を選択します。
- 上に示した 1 行を追加し、正しいファイル名で保存します。
.rc
ファイルがプロジェクト ツリーの[Contains]ノードに表示されます (編集しやすいよう.style
ファイルをプロジェクトに追加することもできますが、追加しなくてもコンパイルには問題ありません。.style
ファイルは .rc ファイルと同じディレクトリにあるので、自動的に見つかります)。
- これらのスタイルを読み込むために、DialogButtons.pas で TStyledControl.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: TFmxObject;
const
Style = 'MyPanelButtonsStyle';
begin
if (StyleLookup = '') then
begin
Result := TControl(TStyleStreaming.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 にアクセスしようとすると例外が発生するからです。空白でない場合は、継承した動作により、名前の指定されたスタイルを見つけるか、クラス名からデフォルト スタイルを見つけます。
- コードが準備できたら、[プロジェクト マネージャ]でパッケージ プロジェクトを右クリックして、[インストール]を選択します。これによりパッケージ プロジェクトがコンパイルされ、コンポーネントが[ツール パレット]に追加されます。