procedure TForm3.Button1Click(Sender: TObject);
var
i:integer;
arect:TRect;
if strtoint(get_jisuan[1])>50 then
begin
arect:=StringGrid1.CellRect(5,i);
StringGrid1.Canvas.Brush.Color:=clblue;
StringGrid1.Canvas.font.Color := clRed;
StringGrid1.Canvas.FillRect(ARect);
StringGrid1.Canvas.TextOut(120,20,'测试测试');
end;
大约的代码如上所失,但是发现填充的颜色在固定行可以显示,在数据区就会被遮挡。。。。求解啊。。。
8 个解决方案
#1
你说的是它把数据挡上了是吗?还是说下图有问题?
#2
下图有问题,我希望它能在最上层,如第二张图所示,为何会被数据挡住?
#3
呼叫大神们~~~
#4
你这样写不太好吧,给你个方法,满足条件的行列做个标志,设置CELL的颜色,字体什么的 在OnDraw也就是该控件的重绘事件中写比较好
#5
在onDrawGridCell事件里画比较好,好像是叫这个名字吧
#6
如何坐标志哦。。。求点拨
#7
为何会被数据挡住?
因为Grid在不停地自绘,自绘...
因为Grid在不停地自绘,自绘...
#8
比如cell[1,1]的框 定义2个全局变量 X=1,Y=1
在重绘里面的可以这样先判断 当前是否为X,Y符合的CELL 如果是就改变颜色
如果是多个状态,可以声明一个全局2维数组,但是每个重绘都要判断这个数组,也行效率比较低,不过估计界面上看不出延迟
#1
你说的是它把数据挡上了是吗?还是说下图有问题?
#2
你说的是它把数据挡上了是吗?还是说下图有问题?
下图有问题,我希望它能在最上层,如第二张图所示,为何会被数据挡住?
#3
呼叫大神们~~~
#4
你这样写不太好吧,给你个方法,满足条件的行列做个标志,设置CELL的颜色,字体什么的 在OnDraw也就是该控件的重绘事件中写比较好
#5
在onDrawGridCell事件里画比较好,好像是叫这个名字吧
#6
你这样写不太好吧,给你个方法,满足条件的行列做个标志,设置CELL的颜色,字体什么的 在OnDraw也就是该控件的重绘事件中写比较好
如何坐标志哦。。。求点拨
#7
为何会被数据挡住?
因为Grid在不停地自绘,自绘...
因为Grid在不停地自绘,自绘...
#8
你这样写不太好吧,给你个方法,满足条件的行列做个标志,设置CELL的颜色,字体什么的 在OnDraw也就是该控件的重绘事件中写比较好
如何坐标志哦。。。求点拨
比如cell[1,1]的框 定义2个全局变量 X=1,Y=1
在重绘里面的可以这样先判断 当前是否为X,Y符合的CELL 如果是就改变颜色
如果是多个状态,可以声明一个全局2维数组,但是每个重绘都要判断这个数组,也行效率比较低,不过估计界面上看不出延迟