让Delphi的DBGrid控件能够在显示的时候可以用不同的颜色区分相邻的记录行,实现办法:
(1)把DBGrid的DefaultDriawing属性设为False;
(2)把DBGrid的Option—>dgRowSelect属性设为True,可以实现选中行行变色;设为False选中单元格变色;
(3)使用如下代码实现:
procedure TExample.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); {在表格的DrawColumnCell事件中实现 }
var
iColumn:Integer; {列循环控制}
iRect:Integer; {行循环控制}
begin
if Odd((Sender as TDBGrid).DataSource.DataSet.RecNo + 1) then {隔行变色实现}
begin
(Sender as TDBGrid).Canvas.Brush.Color := $00FEC8FF;
(Sender as TDBGrid).Canvas.Font.Color := clBlack;
end;
if ((State = [gdSelected]) or (State = [gdSelected, gdFocused])) then {设置当前所选单元格颜色}
begin
(Sender as TDBGrid).Canvas.Brush.Color := clSkyBlue;
(Sender as TDBGrid).Canvas.Font.Color := clBlack;
end;
with (Sender as TDBGrid).Canvas do {重画Cell(单元格)的边框}
begin
Pen.Color := clSilver; {画笔的颜色}
MoveTo(Rect.Right, Rect.Top); {定位画笔}
LineTo(Rect.Right, Rect.Bottom); {画竖线}
Pen.Color := clActiveCaption; {画笔的颜色}
MoveTo(Rect.Left, Rect.Bottom); {定位画笔}
LineTo(Rect.Right, Rect.Bottom); {画横线}
(Sender as TDBGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State); {生效}
end;
end;
(1)把DBGrid的DefaultDriawing属性设为False;
(2)把DBGrid的Option—>dgRowSelect属性设为True,可以实现选中行行变色;设为False选中单元格变色;
(3)使用如下代码实现:
procedure TExample.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); {在表格的DrawColumnCell事件中实现 }
var
iColumn:Integer; {列循环控制}
iRect:Integer; {行循环控制}
begin
if Odd((Sender as TDBGrid).DataSource.DataSet.RecNo + 1) then {隔行变色实现}
begin
(Sender as TDBGrid).Canvas.Brush.Color := $00FEC8FF;
(Sender as TDBGrid).Canvas.Font.Color := clBlack;
end;
if ((State = [gdSelected]) or (State = [gdSelected, gdFocused])) then {设置当前所选单元格颜色}
begin
(Sender as TDBGrid).Canvas.Brush.Color := clSkyBlue;
(Sender as TDBGrid).Canvas.Font.Color := clBlack;
end;
with (Sender as TDBGrid).Canvas do {重画Cell(单元格)的边框}
begin
Pen.Color := clSilver; {画笔的颜色}
MoveTo(Rect.Right, Rect.Top); {定位画笔}
LineTo(Rect.Right, Rect.Bottom); {画竖线}
Pen.Color := clActiveCaption; {画笔的颜色}
MoveTo(Rect.Left, Rect.Bottom); {定位画笔}
LineTo(Rect.Right, Rect.Bottom); {画横线}
(Sender as TDBGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State); {生效}
end;
end;