delphi为什么拖动stringgrid滚动条,数据和颜色就会部分消失

 我来答
帐号已注销
2013-03-22 · TA获得超过2184个赞
知道小有建树答主
回答量:631
采纳率:100%
帮助的人:640万
展开全部
你绘制单元格的代码有问题。
在Drawcell事件的时候,你可能是为绘制每个单元格触发的事件,如果这样的话,你的代码就属于比较糟的。

如果有类似 Canvas.TextOut(rect.left , rect.top, Cells[j, i]);代码,替换为
Canvas.TextRect(Rect,Rect.left,Rect.top,Cells[Acol,Arow]);这样的代码。
更多追问追答
追问
请问drewcell事件是怎么个触发的?是不是程序运行时它就开始画了?
追答
在form只有一个stringgrid控件的情况,以下是form的执行顺序:
1、form.create;含控件的初始化
2、form.show
3、form内控件的部分代码,此时,即使cell里没有数据,也要执行cell的drawcell
4、form.paint 可能和上面drawcell交替执行,因为drawcell也是paint,都是画
5、form.active
6、现在看见你的form
你试一下以下代码:颜色你可以改,我随便设的
procedure TForm1.strngrd1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with Sender as TStringGrid do
begin
if (ARow mod 2 =0) then
begin //偶数row
Canvas.Brush.Color := clYellow; //底色
Canvas.font.Color:=clRed; //字体颜色
end
else
begin
Canvas.Brush.Color := clBlue;
Canvas.font.Color := clYellow;
end;
Canvas.FillRect(Rect); //绘底色
canvas.textout(rect.Left,rect.Top,cells[Acol,ARow]); //output text
end;
end;
liu55721
2013-03-22 · TA获得超过922个赞
知道大有可为答主
回答量:1861
采纳率:100%
帮助的人:871万
展开全部
应该与控件自身无关,可能是你的电脑屏幕刷新速度有问题,换个其它机器运行,试试
更多追问追答
追问
又是你为我回答,很感谢啊。可是真的是机器的问题吗?我感觉不太像啊
追答
stringgrid,我是从不使用的,你提出问题之后,我在机器上试了一下,没有什么问题.你可能把颜色搞的太多了花梢了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式