FindStyleResourceでリソースを取得してコンポーネントのスタイル変更(Delphi FMX)
Delphi(FMX)で、OnApplyStyleLookupイベント(スタイルが適用されたイベント)で、FindStyleResource メソッドを使用してスタイルを適用する方法を解説します。
Delphiを起動してプロジェクトを作成し、オブジェクトを配置し、プロパティを設定する
Delphiを起動し[ファイル]→[新規作成]→[マルチデバイス アプリケーション-Delphi]をクリックします。
[空のアプリケーション] を選択して [OK]ボタンを押します。
ツールパレットからTEditをフォームへドラッグ&ドロップします。
次に、Edit1を選択し、IDEの左下 [オブジェクトインスペクタ] の[プロパティ]タブの[TextPrompt]プロパティに、"入力してください" と入力します。
Edit1が入力されていない場合に「入力してください」と表示されるようになりました。
プログラミング
Edit1をマウスでクリックして選択し、IDEの左下 [オブジェクトインスペクタ] の[イベント]タブに切り替え、OnApplyStyleLookupの右側の何もないところをダブルクリックします。
以下ソースコードを入力します。
procedure TForm1.Edit1ApplyStyleLookup(Sender: TObject); var Obj: TFmxObject; begin PromptObj := Edit1.FindStyleResource('prompt'); if PromptObj is TLabel then begin TLabel(Obj).TextSettings.FontColor:=TAlphaColorRec.Red; TLabel(Obj).TextAlign := TTextAlign.Center; end; end;
実行ボタンを押す
実行ボタンを押すと、コンパイルして起動します。
Edit1の中央に赤字で「入力してください」と表示されるようになりました。
上記ソースコードは、スタイルデザイナでの「prompt(TLabel)」のプロパティを書き換えています。
Opacityを変更したり、入力した文字だけ回転させることも可能です。
uses FMX.Layouts;
procedure TForm1.Edit1ApplyStyleLookup(Sender: TObject);
var
Obj: TFmxObject;
begin
Obj := Edit1.FindStyleResource('prompt');
if Obj is TLabel then
begin
TLabel(Obj).TextSettings.FontColor:=TAlphaColorRec.Red;
TLabel(Obj).TextAlign := TTextAlign.Center;
TLabel(Obj).Opacity:=0.2;
end;
Obj:=Edit1.FindStyleResource('content');
if Obj is TLayout then
begin
TLayout(Obj).RotationAngle:=10;
end;
end;
