在使用Dbgrid的时候,怎样对它进行设置和编程,才能达到要求,因为我的程序需要,,从数据原去几个数据出来进行判断。
如果达到一定的条件,就将这一行显示为不同的颜色,,我想问一下这个怎样去设置!!

解决方案 »

  1.   

    procedure TPersonForm.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
    //change the color mode of this DBGrid
    //inherited;
    With DbGrid1 do
    begin
      if ADOQuery1.fieldbyname('field').asstring='YES' then
        begin
        Canvas.Font.Color := clYellow;
        Canvas.Brush.Color := clNavy;
        end
      else
        begin
           Canvas.Font.Color := clred;
        Canvas.Brush.Color := clNavy;
       
        end;
      DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;
    end;
      

  2.   

    DBGrid1.Columns[1].Color := clRed;
      

  3.   

    对于DBgrid还需要怎样的设置,是不是只需要按照它的默认设置,还有dbgridd的Defaultdraw是否为True;
      

  4.   

    定义一个全局变量: 
    LastColor:TColor; DBGrid的DefaultDrawing设为false procedure TMainForm.MailListDrawColumnCell(Sender: TObject; 
      const Rect: TRect; DataCol: Integer; Column: TColumn; 
      State: TGridDrawState); 
    begin 
      if gdSelected in State then LastColor := ClBlue 
      else if DataCol = 0 then 
      begin 
        if Column.Field.AsInteger = 101 then LastColor := clYellow 
        else if Column.Field.AsInteger = 107 then  LastColor := clWhite 
        else LastColor  := clGreen; 
      end;   MailList.Canvas.Brush.Color := LastColor;   MailList.canvas.textrect(rect, rect.left + 2, rect.top + 2, Column.Field.AsString); 
    end; 请注意,maillist是Tdbgrid控件