在多文档程序中如何不让我的窗口多次创建
我的窗口是运态建的我用if Not Assigned(form1) then form1:=Tform1.create(application);
form1.show;
我的窗口是运态建的我用if Not Assigned(form1) then form1:=Tform1.create(application);
form1.show;
解决方案 »
- 请大家帮忙解决一个if语句中的问题啊,谢谢啦!
- Delphi写的Webservices,IIS的应用保护设置?
- 高分求解:Multiple _step operation generated errors,check each Status
- CCC_WH进来领分CCC_WH进来领分
- 如何往Listview添加数据?
- 听说QUERY结合SQL语句可以做得到,说说看
- opendialog与savedialog的哪一个属性表示,被选择文件的路径?
- 急!急!有关DLL问题!
- 如何在程序里设置Excel数据格式
- form2.print打印似的字体很粗糙,请教如何解决?
- 100分,急问大家,请问怎样用Delphi调用VC写的com组件?谢谢。
- Spcomm问题,急急!!
直接再次创建就行了,系统自动给form取名
form1:=nil;
if Form <> nil then
begin
Form.Free;
Form := nil;
end;
sClassName : String;
TheHandle : THandle;
begin
sClassName := TheFormClassName;
TheHandle := FindWindow(Pchar(s),Nil);
if TheHandle <> 0 then
ShowMessage('Exist') ;
form1:=Tform1.create(application);
form1.show;
注意:form1应该是个临时变量,创建form后,就不要用它了,然后释放代码如同bigysw(大花脸) 所说:
在form1close中,写入下代码,释放所占资源。
action :=caFree;这样的话就可以有多个实例。2、手工释放:可以考虑将代码编写为如下形式:form1:=Tform1.create(application);
form1.showmodal;
form1.free;
form1 := nil注意:form1也应该是个临时变量不过这样做就健不了多个实例了,可以用一个动态数组保存指向Form的变量
创建时加入数组,释放时删出数组
begin
form1:=Tform.Create(application);
form1.BringToFront;
end
else
form1.BringToFront;
"看看我们提交的时间,没看到你的回复啊" , ????
--------------------------------------------------- 多文档程序中如何不让我的窗口多次创建
他的意思是 :只让窗口创建一次 对吧 ,那么那么写可以呀,我都用过的 是不是我没弄懂意思 ?
我对form1.free不赞成使用。
推荐:
destructor TFreightItemFormat.Destroy;
begin
FreeAndNil(FSrc);
end;
不怕多创建
在做一个多文档的程序时你在菜单上要动态的建立一个子窗口那么你是
如何判断这个窗口已经存了,
FBSM_SHXX:=TFBSM_SHXX.create(self);
FBSM_SHXX.show;
在关闭时我也把它给free了但是用Assigned(FBSM) 还是可以找到的(实际上我已给free了),我是想我在点菜单时如果这个窗口还在的话那么我就把它给最大化就行了否则的话我再给它运行
FBSM_SHXX:=TFBSM_SHXX.create(self);
FBSM_SHXX.show;
在主窗口中: if not Assinged(FBSM_SHXX) then //或者if FBSM_SHXX = nil
FBSM_SHXX:=TFBSM_SHXX.create(nil);
FBSM_SHXX.BringToFront;
FBSM_SHXX.WindowsState:=wsMaximized;
——————————————————————————————————————————————————
在子窗口的OnClose中: FBSM_SHXX.Free;
FBSM_SHXX:=nil;