关于delphi动态创建panel组件时提高代码执行效率问题

使用sqldataset循环读取数据库,根据数据库的记录,动态创建一批panel组件,执行时效率不高,屏幕一直闪烁,直到所有panel创建完成,怎么样才能提高这段代码的执... 使用sqldataset循环读取数据库,根据数据库的记录,动态创建一批panel组件,执行时效率不高,屏幕一直闪烁,直到所有panel创建完成,怎么样才能提高这段代码的执行效率,或者别闪烁也可以,都创建完了再一起显示出来。代码如下:
var
mypnls:array[0..50] of Tpanel;
i,j,k,n,xx,yy:integer;

produce ..........;//代码在另一台电脑上,不能复制粘贴,只写关键部分吧
begin
j:=0;
k:=0;
n:=0;
for i=0 to sqldataset1.recordcount-1 do
begin
xx:=160*j;
if xx>1440 then
begin
j:=0;
inc(k);
end;
xx:=160*j;
yy:=55*k;
inc(j);
mypnls[n]:=Tpanel.creat(nil);
mypnls[n].parent:=panel_main;
mypnls[n].Left:=xx;
mypnls[n].Top:=yy;
sqldataset1.next;
end;
end;
展开
 我来答
帐号已注销
2012-05-09 · 超过38用户采纳过TA的回答
知道答主
回答量:204
采纳率:0%
帮助的人:85.4万
展开全部
这个代码同有什么意思!!
你把xx=160*j其中一个删除执行效果会有提高
var
mypnls:array[0..50] of Tpanel;
i,j,k,n,xx,yy:integer;

produce ..........;//代码在另一台电脑上,不能复制粘贴,只写关键部分吧
begin
j:=0;
k:=0;
n:=0;
for i=0 to sqldataset1.recordcount-1 do
begin

if xx>1440 then
begin
j:=0;
inc(k);
end;
xx:=160*j;
yy:=55*k;
inc(j);
mypnls[n]:=Tpanel.creat(nil);
mypnls[n].parent:=panel_main;
mypnls[n].Left:=xx;
mypnls[n].Top:=yy;
sqldataset1.next;
end;
追问
的确是这样,抄的时候失误了,多抄了一个,但是原来是没有这一句的
追答
本来你这段代码有一些没有用的代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jimwus
2012-05-10 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:120万
展开全部
创建前panel_main.visible:=false;最后改成true,只闪一下
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MichaelMagic
2012-05-09 · TA获得超过1945个赞
知道小有建树答主
回答量:707
采纳率:0%
帮助的人:635万
展开全部
很长时间不编了,记得好像是用Lock / Unlock吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式