首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 隔行变色有关问题

2012-09-08 
delphi 隔行变色问题with(senderasTDBGrid)dobeginif((State[gdSelected])or(State[gdSelected,gdFocuse

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时,也是这样,后来,在代码中判断了一下,如果是新增或是修改状态,就不显示其他颜色了,保存后再重新显示其他颜色。

热点排行