在线等:CXGRID实现斑马线的效果。

duandao 2007-01-06 10:43:22
我的代码如下:
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或如何的代码才能完美实现斑马线的效果。
...全文
330 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
老冯 2007-01-07
  • 打赏
  • 举报
回复
上面的代码是没有问题的,我这里有3000多行数据都很正常。 这样吧你换一种不需要写任何代码的方式:

放置一个StyleRepository, 把你的TableView的Styles设置为这个StyleRepository,然后设置Styles的ContentEven(偶数行内容)和ContentOdd(奇数行内容)的Color.同样可以达到你要的斑马线效果。
duandao 2007-01-07
  • 打赏
  • 举报
回复
谢谢,改了后可以实现斑马线的效果了
但是出现了新的问题,就是:在拉动cxgrid的滚动条后(比如:一共有50条数据,仅显示了20条,还有30条数据未显示,滚动条向下翻,显示后面数据),斑马线的效果就乱了,本应是一黑一白交替出现,但在滚动后,后面本应出现交替的现象就成了5白一黑或者4白一黑了,请问怎解?
duandao 2007-01-07
  • 打赏
  • 举报
回复
十分感谢sanmaotuo(老冯)!
结帖。
duandao 2007-01-06
  • 打赏
  • 举报
回复
可是我要的是斑马线的效果
wywry 2007-01-06
  • 打赏
  • 举报
回复
给你参考一下:
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);

如果不是在职,则显示为红色
duandao 2007-01-06
  • 打赏
  • 举报
回复
UP
老冯 2007-01-06
  • 打赏
  • 举报
回复
把条件改一下就可以了

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;
duandao 2007-01-06
  • 打赏
  • 举报
回复
有人回答么?

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧