fmx delphi berlin как изменить цвет шрифта в строках Tgrid

НУЖНА ПОМОЩЬ. Я использую delphi 10.1 berlin. Есть некоторые отличия от других предыдущих версий Embarcadero Delphy Code Gear. Мне нужно изменить цвет шрифта в строках TGrid. В следующем коде я изменю цвет фона, но мне нужно изменить только цвет шрифта:

  aRowColor.Color := arSTATUS_GRID_COLOR[0];
  Canvas.FillRect(Bounds, 0, 0, [], 1, aRowColor);
  Column.DefaultDrawCell(Canvas, Bounds, Row, Value, State);

person Luigi Ambrosino    schedule 10.10.2016    source источник
comment
См. этот вопрос: stackoverflow.com /questions/32887019/ или это: stackoverflow.com/questions/22095414/   -  person Germán Estévez -Neftalí-    schedule 10.10.2016


Ответы (1)


Вместо вызова Column.DefaultDrawCell() вы можете использовать FMX.Graphics.TCanvas.FillText() в событии grids OnDrawColumnCell().

документация объясняет детали, но главное заключается в том, чтобы установить Canvas.Fill.Color на желаемый цвет перед вызовом Canvas.FillText()

Образец кода:

procedure TForm28.Grid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas;
  const Column: TColumn; const Bounds: TRectF; const Row: Integer;
  const Value: TValue; const State: TGridDrawStates);
begin
  case Row of
    0: Canvas.Fill.Color := TAlphaColors.Red;
    1: Canvas.Fill.Color := TAlphaColors.Blue;
    2: Canvas.Fill.Color := TAlphaColors.Green;
    3: Canvas.Fill.Color := TAlphaColors.Blueviolet;
  end;
  Canvas.FillText(Bounds, Value.AsString, false, 1, [], TTextAlign.Leading, TTextAlign.Center);
end;

И как это выглядит:

введите здесь описание изображения

person Tom Brunberg    schedule 11.10.2016
comment
Спасибо за объяснение. Кстати, по крайней мере, начиная с Delphi v10.2 TTextAlign.taLeading устарел, используйте TTextAlign.Leading. То же самое касается taCenter, теперь только Center и т. д. для других, - person Ashlar; 01.05.2017