どなたかお助け頂けないでしょうか。
Delphi11.3のFMXで開発をしております。一覧画面を作成するにあたりTStringGridを採用しようと思っているのですが、タイトルのフォントサイズはどの様に変えるのでしょうか?
私が行った手順は、TStringGridを右クリック⇒カスタムスタイルの編集⇒スタイルデザイナで、ヘッダの中に含まれるTTextのTextSettingでフォントを変更して適用しました。
この方法では駄目なのでしょうか?
私がわかっていないだけかもですが、
スタイルデザイナでTHeader.StyledSettingsを変更できないため、
TText.Font.Sizeを変更しても、(Default)に戻ってしまうような気がします。
(間違っていたらすいません)
以下のように、
TStringGrid.OnApplyStyleLookupイベントに
ソースコードを記述すれば可能みたいです。
uses FMX.Header;
procedure TForm1.StringGrid1ApplyStyleLookup(Sender: TObject);
var Header: THeader;
i: Integer;
begin
Header:=THeader((Sender as TStringGrid).FindStyleResource('header'));
if Assigned(Header) then
begin
for i:=0 to Header.Count-1 do
begin
//フォントサイズと他(太字など)の設定を可能にする
Header.Items[i].StyledSettings:=
Header.Items[i].StyledSettings-[TStyledSetting.Size,TStyledSetting.Style];
Header.Items[i].Font.Size := 20;
Header.Items[i].Font.Style := [TFontStyle.fsBold];
Header.Items[i].TextSettings.HorzAlign:=TTextAlign.Center;
end;
Header.Height := 48;
end;
end;
参考URL
https://stackoverflow.com/questions/32131522/change-theader-font-size-in-fmx-tstringgrid
外していたらすいません。
ヘッダー部分を自力で描画するやり方です。
TStringGridのDefaultDrawingをFALSEにしても、ヘッダー部分は描画されてしまうので、
StringGrid1DrawColumnHeaderイベントを利用して、背景を塗り潰してから、文字列を描画しています。
これは、背景色を決め打ちで指定してしまっているので、mam様のやり方の方が最も良いと思います。
参考までに投稿。
「FMXコード」
uses
…
System.UIConsts;
procedure TForm1.StringGrid1DrawColumnHeader(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF);
begin
// 矩形補正
Bounds.Inflate(-Column.Padding.Left, -1);
// 背景
Canvas.Fill.Color := claWhite;
Canvas.Fill.Kind := TBrushKind.Solid;
Canvas.FillRect(Bounds, 0, 0, [], 1);
// 文字列描画
Canvas.Fill.Color := claRed;
Canvas.Font.Size := 12;
Canvas.Font.Style := [TFontStyle.fsBold];
Canvas.FillText(Bounds, Column.Header, FALSE, 1, [], Column.HorzAlign, Column.DefaultTextSettings.VertAlign);
end;
mamさん、KONNOYAさん
有難うございます。
どちらの方法でもフォントサイズを変更する事ができました。
今回、一覧画面を複数作成しますので、本当に助かりました。
ツイート | ![]() |