请教一个问题,我能改变DBGrid控件中一个单元格的颜色吗?并在一些单元格中加图片。

解决方案 »

  1.   

    改变颜色比较容易,可以在OnGetCellParams事件(好像是这个名字)中指定
      

  2.   

    拿去用
    procedure TfrmJBXX.DBGrid3DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    var i:integer;
        ARect:TRect;
        iIndex:integer;
    begin
      inherited;
    //变色
      with sender as TDBGRID do
      begin
         i:=datasource.DataSet.RecNo mod 2;
         if i=0 then canvas.Brush.Color:= dbgLittle//颜色
         else Canvas.Brush.Color:=dbgHeave;//颜色
         if (gdSelected in State) or (gdFocused in state) then
         begin
           Canvas.Brush.Color:= dbgSelect;//颜色
           Canvas.Font.Color:= dbgSelectFont;//颜色
         end;
         defaultdrawcolumncell(rect,datacol,column,state);
    //画图
         if Column.Field.FieldName ='flags' then
         begin
           iIndex:=Column.Field.asInteger;
           if (iIndex>=2) or (iIndex<0) then iIndex:=0;
           canvas.FillRect(rect);
           img2.Draw(canvas,rect.left+((Rect.Right-Rect.Left-img2.Width) div 2),rect.top,iIndex);
         end;
      end;end;
      

  3.   

    在dbgrid1得ondrawcolumncell事件里写上如下:
    begin
      if column.field=table单元格对应的字段 then
        if table1.fieldbyname('单元格对应的字段').asvariant=此单元格的值
      then
      dbgrid1.canvas.font.color:=clred;//或其他颜色  由你写
      dbgrid1.defaultdrawdatacell(rect,column,field,state);
    end;
      

  4.   

    可以呀!
    ondrawcolumncell里写