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

时间:2015-03-05 09:05:17

标签: delphi firemonkey delphi-xe7 tgrid firemonkey-style

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

谢谢..

3 个答案:

答案 0 :(得分:1)

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

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

上找到关于后者的大量资料

答案 1 :(得分:0)

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

首先在 FormCreate 事件中指定此内容:

  StringGrid1.DefaultDrawing := False;

然后在StringGrid DrawColumnCell 事件中写下这个:

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

答案 2 :(得分:0)

适用于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的更改。