读书人

delphi 隔行变色有关问题

发布时间: 2012-09-08 10:48:07 作者: rapoo

delphi 隔行变色问题
with (sender as TDBGrid) do
begin
if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
begin
Canvas.Font.Color :=clblack;
Canvas.Brush.Color :=SelectColor;
end
else begin
if DataSource1.DataSet.RecNo mod 2 <> 0 then {判断当前数据是奇数还是偶数行}
Canvas.brush.Color :=Color1
else
Canvas.brush.Color :=Color2;
end;
Canvas.Font.Color :=clblack;
DefaultDrawColumnCell(Rect, DataCol, Column, State); {这行很关键的,一定不要遗漏了}
end;

类似于这样的代码我已经测试了很多了,但是我在增加新行的时候颜色就全部成为一个颜色了,当重新选择单元格时
颜色又隔行变色了,就是增加状态下不行,貌似以 行号 mod 2=0...都不行
delphi7 dbgrideh网格控件

[解决办法]
去掉下面行,看看:
if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
begin
Canvas.Font.Color :=clblack;
Canvas.Brush.Color :=SelectColor;
end

[解决办法]
很正常啊,单独建一个工程试试看
[解决办法]
dbgrideh??那你代码中判断sender as TDBGrid干嘛
[解决办法]
dbgrideh直接设置evenrow,oddrow的颜色即可
[解决办法]
我用DBGrid时,也是这样,后来,在代码中判断了一下,如果是新增或是修改状态,就不显示其他颜色了,保存后再重新显示其他颜色。

读书人网 >.NET

热点推荐