我想实现点击一个窗体上的一个按钮,然后就出现一个新的窗口,以下是我的代码
form2 := TForm2.Create(self);
form2.ShowModal;
form2.Free;
这种写法没有一点问题,但是我一旦把form2.ShowModal改为form2.Show之后,窗体只是闪了一下就消失了,如果不要后面的form2.Free就没有问题,但是,如果不写后面的语句,岂不是内存没有释放,请教大家!
form2 := TForm2.Create(self);
form2.ShowModal;
form2.Free;
这种写法没有一点问题,但是我一旦把form2.ShowModal改为form2.Show之后,窗体只是闪了一下就消失了,如果不要后面的form2.Free就没有问题,但是,如果不写后面的语句,岂不是内存没有释放,请教大家!
解决方案 »
- 如何向一正在运行的运用程序发送按键消息,比如A.exe发送<Y>键给正在运行的B.exe,A的代码应该如何写
- bpl中共用变量问题
- C#-->DELPHI
- 请教:我的Oracle驱动坏了,怎么修复!谢谢!
- 罗刚事件当晚录音http://www.91pop.com/upfile/31_1012.mp3
- TDBGrid的行列问题
- DLL中能否定义全局变量?应该如何使用?
- DELPHI6+crystal report8,我在作安装程序时那个水晶报表的驱动程序怎么办
- Delphi 还有前途吗?我要转Java 了!
- 求教:如何把BDE和我的MIS程序打成包,给用户直接安装使用?
- 哪个函数能够删除字符串中间的空格而又不会删除掉该字符串两头的空格?????
- 关于文件读写的简单问题
那么要等到form2关闭返回ModalResult 后才执行form2.Free;语句,
所以你可以看到这个模式窗口;
2、如果form2.Show,那么会接着执行form2.Free;所以
“窗体只是闪了一下就消失了”
Action := caFree;
即可释放!
如果不Free,会存在申请的内存没有释放的问题吗?
而Show是非模态窗口,打开后可以点击到别的窗口上的控件, 它执行后,直接运行下面的语句(free). 而free语句是将这个窗口释放, 所以闪一下就没了可在那个窗口里再加一个按钮来关闭就行了
而SHow没有。
不过如果你的代码多次执行的话肯定会占用许多不必要的内存资源。