社区
C++ Builder 帖子详情 如何才能真正的将一个不再用的窗体干干净净的卸载??我看到的很多的解决方法都是含含糊糊的!实现起来也通常是报错!!(100分) ddsft 2003-05-13 03:43:12 如何才能真正的将一个不再用的窗体干干净净的卸载??我看到的很多的解决方法都是含含糊糊的!实现起来也通常是报错!!(100分)
如下:
Form1->Hide();
Form1->Close();
Form1->Free();
以上情况大部分时间都会报错!!!不知哪位高手能讲讲卸载窗体的原理及真正实用有效的方法????
不知哪位高手能讲讲卸载窗体的原理及真正实用有效的方法????
...全文
73 16 打赏 收藏 如何才能真正的将一个不再用的窗体干干净净的卸载??我看到的很多的解决方法都是含含糊糊的!实现起来也通常是报错!!(100分) 如何才能真正的将一个不再用的窗体干干净净的卸载??我看到的很多的解决方法都是含含糊糊的!实现起来也通常是报错!!(100分) 如下: Form1->Hide(); Form1->Close(); Form1->Free(); 以上情况大部分时间都会报错!!!不知哪位高手能讲讲卸载窗体的原理及真正实用有效的方法???? 不知哪位高手能讲讲卸载窗体的原理及真正实用有效的方法???? 复制链接
扫一扫 分享 转发到动态 举报
写回复 配置赞助广告取 消
确 定
用AI写文章 16 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 ddsft 2003-05-19 打赏举报 回复 这一点倒是早已注意到了! slothboy 2003-05-15 打赏举报 回复 老兄:
你有没有首选在project->options->auto-create forms里面把不需要自动创建的窗口给去掉呢?
不会有这个低级错误吧?
这个是用我提供的例子的前提阿! myy 2003-05-14 打赏举报 回复 >>但查看其内存占用情况,似乎窗体并没有卸载,生成一次内存就多一点,退出后也不见得少!!!???
这说明不了什么问题,Windows下的程序都这样的。
另外,据说vcl内部有cache,这样重创建就快,你可以最小化程序看看。 ddsft 2003-05-14 打赏举报 回复 Action=caFree;
我明白,按照你们的方法做了,但查看其内存占用情况,似乎窗体并没有卸载,生成一次内存就多一点,退出后也不见得少!!!??? qibo999 2003-05-13 打赏举报 回复 就是,你怎么还没明白???动态创建form,对于ShowModal()的,就delete form,对于Show()的,就在它的formClose()里加:Action=caFree;
还要再说吗? myy 2003-05-13 打赏举报 回复 slothboy(懒虫)说的很清楚了,现在不清楚的,应该是你自己。 ddsft 2003-05-13 打赏举报 回复 我要的是动态创建:程序启动时并不自动创建!!这种方法生成的窗体!!! slothboy 2003-05-13 打赏举报 回复 我的经验
1。有模式的
Form1=new TForm1(Application);
Form1->ShowModal();
delete Form1;
2。无模式的
if (Form1==NULL)
Form1=new TForm1(Application);
Form1->Show();
窗体的Close事件里面写
Form1=NULL;
Action=caFree;
可以完全delete掉
=NULL在这里只是用在new的时候告诉程序这个窗口现在不存在 gpg 2003-05-13 打赏举报 回复 Form1->Hide();
Form1->Close();
Form1->Free();
什么意思
原则只有一个,你要注意你的窗口的整个生命周期,还有,是不是其他对象对它有依赖性 南郁 2003-05-13 打赏举报 回复 用new 产生。不用时delete.(最好通过设置,将窗体设置为默认是不自动创建)
如果你的窗口是用show()来显示,而且不好控制何时来delete。则在它的OnClose里写上Action = caFree; ddsft 2003-05-13 打赏举报 回复 xuv2002(4舍523) 您说的方法:我试过了,窗体连关都关不了!!说实在的!在网上看到很多说是要把自己建的窗体卸载干净的提议,但这一点在BCB中做起来怎么就是“一波 N 折”呢?? netsys2 2003-05-13 打赏举报 回复 TAboutBox* a = new TAboutBox(Application);
try{
a->ShowModal();
}
catch(...){
delete a;
throw;
}
delete a;
至于form = NULL; 根本没有意义!
xuv2002 2003-05-13 打赏举报 回复 TForm * form = new TForm(this);
form->ShowModal();
delete form; form = NULL; // showmodal 窗体
TForm * form = new TForm(this);
form->Show();
//delete form; form = NULL; // 这里可以直接删除窗体
在form->OnClose 事件里面
void __fastcall TForm::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
form = NULL; // 将窗体指针赋空
} yuanreid 2003-05-13 打赏举报 回复 如果是MDIChildForm,楼上的方法,另外,最后将窗口指针delete 掉
如果是普通Form,释放完,直接delete就可以 sprewellkobe 2003-05-13 打赏举报 回复 不要把Form放在工程的AvtiveForm里面
用的时候在new出
不用的时候delete,这样就干净了 swordmanyang 2003-05-13 打赏举报 回复 在窗体OnClose的事件里
Action = caFree;
可以把本窗体的资料释放 VB中通过公用变量实现用户登录状态管理的源码解析与实践 在 Visual Basic 的世界里,变量不只是存储数据的容器,更是一种作用域契约。根据声明位置和关键字的不同,变量的命运也大相径庭。我们一路走来,经历了几个阶段:阶段方式特点初级快速见效,但脆弱中级参数传递 + 事件机制解耦增强,可控性提升高级类封装 + 属性控制 + 权限表可维护、可审计、可扩展最终你会发现,Public变量本身并没有错,错的是我们对它的使用方式。 advanced installer 使用常见问题整理 1、安装文件没有被覆盖问题
解决:
Files and Folders 选择所有文件
右键-Properties-Operations-Always overwrite existing file
2、ocx或dll文件的注册
解决:
Files and Folders 选择所有文件
右键-Properties-Registration-Auto register file... VB.Net集成BarTender实现自动化标签打印的实战指南 本文提供了使用VB.Net集成BarTender实现自动化标签打印的完整实战指南。详细介绍了从环境搭建、SDK配置到核心代码编写的全过程,重点讲解了如何通过VB.Net动态填充数据、执行打印以及处理批量任务与错误。该方案能显著提升制造业、物流仓储等领域的标签打印效率和准确性,实现流程自动化。 (原创) EXCEL集成工具箱V8.0 闪亮登场 (EXCEL插件) Excel集成工具箱7.0是利用VBA(Visual Basic for Applications)语言编写的增强应用型插件。包括160个菜单功能和100个左右自定义函数,集160个工具于一身,但体积小于15MB。当安装集成工具箱后,如果您使用Excel 2003,则将产生【工具箱】菜单,包括160多个子菜单;如果您使用Excel 2007或者2010,将产生【集成】与【工具箱】功能区。根据各功能的特点,对子菜单作了18个分类, 而在函数向导对话框中也生成100个左右新的函数,用于扩展Excel的计算功能。 vb datagrid 某一格子的点击事件_vb文本课件 1.vb文件的保存 通常vb文件包括一个vbp工程文件和n个frm窗体文件,n取决于保存时窗体的个数2.对象,属性,方法以及一个小练习 对象:比如说窗体、工具栏中的各种控件对象,标签,命令按钮等 常见的及接下来我们打算学习的控件有: picturebox:图片框 label:标签 text:文本框 frame:框架 ...
C++ Builder
13,873
社区成员
102,696
社区内容
发帖 与我相关 我的任务 C++ Builder C++ Builder相关内容讨论区 复制链接
扫一扫 分享 确定 社区描述 C++ Builder相关内容讨论区 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告 试试用AI创作助手写篇文章吧
+ 用AI写文章