procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
begin
if gdSelected in State then Exit;
if Query1.RecNo mod 2 = 0 then
(Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色
else
(Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;这样的语句写好之后,TDBGrid所有行的颜色都变了,没有达到预期的效果,Query1.RecNO的值是-1,这是怎么回事呀?
const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
begin
if gdSelected in State then Exit;
if Query1.RecNo mod 2 = 0 then
(Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色
else
(Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;这样的语句写好之后,TDBGrid所有行的颜色都变了,没有达到预期的效果,Query1.RecNO的值是-1,这是怎么回事呀?
解决方案 »
- 简单的"车牌识别技术"的实现,不吝赐教.
- 如何使用socket多线程传送文件?
- delphi高手愿意兼职的看过来
- delphi 6.0下的string的不能超过255个字符吗?
- 请问:编程如何实现ScrollBox (Panel/form)转化为html文件? ScrollBox->html
- 要求字段a的值为1是打印‘yes’,值为0是打印‘no',如何实现。谢谢
- 关于Excel问题(高分征解)
- 由Delphi导出数据到Excel中的格式设置问题?(急......)
- 请问怎么样adodataset编辑数据库中的 一条记录?
- 如何在自己开发的程序的安装盘中封装ms sql server的客户端的驱动
- TUpdateSQL组件怎么绑定参数?
- DLL调用过程中的指针问题!急!急!急!
**************************************************************
type
TGrid = class(TDBGrid);
TFormMain = class(TForm)
……………………procedure TFormMain.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
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 // $E2FBFE
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);end;
如果换成wwDBGrid控件更简单,只要设置一下属性即可,不用这么麻烦!
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var RowHeight,Row,i:INteger;
begin
RowHeight := Rect.Bottom - Rect.Top+1;
Row := (Rect.Top div RowHeight);
if row mod 2= 0 then begindbgrid1.Canvas.Brush.Color:=$00F7FFFF ;// dbgrid1.Canvas.Font.Color:=clred;
dbgrid1.Canvas.FillRect(rect);
end
else begindbgrid1.Canvas.Brush.Color:=$00FFF8F0;//dbgrid1.Canvas.Font.Color:=clblack;
dbgrid1.Canvas.FillRect(rect);
//dbgrid1.Canvas.
end;if (state=[gdFocused,gdSelected] ) or (state=[gdSelected] ) then// or (state=[ gdFocused]) then
begin
// for i:=0 to dbgrid1.Columns.Count-1 do
// begin
dbgrid1.Canvas.Brush.Color:=clblue;dbgrid1.Canvas.Font.Color:=clWindow;
dbgrid1.Canvas.FillRect(rect);
// dbgrid1.Canvas.pen.mode:=pmmask;
// end;
end;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
//DBGrid1.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.AsString);
//dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
http://www.anylib.com