社区
Delphi
帖子详情
大虾们请进:一个小问题(VCL控件的动态创建)----在线等待
toperscj
2003-10-17 12:27:31
我需要在程序中动态创建一些Button,数量较大,我现在用While循环做的。速度不是令人满意。(切换界面明显感到慢)能否用线程动态创建?如何创建。俺是个新手,请大家给点儿方法
...全文
49
15
打赏
收藏
大虾们请进:一个小问题(VCL控件的动态创建)----在线等待
我需要在程序中动态创建一些Button,数量较大,我现在用While循环做的。速度不是令人满意。(切换界面明显感到慢)能否用线程动态创建?如何创建。俺是个新手,请大家给点儿方法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liusiyan
2003-10-25
打赏
举报
回复
555555
支持中文和英文
2003-10-24
打赏
举报
回复
除了做扫雷这样傻的游戏,估计日常事务也不会有这么多button!
如果是日常事务,还不如不用button,否则岂不是在用鼠标点键盘一样!!!
radandgreensky
2003-10-23
打赏
举报
回复
只是要功能的话没必要建那么多按钮吧
建议用动态挂接处理函数的方法
这样,你一共就只需要建最初界面上看得到的几个按钮就够了
要换功能的话直接把按钮的名字一改,再把OnClick属性一改,就OK了
feng93017
2003-10-23
打赏
举报
回复
楼主该不是做扫雷吧?
toperscj
2003-10-17
打赏
举报
回复
观点:占用内存是肯定的,但是256的内村,感觉也非常明显,我的办法肯定是存在问题,请大伙儿给点儿建议。该如何处理?
huojiehai
2003-10-17
打赏
举报
回复
建得太多肯定会慢的,占内存
用线程动态创建也一样
aiirii
2003-10-17
打赏
举报
回复
如果多到會讓界面切換慢的程度,我建議你是要修改顯示的算法, 有些不顯示的, 就不要創建了, 這種思路可能性更好!!! 用線程只會生成的更慢!!!
gold_future
2003-10-17
打赏
举报
回复
利用多线程并不能提高创建速度,只能用于在创建时维护用房界面不让看起来向死机一样。
为了加一进度条可以用:
for i:=1 to 300 do
bein
创建按钮;
if i mod 10 =0 then
刷新进度条;
end;
不要每创建一个按钮应刷新一次进度条;刷新一次进度条的占用cpu量要远远大于执行一次条件判断语句的cpu占用量
gold_future
2003-10-17
打赏
举报
回复
aButton:=TButton.Create(nil);
try
//do something;
finally
aButton.Free;
end;
在创建时Create参数应为(nil),如果你在创建时指定一个宿主(如:Create(Self)),会影响创建速度,因为当内部会有个通知机制.
Alanwn
2003-10-17
打赏
举报
回复
删除多余的按钮,动态变化他的功能好了
toperscj
2003-10-17
打赏
举报
回复
能不能够把按纽的创建放在多个线程里?如果可以,应该怎么做?大虾们救命啊
toperscj
2003-10-17
打赏
举报
回复
有用,我的程序需要根据用户需要动态来满足用户的下一步操作。应该有100~300个。
剑神,能够详细给说明一下吗?我需要把Button放到Form上,然后根据执行button的事件。
ZyxIp
2003-10-17
打赏
举报
回复
为什么要创建那么多的按钮,有用吗?
pankun
2003-10-17
打赏
举报
回复
放在另一个线程中创建吧.创建完后一起显示出来.
如下
procedure CreateButton;
begin
//创建按钮
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ThreadID, ThreadHwnd:THandle;
begin
ThreadHwnd := CreateThread(nil, 0, @CreateButton, nil, 1, ThreadID)
end;
hthunter
2003-10-17
打赏
举报
回复
除了占用内存,还占用CPU时间啊,如果太慢,窗口里面的东西创建完之前不要显示出来,加个类似于进度条的窗口,显示:“正在载入窗口,请稍候……”,呵呵,那样用户就可以忍受了
Delphi与Word之间的融合技术
问题
:Delphi与Word之间的融合技术 ( 积分:0, 回复:325, 阅读:37835 )分类:OLE/Automation ( 版主:g622, satanmonkey ) 来自:yzhshi, 时间:2001-11-18 17:52:00, ID:737517[显示:小字体 | 大字体] <tools:...
链接:MSDN UserNet等
T可塌陷的PanelBar界面比outlookbar更有吸引力,Windows XP左边的导航工具面版就是采用这种风格,采用这种风格的应用程序也越来越多,比如各种杀毒软件,可能delphi提供的
vcl
组件可以简化这种操作,对于这种“傻瓜...
跨
进
程获取其他程序的DBGrid内容
一、思考与启发 1.对于Windows的Standard Controls,基本上大家应该是都会的: GetWindowText,WM_GETTEXT可以获取EDIT的文本内容; LB_GETTEXT可以获取LISTBOX列表项的文本内容; CB_GETLBTEXT可以...
DELPHI 跨
进
程获取其他程序的DBGrid内容
一、思考与启发 1.对于Windows的Standard Controls,基本上大家应该是都会的: GetWindowText,WM_GETTEXT可以获取EDIT的文本内容; LB_GETTEXT可以获取LISTBOX列表项的文本内容; CB_GETLBTEXT可以...
关于FindControl的
问题
b.DLL和EXE的
VCL
类体系不是一个,它们各自有一套,因此,从EXE传递过去的对象,要在DLL中用is判断类型和as作类型转换,那都不能得到期望的结果。 如果是bpl,就不会有这个
问题
c.DLL中应用ADO、窗体(模态、非...
Delphi
5,392
社区成员
262,732
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章