VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1380|回复: 6

求助:CXGRID实现斑马线的效果。

[复制链接]

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-11-26 23:00:01 | 显示全部楼层 |阅读模式
我的代码如下:
procedure TForm1.cxGrid1DBTableView1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  inherited;
if dm1.AdoDataSet.RecNo mod 2=0 then
begin
ACanvas.Canvas.Brush.Color :=clBlack;
end
else
begin
ACanvas.Canvas.Brush.Color:=clWhite;
end;
end;

程序运行后,并没显示斑马线的效果,除非鼠标点上该行后,才变色。
请教大家,如何设置CXGRID或如何的代码才能完美实现斑马线的效果。
回复

使用道具 举报

0

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-11-27 15:45:01 | 显示全部楼层
给你参考一下:
   ARect:=AViewInfo.Bounds;
   ATextToDraw := AViewInfo.GridRecord.DisplayTexts[AViewInfo.Item.Index];
   val := VarAsType(AViewInfo.GridRecord.DisplayTexts[EmpGridChangeType.Index],  varString);
   if val <> '在职' then ACanvas.Canvas.Brush.Color := clRed;
   ACanvas.Canvas.FillRect(ARect);
   SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
   ACanvas.DrawText(ATextToDraw, AViewInfo.Bounds, 0);

如果不是在职,则显示为红色
回复

使用道具 举报

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-11-27 18:00:01 | 显示全部楼层
可是我要的是斑马线的效果
回复

使用道具 举报

0

主题

25

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-11-27 23:45:01 | 显示全部楼层
把条件改一下就可以了

procedure TForm1.cxGrid1DBTableView1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  inherited;
  if AViewInfo.RecordViewInfo.Index mod 2 = 0 then
    ACanvas.Canvas.Brush.Color :=clBlack;
  else
    ACanvas.Canvas.Brush.Color:=clWhite;
end;
回复

使用道具 举报

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-11-28 08:00:01 | 显示全部楼层
谢谢,改了后可以实现斑马线的效果了
但是出现了新的问题,就是:在拉动cxgrid的滚动条后(比如:一共有50条数据,仅显示了20条,还有30条数据未显示,滚动条向下翻,显示后面数据),斑马线的效果就乱了,本应是一黑一白交替出现,但在滚动后,后面本应出现交替的现象就成了5白一黑或者4白一黑了,请问怎解?
回复

使用道具 举报

0

主题

25

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-11-28 09:15:01 | 显示全部楼层
上面的代码是没有问题的,我这里有3000多行数据都很正常。 这样吧你换一种不需要写任何代码的方式:

放置一个StyleRepository, 把你的TableView的Styles设置为这个StyleRepository,然后设置Styles的ContentEven(偶数行内容)和ContentOdd(奇数行内容)的Color.同样可以达到你要的斑马线效果。
回复

使用道具 举报

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-11-28 09:30:01 | 显示全部楼层
十分感谢supperman!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表