菜鸟级问题(100分)

  • 主题发起人 主题发起人 abcxca
  • 开始时间 开始时间
A

abcxca

Unregistered / Unconfirmed
GUEST, unregistred user!
1,如何创建一个窗口而让delphi不自动创建,在程序中当用到时才建.用完后再释放
资源,这样会有出现内存漏洞吗? (如果是频繁地创建和释放呢?)
2,如果A窗为主窗,在A中建B窗,用show调用,B中再创建C,D,E,都用show调用,这样,如何
让,B,C,D,E各窗在关闭时自动释放资源,同时,如果b窗关闭的话,如果c,d,e中有还没关闭的,也一起关闭并释放资源..
 
1:设计窗口时将需动态创建的窗口从Project Options中的Auto-Create Forms去掉
2:窗口需要关闭时调用close就可以释放资源
关闭b的时候检测c、d、e是否存在,存在的化先关闭
 
生成时检查一下,关闭用realease
 
1:设计窗口时将需动态创建的窗口从Project Options中的Auto-Create Forms去掉,在程序中当用到时:窗体。create(application),show。
2:窗口需要关闭时调用close,在窗体的onclose事件中窗体。free;在窗体的distrory事件中:窗体:=nil就可以释放资源
关闭b的时候检测c、d、e是否存在,存在的化先关闭
 
用什么方法判断:c、d、e是否存在?
 
Assigned()来检测是否存在
 
//如果创建则只显示,否则创建显示。
if not Assigned(Form3) then
Form3 := TForm3(ShowMDIForm(TForm3))
else
Form3.show;


//创建函数
function TmainForm.showMDIForm(aFormClass: TFormClass): TForm;
begin
screen.Cursor := crHourGlass;
lockwindowupdate(mainForm.handle);
result := aFormClass.Create(Application);
with result do
begin
// WindowState := wsMaximized;
show;
lockwindowupdate(0);
screen.Cursor := crDefault;
end;
end;
 
关于你的这些问题,你可去找一下delphi5开发人员指南中的第四章节来好好看一下的,上面说得很详细的
 
单纯的CLOSE从窗体form2是不会释放它的,你可以将在窗体的OnClose事件中将action:=cafree,不过在下次调用之前要用id not Assigned(form2) then form2:=TForm2.Create(application);创建窗体;而且要在form2的OnDestroy事件中将Form2设为nil,这是防止Assigned失败。
 
多人接受答案了。
 
后退
顶部