如何获取和关闭动态创建的 Form ?(100)

  • 主题发起人 主题发起人 tom12345
  • 开始时间 开始时间
T

tom12345

Unregistered / Unconfirmed
GUEST, unregistred user!
如何获取和关闭动态创建的 Form ?
 
1.你创建form是就把这个form用个变量保存起来,关闭时还用这个变量操作比如var tmpfrm:tform;...begin tmpfrm:=tyourform.create; ...end;begin tmpfrm.close; tmpfrm.free; tmpfrm:=nil;end;2.通过form的caption查...var h:thandle;begin h:=findwindow(nil,caption); if h<>0 then PostMessage(h,WM_QUIT,0,0);end;
 
在Form 的onclose 写   FreeAndNil(From);
 
TProcDelHandle = procedure(aHandle: HWND) of Object;FList: TList;主窗口定义私有事件procedure DelOneFormHanle(aHandle: HWND);//这个事件按HANDLE查找FList,然后删除列表数据.创建时保存: Form1 := TForm1.Create(nil);Form1.DelMyHanle := Self.DelOneFormHanle;FList.Add(Form1.Handle);Form1定义属性property DelMyHanle: TProcDelHandle read FDelMyHanle write FDelMyHanle;Form1中ONCLOSE写:if Assigned(FDelMyHanle) then FDelMyHanle(Self.Handle);查找就不用说了吧,如果同样想保存FORM类型,定义一个Record保存到FList就可以了
 
各位大侠,能写详细些吗?
 
用 Screen.Forms,由于每次建立的Form,delphi的TScreen已经记录了,你只需要判断一下,每一个Form的标签是不是你需要的,就行了吧vari: integer;beginfor i := 0 to Screen.FormCount-1 dobeginif Screen.Forms.Caption = 'test1' thenScreen.Forms.close;end;end;
 
可以直接通过free来释放掉,或者建议你不要用MDI窗体~现在delphi很流行用TABSHEET+FORM 来显示主子窗体,这样效果也很不错的
 
如果要给自动创建的Formp写 onclose 事件,应怎么写?
 
如果要给自动创建的 Form 写 onclose 事件,应怎么写?
 
来自:tom12345, 时间:2009-1-15 9:46:27, ID:3939922如果要给自动创建的 Form 写 onclose 事件,应怎么写? --------------------FORM的EVENT页面双击那个CLOSE就可以了。另外,建议在FORM的DESTROL里来释放,不要在CLOSE里释放,释放时不要用DESTROY要用FREE,因为用FREE的话,在DESTROY前他会检查FORM的状态。
 
luoyanqing119, 双击CLOSE是可以关闭自动创建的 Form,但Screen.FormCount仍不变,所以想在自动创建的 Form 写 onclose 事件。如按你所说的在 FORM 的 DESTROY 里来释放,应如何写?
 
想在screen.formcount里减少不需要你手动释放当你把form free的时候就会自动在formcount里减一form close的时候并没有释放,只是把这个form隐藏了而已,具体你看看from的close方法就知道了,只要不是mainform实际上是调用了hide方法所以,如果你希望form close的时候释放掉有2个办法:1.在onclose事件里设置Action:=caFree;2.不要用close,直接调用freeandnil(form);
 
delphi 开发人员指南5 讲的很清楚了。
 
hs-kill,可是如何给自动创建的 Form 写 onclose 事件呢?
 
procedure TForm1.TmpFormClose(Sender: TObject; var Action: TCloseAction);begin Action:=caFree;end;var tmpform:tyourform;begin tmpform:=tyourform.create(nil); tmpform.onclose:=TmpFormClose;end;
 
hs-kill, 还是不行啊。
 
没有喂好。
 
hs-kill, 编译通过,运行出错:Access violation at address XXXXXX in module ......
 
把你整个的调用代码贴出来看看
 
后退
顶部