Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
DelphiRAD Studio

カスタムスタイルを編集してFMXのTEditの背景色を変更するには?

rad studio 1042

この記事は、エンバカデロのシニアセールスコンサルタントであるAl Mannarinoのブログの抄訳です

以前、Delphiの開発者から「FMX(FireMonkey)のTEditの背景色を変更するにはどうしたらよいか?」という質問がありました。多くの方がご承知のように、VCLのTEditでは、以下のようにTEditのColorプロパティを設定するだけで変更できます。

tedit

例えば、アプリケーション実行時に、Edit1.Color := clYellowを呼び出した後、Edit1の表示は下図のようになります。

teditcolor

しかし、FMXのTEditにはColorプロパティがないので、FMX TEditで同じことをするにはどうすればいいのでしょうか?

FMXのTEditでは、この方法を実現するためには、以下のような3つのオプションがあります。

  1. FMXスタイルを使用して、StyledSettings、StyleLookup、StyleNameのプロパティを制御
  2. FireMonkeyスタイルデザイナを使用して、コンポーネントのコピーを使用して新しいFMXスタイルを作成し、実行時に切り替える
  3. FMXマルチデバイスフォームでEdit1を右クリックし、[カスタムスタイルの編集]を選択

ここでは、上記のオプションのうち3つ目の「カスタムスタイルの編集」を使った方法を見てみましょう。

FMXマルチデバイスフォームでTEditを選択し、右クリックして表示されるポップアップメニューの「カスタムスタイルの編集」を選択します。(下図を参照)

edit custom style to change the background color of a fmx tedit ja 1 6549312

[カスタムスタイルの編集]を選択すると、下図のようにTEditのスタイルデザイナが開きます。

edit custom style to change the background color of a fmx tedit ja 2 4127992

スタイルデザイナを開くと、下図のように構造ペイン内にFMXのEdit1に関する項目が表示されます。

edit custom style to change the background color of a fmx tedit ja 3 4719187

上図で示す構造ペインは、FireMonkey(FMX)のコントロールは、サブコントロールプリミティブシェイプブラシ装飾されたエフェクト等で構成しているツリー構造です。

これらの構成要素はスタイルとして定義され、スタイルブックに保存されます。スタイルの個々の要素は、内部的にリソースと呼ばれています。この用語にはいくつかの他の意味があるため、分かりやすくするために「スタイルリソース」という用語を使用しています。スタイルは、サブクラス化せずに多くのカスタマイズを提供します。

FMXのTEditのスタイルを好きなようにカスタマイズできます。

例えば、構造ペインで表示されるEdit1Style1のツリー内にbackground要素があります。TRectangleをTEditスタイル内に配置し、TRectangleのFill.Colorプロパティを使用して、FMXのTEditの背景色を変更できます。手順は、以下の通りです。

(1)構造ペインのEdit1Style1ツリー内のbackgroundを選択

(2)ツールパレットのカテゴリ[Shapes]内にあるTRectangleコンポーネントを選択し、スタイルデザイナのFMXフォームのEdit1の上にドラッグします。(下図を参照)

edit custom style to change the background color of a fmx tedit ja 4 7040290

FireMonkeyでは、VCLとは異なり、コントロールの親子関係を自由に変更することができます。上記の例では、Rectangleはbackgroudに従属します。

(3) TRectangleをTEditの同じサイズへ合わせるようにサイズを調整します。(下図を参照)

edit custom style to change the background color of a fmx tedit ja 5 8039715

(4) リソースオブジェクトとして検索できるようにTRectangleのStyleNameを変更する

構造ペインのRectangle1を選択し、オブジェクトインスペクタで、StyleNameプロパティを任意の名前に変更できます。

ここでは、例としてRectangle_backgroundという名前に変更します。(下図を参照)

edit custom style to change the background color of a fmx tedit ja 6 7603434

TRectangleのStyleNameを任意の名前(ここでは、 “Rectangle_background “)に設定すると、FindStyleResourceメソッドを使用して、以下のコード例のように “Rectangle_background “という名前で指定されたスタイルをリソースオブジェクトとして見つけることができます。

(5) スタイルファイルを保存する

RAD Studioで標準提供されているFireMonkeyのスタイルファイルは、以下のパス内にStyleという拡張子で保存されています。

C:¥Program Files(x86)¥Embarcadero¥Studio¥<バージョン番号>¥Redist¥styles¥Fmx またはC:¥Users¥Public¥Documents¥Embarcadero¥Studio¥<バージョン番号>¥Styles

(バージョン番号には、10.4の場合は21.0、10.3の場合は20.0、10.2の場合は19.0等、RAD Studioの各バージョンに対応した番号が入ります。)

それでは、カスタマイズしたスタイルファイルを保存しましょう。

スタイルファイルの保存は、スタイルデザイナの[保存]アイコンをクリックします。(下図を参照)

edit custom style to change the background color of a fmx tedit ja 7 3685347

保存するスタイルファイル名には任意の名前を指定できますが、ここではFMXEdit_Colorsという名前で以下のパスに保存します。(下図を参照)

C:¥Users¥Public¥Documents¥Embarcadero¥Studio¥21.0¥Styles (10.4の場合)

edit custom style to change the background color of a fmx tedit ja 8 1061895

これで準備は完了です。

それでは、実際にFMXフォームで、さきほど保存したスタイルを使用してみましょう。

(1) オブジェクトインスペクタでFMXフォーム(Form1)のStyleNameプロパティにFMXEdit_Colorのスタイルを設定します。(下図を参照)

edit custom style to change the background color of a fmx tedit ja 9 4627849

(2)フォーム上にTButtonを一つ配置します。(下図を参照)

edit custom style to change the background color of a fmx tedit ja 10 3186231

(3) Button1をダブルクリックして、OnClickイベントハンドラを作成し、以下のコードを追加します。

(4)プロジェクトをビルドして、アプリケーションを実行する

(5) Button1をクリックすると、FMXのTEditは、下図のように黄色の背景色になります。(ただし、この実行サンプル例では、エディットボックスでテキスト文字の入力はできません)

edit custom style to change the background color of a fmx tedit ja 11 7391475

ここでは、背景色を黄色、枠の色を赤色に設定しましたが、TRectangle.Fill.Colorプロパティ、TRectangle.Stroke.Colorプロパティを変更することで、それぞれ別の色に変更できます。詳しくはTRectangleのdocwikiを参照ください。

ご注意:FMXはマルチプラットフォームに対応していますが、プラットフォームごとにスタイルを作成する必要があります。 この例では、Windowsプラットフォーム向けのカスタマイズしたスタイルのみを作成しています。

他のプラットホームのスタイルをカスタマイズしたい場合は、下図のようにスタイルデザイナのプラットホームを追加するアイコンをクリックして新しいプラットホームを追加してください。

edit custom style to change the background color of a fmx tedit ja 12 6443573

このように、FireMonkey(FMX)のすべてのコントロールは、TStyleBookをフォームにアタッチすることで実現しており、スタイルが読み込まれてフォームに適用されます。このスタイリングシステムによって様々なスタイルにカスタマイズすることができます。

今回ご紹介した例は非常にシンプルですが、是非 FireMonkeyスタイルを自由にカスタマイズしてみてください。

FireMonkeyの関連情報

See What's Coming in 12.2 Athens Dev Days of Summer 2-24

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

IN THE ARTICLES