dbgrideh的小问题,怎样根据某一字段值改变DBGRIDEH中某一行的颜色

解决方案 »

  1.   

    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const 
    Rect: TRect;Field: TField; State: TGridDrawState);
      begin
       if Table1.Fieldbyname(′Salary′).value<=SpinEdit1.value then
       DBGrid1.Canvas.Brush.Color:=ClRed;
       else
        DBGrid1.Canvas.Brush.Color:=ClWindows;
       DBGrid1.Canvas.FillRect(Rect);
       
         DBGrid1.Canvas.TextOut(Rect.left+2,Rect.top+2,Field.AsString);
      end;
      

  2.   

    转例子
    // 在OnDrawColumnCell事件中
    procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    begin
      with DBGridEh1.Canvas do
      if (DBGridEh1.MouseCoord(Rect.Left+1, Rect.Top+1).Y mod 2) = 1 then
        Brush.Color := clBlue  // 偶数行红色
      else
        Brush.Color := clRed;  // 奇数行为蓝色
      DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
    // 在相对应的Query的AfterScroll事件中
    procedure TForm1.Query1AfterScroll(DataSet: TDataSet);
    begin
      DBGridEh1.Invalidate;  // 滚动时刷新grid
    end;