Изменить размер шрифта 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;

выравнивание текста изменено, но размер и стиль шрифта не применяются.

Я использую ХЕ7.


person Outdoor    schedule 21.08.2015    source источник


Ответы (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;
person kami    schedule 21.08.2015
comment
это именно то, что я хочу! действительно ценю это! - person Outdoor; 21.08.2015