DBGrid 单双行显示不同颜色

procedure TfrmMain.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var
  aIndex:Integer;
  aDBGrid:TDBGrid;
begin
  if Sender is TDBGrid then
  begin
    aDBGrid:=TDBGrid(Sender);
    if State=[] then
    with aDBGrid do
    begin
      if Assigned(DataSource) and Assigned(DataSource.DataSet)
        and DataSource.DataSet.Active
        and not(SelectedRows.Find(DataSource.DataSet.Bookmark,aIndex)) then
      begin
        //aIndex:=(Rect.top div 17);//DataSource.DataSet.RecNo;
        try
          aIndex:=DataSource.DataSet.RecNo;
        Except
        end; 
        if odd(aIndex) then
          aDBGrid.Canvas.Brush.Color:=clWindow //白色
        else
          aDBGrid.Canvas.Brush.Color:=clBtnFace;//灰色
        aDBGrid.Canvas.Font.Color := clWindowText;
        TDBgrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
      end;
    end
    else
    if ( Sender <> Screen.ActiveControl ) then
    with aDBGrid.Canvas Do
    begin
      Brush.Color := clBtnFace;
      Font.Color := clWindowText;
      TDBgrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;
  end;
end;

posted @ 2012-04-19 15:33  yoogoo  阅读(277)  评论(0编辑  收藏  举报