如何在数据表格(dbgrid 或者 dbgrideh)中实现真正的斑马线效果?谢谢 ( 积分: 50 )

  • 主题发起人 主题发起人 miss2046
  • 开始时间 开始时间
M

miss2046

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位大侠,如何在数据表格(dbgrid 或者 dbgrideh)中实现真正的斑马线效果?
类似下面的这种代码只要表格进入修改或新增一行时,表格就会变成同一种颜色而失去所谓的斑马线效果:
//画斑马线
begin
with TDBGridEh(Sender) do
begin
if not Assigned(DataSource) or
not DataSource.DataSet.Active then exit;
if gdSelected in State then
begin
Canvas.Brush.Color := clNavy;
Canvas.Font.Color := clWhite;
end else
if DataSource.DataSet.RecNo mod 2=0 then
Canvas.Brush.Color:= clInfoBk;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
 
请问各位大侠,如何在数据表格(dbgrid 或者 dbgrideh)中实现真正的斑马线效果?
类似下面的这种代码只要表格进入修改或新增一行时,表格就会变成同一种颜色而失去所谓的斑马线效果:
//画斑马线
begin
with TDBGridEh(Sender) do
begin
if not Assigned(DataSource) or
not DataSource.DataSet.Active then exit;
if gdSelected in State then
begin
Canvas.Brush.Color := clNavy;
Canvas.Font.Color := clWhite;
end else
if DataSource.DataSet.RecNo mod 2=0 then
Canvas.Brush.Color:= clInfoBk;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
 
这里!
if gdSelected in State then
begin
Canvas.Brush.Color := clNavy;
Canvas.Font.Color := clWhite; //被选择行的颜色
end else
if DataSource.DataSet.RecNo mod 2=0 then //未选则行,2种颜色交替
Canvas.Brush.Color:= clInfoBk
else
Canvas.Brush.Color:= clred;//改回另一种颜色
 
呵呵,谢谢你的回答,不过你的方法是行不通的,不信你自己去插入一个新行试试,马上变成一遍红色了 :)
 
后退
顶部