Я ищу рекомендуемое решение для стилизации ячейки 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.
Заранее большое спасибо, Ян.