Изменить размер шрифта 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;
Другие вопросы по тегам