请教如何让DBGRID每隔一行就显示为红色,这个代码如何写啊,请各位指教一下(0分)

  • 主题发起人 主题发起人 topdelphi
  • 开始时间 开始时间
T

topdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
请教如何让DBGRID每隔一行就显示为红色,这个代码如何写啊,请各位指教一下
 
这是针对dbgrideh的,自己改改就成了
procedure TDBMDIChildForm.DBGDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
//画斑马线
begin
inherited;
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;

 
procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
//隔行改变网格背景色:
if Query1.RecNo mod 2 = 0 then
(Sender as TDBGrid).Canvas.Brush.Color := clRed//定义背景颜色
else
(Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223);
end;
 
首先真的好感激楼上两位的回答,可惜我没有分如果不是全部相送,但是我想的是隔行显示
的颜色是全部行,不是单击那个就显示那一个的颜色,不过还是再次感激各位,如果不言小弟
烦,烦请再指教.谢谢了
 
呵呵,其实你自己想想,也是很简单的,他们都把主要的写出来啦。

你把所有的网格遍历一遍,偶数行用颜色,奇数行不管他,不就可以了。
所谓的解答,应该是点到即止,很多东西自己探索一下不是很好吗,呵呵。
 
ehgrid不是有现成的功能的嘛,不要写代码的!
 
历遍一次是好简单,但是我不明白,偶数行和奇数行,,是怎样检测啊,
例如下次的语句,但是我不知道,所以的偶数,奇数在这里是怎样的,小弟真的很笨.烦请指教
FOR I:=0 TO DBGRID1.COUNT THEN
 
holyszq的回答就是隔行变色啊
你到底有没有看别人的回答啊?
 
我已经测试过了,但只是单击之后才变色,我的功能是要隔行的全行都变色,烦请指点迷津
 
偶数,奇数 -->>好象小学就有教了,ai, 小同学啊...........

叫你看上面的回答啊,我copy下来给你上小学数学课吧:

if Query1.RecNo mod 2 = 0 then [green]//如果一个数能给2整除,它就是偶数[/green]
(Sender as TDBGrid).Canvas.Brush.Color := clRed//定义背景颜色
else [red]//否则它就是奇数[/red]
(Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223);
end;


如果你要看 : FOR I:=0 TO DBGRID1.COUNT THEN
那么 [blue]if i mod 2 = 0 //它是偶数
if i mod 2 <> 0 //它是奇数[/blue]

我受不了自己了。。。。。。。。。。。。。。!!!!!
 
后退
顶部