Delphi XE4 Firemonkey Grid Control - индивидуальная стилизация ячеек

Мы только что обновились с Delphi 2010 до XE4 и впервые использовали FireMonkey, поэтому немного спотыкались в темноте, пытаясь понять, как все это работает.

В соответствии с запросом некоторое время назад я пытаюсь получить отдельные ячейки в компоненте TGrid для отображения по-разному на основе некоторого правила. Я работал с полезным кодом, опубликованным Майком Саттоном:

Firemonkey Grid Control - стилизация ячейки на основе значения (с помощью вызова функции OnGetValue)

Мне пришлось внести несколько изменений, чтобы он компилировался в XE4; все выглядит нормально при запуске кода, за исключением того, что:

  1. FontFill не распознан, так что пока это скрыто.
  2. Стиль шрифта не меняется вообще, он отображается как стиль по умолчанию, несмотря ни на что.

Соответствующий код (остальное в значительной степени по ссылке выше):

Procedure TFinancialCell.ApplyStyle;
var 
  T: TFMXObject;
begin
  inherited;
  ApplyStyling;
end;

Procedure TFinancialCell.ApplyStyling;
begin
//  If IsNegative then
//    FontFill.Color:=claRed
//  else
//    FontFill.Color:=claBlack;

  Font.Style:=[TFontStyle.fsItalic];

  If IsImportant then
    Font.Style:=[TFontStyle.fsBold]
  else
    Font.Style:=[];

  If Assigned(Font.OnChanged) then
    Font.OnChanged(Font);

  Repaint;
end;

Флаги IsImportant устанавливаются правильно, поэтому проблем не возникает.

Любая помощь с этим была бы очень признательна. Заранее извиняюсь за что-то глупое, что я могу пропустить.

1 ответ

Решение

Эта статья была в значительной степени заменена некоторыми материалами на моем сайте руководства FireMonkey, http://monkeystyler.com/guide/Category%3AGrids

Начиная с XE3, если вы хотите изменить материал, вам нужно удалить соответствующий элемент из свойства StyledSettings,

StyledSettings := StyledSettings - [TStyledSetting.ssStyle, TStyledSetting.ssFontColor]

и т.п.

Чтобы изменить цвет шрифта, используйте свойство FontColor

Другие вопросы по тегам