启用 TStringGrid 的自画功能,并避免重影

FMX 控件的 TStringGrid 下,有时为了让不同行或不同 Cell 的显示颜色、字体等有各种不同的颜色, 必须采用自画, 即在其 OnDrawColumnCell 事件中写自己的控制代码显示。

例如:

    s := sgrdLog.Cells[1,Row];

    if s = 'info' then
      Canvas.Fill.Color := ccbInfo.Color
    else if s = 'error' then
      Canvas.Fill.Color := ccbError.Color
    else if s = 'warn' then
      Canvas.Fill.Color := ccbWarning.Color
    else if s = 'debug' then
      Canvas.Fill.Color := ccbDebug.Color
    else if s = 'trace' then
      Canvas.Fill.Color := ccbTrace.Color
    else if s = 'fatal' then
      Canvas.Fill.Color := ccbFatal.Color
    else
      Canvas.Fill.Color := TAlphaColorRec.Black;

    Canvas.FillText( Bounds, Value.ToString, False, 1, [], TTextAlign.Leading );

但显示效果你会发现有重影, 有个默认的黑色字体在后面,效果很差。 要解决这个问题很简单, 在程序启动后增加一句即可:

  sgrdLog.DefaultDrawing := False;

 

posted on 2015-06-18 17:34  震撼起飞  阅读(465)  评论(0编辑  收藏  举报

导航