9

昔ながらの端末セッションのように見える必要があるメモ コンポーネントを作成しています。これは非常に単純なはずですが、FireMonkey スタイルが機能する方法は信じられないほど複雑に思えます。

モバイル以外の FireMonkey アプリでは、コントロールを右クリックして [カスタム スタイルの編集] を選択できます。このオプションは、モバイル アプリでは使用できません。FireMonkey 開発者の 1 人が挙げた理由は次のとおりです。

iOS と Android で異なるスタイルをサポートしています。Android でアプリケーションを iOS スタイルで実行することはできません。ただし、プラットフォーム スタイルを変更しようとすると、自動的に各ターゲット プラットフォームでそれが使用されます。fm コントロールのデフォルト スタイルを変更したい場合は、フォーム スタイル ブックを配置してスタイルを作成するか、スタイルブック プラットフォーム スタイルにロードして変更を加える必要があります。

また、非常に重要です。スタイル ブックにプラットフォーム スタイルをロードする場合、アプリケーション インスタンスにプラットフォーム スタイルの 2 つのコピー (1 つは fmx パッケージのシステム、もう 1 つはスタイル ブックのコピー) を持たないようにすることができます。そのためには、TStylebook.UseStyleManager でフラグを true に設定する必要があります。この場合、スタイル ブックのスタイルがプラットフォーム スタイルに置き換わります。

わかりましたので、カスタム スタイルを作成する必要があると思います。フォントと背景のプロパティのみをオーバーライドするカスタム スタイルを作成するにはどうすればよいですか?

このような ApplyStyle プロシージャをオーバーライドできると思います。

procedure TMyMemo.ApplyStyle;
var
  BackgroundObject: TFmxObject;
begin
  inherited;

  BackgroundObject := FindStyleResource('content');

  if Assigned(BackgroundObject) then
  begin
    // Change the background color of the background
  end;
end;

バックグラウンド オブジェクトのタイプと、変更する必要があるプロパティを確認するにはどうすればよいですか?

確かに、コントロールの背景色を変更することは、それほど難しいことではありません! FM スタイルの基本的なものが欠けていますか?

4

2 に答える 2