請教 DBGrid 中怎樣使一行中的,一個字段的Font.Color 改變
如:DBGrid:number  Name      Class 
 001    Join       1  
 002    Tim        1
 003    steven     2把 Tim 變為紅色

解决方案 »

  1.   

    在DBGrid的OnDrawColumnCell事件中写代码
      if uppercase(Column.FieldName) = 'NAME' then
        if Column.Field.Value = 'Tim' then
          DBGrid1.Canvas.Font.Color := clRed;
       DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
      

  2.   

    if Query.FieldByName('NAME').AsString = 'Tim' then
    begin
      DBGrid1.Canvas.Font.Color := clRed;
      DBGrid1.Canvas.TextRect(Rect,Rect.Left+3 ,Rect.Top+
                              2,Column.Field.DisplayText);
    end;
      

  3.   

    楼上写得不错...可是..有的数据库不行.
    我用普通的db库没问题
    用sql server .和oracle 就不行..
      

  4.   

    仅供参考
    例如,对表中某字段当其数值小于0时为红字,其他为黑字.
    在 DBGrid.OnDrawColumnCell(...) 中:
    begin
    if TableField.AsInteger < 0 then
    DBGrid.Canvas.Font.Color := clRed
    else
    DBGrid.Canvas.Font.Color := clBlack;DBGrid.DefaultDrawColumnCell(...);
    end;
      

  5.   

    我的那段代码sql server和oracle同样可以
      

  6.   

    如果你用Ehlib中的TDBGridEh的话,你还能更简单。它提供了更多的事件来控制,如GetCellParams等事件!
      

  7.   

    首先将DEFAULTDRAWING属性设为FALSE
    然后在ONDRAWCOLUMNCELL事件中加入如下代码:
    if field.value='您确定的值' then
    begin
    canvas.font.color:=clred;
    end;
      

  8.   

    我隻想把 Tim 單獨改變
    以上的方法把整行 Font.Color 都改變了顺子妹妹:你的方法行不通