如下程序制作的奇偶行颜色变色问题显示时完全正确,但一执行ADOdataset.append即增加一行时奇偶行颜色全恢复成了原来没有以下程序时的相同颜色了,请问如何解决??
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if( gdSelected in State)then
//如果是被选中的
begin
DBGrid1.Canvas.Brush.Color:=clBlue;
//选中的背景色为clBlue
DBGrid1.Canvas.Font.Color:=clYellow;
//选中的字体颜色为clYellow
end
else
if self.DataSource1.DataSet.RecNo mod 2=1 then
//用self.DataSource1.DataSet.RecNo mod 2
//来判断行数产生隔行
DbGrid1.Canvas.Brush.Color:=clRed
else
DBGrid1.CanVas.Brush.Color:=clWhite;
DBGrid1.DefaultDrawcolumnCell(rect,DataCol,Column,State);
//其他默认
end;
解决方案 »
- 求直角三角形的面积和周长,出现问题.不知道怎么解决.
- TAdoquery可以在两个窗口间传递吗
- delphi控件无法获取焦点
- 救命啊,一个很弱智的问题
- 如何判断是否是润年?
- 有两个adoquery1,adoquery2,如何设置他的主从关系?
- 哪位老大知道用TWordApplication保存并关闭一word文档,我只会打开word,救急!!!
- ㊣㊣㊣㊣㊣㊣这样的查询如何实现数据库问题,兄弟们帮我一吧㊣㊣㊣㊣㊣。
- delphi7的上传控件为那个?谢谢
- 大家帮帮我好吗???
- delphi中有没有象vb中的控件数组?
- 我原来用的是InterBase4.2,现在想换成InterBase7.0,可以用吗,会不会有问题?
得到的结果与你想要的一样. 不过我是通过改写控件实现的. 我找到后发给你.
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
Case dm.clientdataset1.RecNo mod 2 = 0 of //file://根据数据集的记录号进行判断
True : DbGrid1.Canvas.Brush.color:=clmoneygreen;// file://偶数行用浅绿色显示 file://奇数行用蓝色表示
end;
if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then //file://选中行用红色显示
DbGrid1.Canvas.Brush.color:=clred;
DbGrid1.Canvas.pen.mode:=pmMask;
DbGrid1.DefaultDrawColumnCell (Rect,DataCol,Column,State);
end;