在form1通过form2:=tform2.Create(self);生成一个新窗口后在form2里执行form2.free提示出错?
而且这样生成新窗口能生成很多得窗口,怎样判断才只会生成一个窗口?
而且这样生成新窗口能生成很多得窗口,怎样判断才只会生成一个窗口?
解决方案 »
- 获取VMT中动态表地址
- DBLOOKUPCOMBOBOX 如果我点击过,上面永远有值了,如何去掉这个值?谢谢大虾,一定给分,虽然分数少!偶新手分不多
- listview画背景的问题
- StringGrid控件如何能够在某一列输入时遵循数学法则,高手帮忙?
- 我做一个程序是用做发邮件的,没有带验证的,每次发邮件的时候都要输入密码之类的东西,有点烦有没有什么方法去掉呀(我是用DELPHI与的)
- 多声卡环境,如何控制TWindowsMediaPlayer的输出设备?
- 【寻】可以调用外部程序的Vxd代码【关注有分】
- 一个关于线程操作数据库的问题测试通过即给分(急!!)
- delphi6中三层的问题,谁答出来,连同上一个问题的分我也给他
- 关于一个时钟(timer1)和一个循环(for.....do)组合搭配的合理性......
- 窗口消息问题
- 速度奇慢哈
要想只生成一个,就判断啊
var exist:boolean
begin
exist:=false;
for i:=0 to mdichildren.count-1 do
if mdichildren[i] is tform2 then exist:=true;
if not exist then createform(tform2,form2);
end;
var
A:TForm;
...
A:=Tform.Create(Application);//创建窗体
A.Show;//以无模式窗体先是你所创建的窗体;
或者:if A.showmodal=mrOK then
{执行一些语句};//以有模式窗体方式打开窗体并执行一些代码
A.Close;//关闭窗体,但是此时并没有从内存中释放;
A.Free;//从内存中释放窗体。
你的使用当然是错误的拉。form2正在使用的过程中,你去释放它,肯定会错误的。
以上代码只是为了说明他们的意义,没有连续性,你可以自己试试看。
if not Assigned(form2) then
form2 := TForm2.Create(Self);
form2.Show;
Form2:=Tform2.Create(Application)
else if Form2.WindowState=wsMiniMized then//判断窗口是否最小化
SendMessage(form2.handle,WM_SYSCOMMAND,sc_RESTORE,0)//恢复窗口
form2.show;
记住form2 close 时
FreeANdNil(Form2);
frm2:TFrom2;
......frm2:=TForm2.Create(Applocation);
//可以设置frm2的一些属性
//然后
try
frm2.showmodal;
finally
frm2.free;
end;