请教高手们一个问题,我在使用DBGrid控件时,想根据颜色显示不同时期的数据,比如说过期的用红色,正常的用其他颜色,如何来实现,急用,最好有一个例子!多谢!

解决方案 »

  1.   

    procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
                  const Rect: TRect; DataCol: Integer; Column: TColumn;
                  State: TGridDrawState);
                  begin
                  //隔行改变网格背景色:
                  if Query1.RecNo mod 2 = 0 then//这句改为满足的条件这行了
                  (Sender as TDBGrid).Canvas.Brush.Color := clRed//定义背景颜色
                  else
                  (Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); 
                  end;
      

  2.   

    我觉得上面 xiaoqiang123(xiaoqiang的例子有问题,我觉得应该这样写
    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
                  if Table1.RecNo mod 2 = 0 then//这句改为满足的条件这行了
                  (Sender as TDBGrid).Canvas.brush.Color := clRed//定义背景颜色
                  else
                  (Sender as TDBGrid).Canvas.brush.Color := RGB(191, 255, 223);
                  DBGrid1.Canvas.FillRect(Rect);
                  DBGrid1.Canvas.TextOut(Rect.left+2,Rect.top+2,Field.AsString);
    end;
      

  3.   

    xiaoqiang123(xiaoqiang的方法中最后应该加上这行代码那样就行了dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
      

  4.   

    我回答的,你可能参考一下!
    http://expert.csdn.net/Expert/topic/2485/2485772.xml?temp=.3112757