Изменить размер шрифта THeader в FMX TStringGrid
Я искал этот вопрос и нашел это.
Итак, я написал обработчик события OnApplyStyleLookup следующим образом:
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
with Header.Items[I].Font do
begin
Header.Items[I].TextSettings.HorzAlign := TTextAlign.Center;
Size := 100;
Style := [TFontStyle.fsBold];
// SetSettings('Arial', 100, [TFontStyle.fsBold]);
end;
Header.Height := 48;
end;
// TStringGrid(Sender).Realign;
end;
выравнивание текста изменено, но размер и стиль шрифта не применяются.
Я использую XE7.
1 ответ
Решение
Чтобы применить измененный стиль текста, необходимо установить свойство StyledSettings для измененного объекта. Итак, финальный код выглядит так (мне не нравится with
оператор)
procedure TForm1.StringGrid1ApplyStyleLookup(Sender: TObject);
var
Header: THeader;
HeaderItem: THeaderItem;
I: Integer;
begin
Header := THeader((Sender as TStringGrid).FindStyleResource('header'));
if Assigned(Header) then
begin
for I := 0 to Header.Count - 1 do
begin
HeaderItem := Header.Items[I];
HeaderItem.Font.Size := 100;
HeaderItem.Font.Style := [TFontStyle.fsBold];
HeaderItem.TextSettings.HorzAlign := TTextAlign.Center;
// new code line:
HeaderItem.StyledSettings := HeaderItem.StyledSettings - [TStyledSetting.Size, TStyledSetting.Style];
end;
Header.Height := 48;
end;
end;