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

Я ищу рекомендуемое решение для стилизации ячейки TGrid, которая рисуется с помощью вызова OnGetValue (который вызывается для рисования ячеек в поле зрения). Для фона отличный ответ Майка показал, как просто применять свойство tAlign при создании ячейки; но моя следующая задача - покрасить содержимое клетки.

Предыдущая запись / ответ

Цель состоит в том, чтобы изменить атрибуты ячейки (шрифт, стиль, цвет и т. Д.) Значения, которое я собираюсь вернуть в качестве ячейки «Значение». В приведенном ниже примере; это будет применение стиля к «значению» OnGetValue, которое возвращается. Вполне возможно, что мы должны сделать это с помощью таблицы стилей FM; или мы можем получить непосредственно к атрибутам TText? В идеале оба сценария были бы хорошими, но на этом этапе я приму любое решение ... (; ->

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Objects, FMX.Grid,
  FMX.Layouts, FMX.Edit;

type
  TForm1 = class(TForm)
    Grid1: TGrid;
    Button1: TButton;
    StyleBook1: TStyleBook;
    procedure Grid1GetValue(Sender: TObject; const Col, Row: Integer;
      var Value: Variant);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TStringColNum = class(TStringColumn)
  private
    function CreateCellControl: TStyledControl; override;
  published
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

function TStringColNum.CreateCellControl: TStyledControl;
begin
  Result:=TTextCell.Create(Self);
  TTextCell(Result).TextAlign := TTextAlign.taTrailing;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Grid1.AddObject(TStringColumn.Create(Self));
  Grid1.AddObject(TStringColNum.Create(Self)); // Right Aligned column?

  Grid1.RowCount:=5000;
  Grid1.ShowScrollBars:=True;
end;

procedure TForm1.Grid1GetValue(Sender: TObject; const Col, Row: Integer;
  var Value: Variant);
begin
  if Col=0 then
    Value:='Row '+IntToStr(Row);

  if Col=1 then
    Value := 'Row '+IntToStr(Row);

// Apply style based on value ?

end;

end.

Большое спасибо заранее, Ян.

Ответы на вопрос(2)

Ваш ответ на вопрос