如何随意控制DBGrid每一行颜色(一整行,并不是某一字段),且颜色随光标变化!在线等待。(100分)

  • 主题发起人 20020509
  • 开始时间
2

20020509

Unregistered / Unconfirmed
GUEST, unregistred user!
如何随意控制DBGrid每一行颜色(一整行,并不是某一字段),且颜色随光标变化!在线等待。
我看了几位仁兄的意见,感觉不太满意。我的要求是一整行都被其颜色填充。望高手指教。
 
是这样吗(onDrawColumnCell)

dbGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
dbGrid1.Canvas.Pen.Color := $00C08000;

dbGrid1.Canvas.MoveTo(Rect.Left, Rect.Bottom);
dbGrid1.Canvas.LineTo(Rect.Right, Rect.Bottom);
dbGrid1.Canvas.MoveTo(Rect.Right, Rect.Top);
dbGrid1.Canvas.LineTo(Rect.Right, Rect.Bottom);
 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var
oldcolor:tcolor;
oldpm:tpenmode;
begin
if 条件 then {设定变色的行的条件}
begin
oldpm:= DBGrid1.Canvas.pen.mode;
oldcolor:= DBGrid1.Canvas.Brush.color;//颜色
dbgrid1.Canvas.Brush.color:=xianshicolor[1];
dbgrid1.Canvas.pen.mode:=pmmask;
dbgrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
dbgrid1.Canvas.Brush.color:=oldcolor;
dbgrid1.Canvas.pen.mode:=oldpm;
end;

end;
 
我用的方法,很好用的(:
 
你们的方法都不行。
 
是不是指这个效果:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=319602
 
你们说的方法,我都试了。
我感觉不太満意。能有更好的办法吗?
 
接受答案了.
 
其实这里的关键代码是:
DbGrid.datasource.DataSet.RecNo
///////////////////////////////

给你一个示例,自己去体会,其它的你应该会:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
Grid:TDBGrid;
R:TRect;
begin

Grid:=TDbGrid(Sender);
r.left:=Rect.left-1;
r.Top:=Rect.Top-1;
r.right:=Rect.right+1;
r.bottom:=Rect.bottom+1;
with Grid do
begin
if (datasource.DataSet.RecNo Mod 2)=0
then
canvas.Brush.color:=clYellow
else
canvas.Brush.color:=$00ff00;
Font.color:=clRed;
canvas.Rectangle(r);
canvas.TextOut(rect.left,rect.top,column.Field.AsString );
end;
end;

 
顶部