如何使用 Delphi XE7 更改 stringgrid 特定单元格的颜色

How to change the colour of the stringgrid particular cell using Delphi XE7

我正在使用 Delphi XE7 开发 Android 应用程序。因为我使用了 TStringGrid 组件然后我使用了 StringGrid.cells[0, 0] := 'Test' 以及如何更改代码中显示的特定单元格的字体颜色。而且我还有 this sample code, 但我无法更改特定单元格的字体颜色。请任何人向我解释如何更改特定单元格值的字体颜色。我正在使用 Delphi XE7,目标是 Android 移动设备。

谢谢..

在 FireMonkey TStringGrid 中,没有每个单元格的样式选项。您将需要使用第三方网格控件或自己从 TGrid 中滚动一些东西。

您可以在我的网站 http://monkeystyler.com/guide

上找到大量关于后者的 material

终于,我找到了我需要的解决方案。请按照步骤操作。我们可以在 TStringGrid 本身改变字体颜色,不需要使用 TGrid。请按照以下步骤操作。

首先在 FormCreate 事件中赋值:

  StringGrid1.DefaultDrawing := False;

然后在 StringGrid DrawColumnCell 事件中写入:

  Canvas.fill.Color := TAlphaColorRec.Green;
  Canvas.FillText(Bounds, (Value.AsString),
    false, 100, [], TTextAlign.taLeading, TTextAlign.taCenter);

在 XE8 中也适用于 TStringGrid OnDrawColumnCell 事件。

这是一个将颜色保持为黑色但将字体样式设置为粗体的示例。提示,从左边距为字体添加 2 像素填充。

var Rect : TRectF;
begin
  Rect := Bounds;
  Rect.Left := Rect.Left + 2;
  Canvas.Font.Style := [TFontStyle.fsBold];
  Canvas.Fill.Color := TAlphaColorRec.Black;
  Canvas.FillText(Rect, (Value.AsString), false, 100, [], TTextAlign.taLeading, TTextAlign.taCenter);
end;

我一开始错过的是没有将 DefaultDrawing 设置为 false!在我设置之后,事件正在接受对 Canvas.

的更改