dbgrid如何隔行换一底色显示?(20分)

R

rev

Unregistered / Unconfirmed
GUEST, unregistred user!
dbgrid如何隔行换一底色显示,不要用第三方控件如何实习?
 
这是我做的出入库的一个例子,红字显示红底色,一般是白底色,希望对你有所帮助:
先申明一个类: tcustomdbgridcraker=class(TcustomDBgrid);

procedure Tdjxsbform.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
with tcustomdbgridcraker(sender) do begin
if data1.DataModule1.Query22.fieldbyname('hlz').asstring='红字' then
begin
canvas.brush.color:=$008B83F5;
end;
defaultDrawColumncell(Rect,Datacol,Column,State);
end;
end;

你可以写如果行数为奇数,怎么样,如果行数为偶数怎么样,就可以实现了。
 
if Dbgrid1.DataSource.DataSet.RecNo mod 2=0 then
begin
DBGrid1.Canvas.Brush.Color:=$00eaeaea;
DBGrid1.Canvas.FillRect(rect);
DBGrid1.Canvas.font.color:=clblack;
end
else
begin
DBGrid1.Canvas.Brush.Color:=clwhite;
DBGrid1.Canvas.FillRect(rect);
DBGrid1.Canvas.font.color:=clblack;
end;
if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
begin
DBGrid1.Canvas.Brush.Color:=clinfobk;
DBGrid1.Canvas.FillRect(rect);
DBGrid1.Canvas.font.color:=clblack;
end;
DBGrid1.DefaultDrawColumnCell(rect,datacol,column,state);
 
多人接受答案了。
 
顶部