关于MDI窗口的问题(100分)

  • 主题发起人 主题发起人 gongmk
  • 开始时间 开始时间
G

gongmk

Unregistered / Unconfirmed
GUEST, unregistred user!
我建了一个主FORM(formstyle: MDIForm), 若干个子FORM(formstyle: MDICHILD)。
问题是,为什么在运行时这些子FORM都自动创建并显示?求解。
 
在项目的选项里面可以设置,那些窗体自动生成!
 
打开你的工程,并设置其Options选项(菜单操作:Project->Options...),
在弹出的对话框中切换到Forms页,将你不想让其自动创建的窗口从auto-create forms列表转移到Available forms中,重新编译!
 
project ->options
在main form中选择你的主窗体
auto-create forms 中是你要自动显示的窗体,
available中是不自动创建的窗体
 
这也给100分,答案同上,分分吧~
 
不必那么麻烦:
打开程序的源代码,即Project单元。把那些形如:
Application.CreataForm(TForm1, Form1);的代码去掉只保留创建MDI主窗体
的代码即可,这里与菜单选项是同步的不过这里方便快捷。
 
这样可以在运行时显示出来:
var
Form2:Tform
begin
Form2:=TForm.Creata(self);
Form2.show;
end;
 
想显示时,也不必楼上的那么麻烦,应该这样:
if not Assigned(Form1) then
Application.CreatForm(TForm1, Form1);//当然要包含单元了。
Form1.Show;
为了实现不重复建窗体,应如下所做:
MDI child的Close里:
begin
Action := caFree;
Form1 := nil;//不要搞错了,Form1要替换成你的MDI child.
end;
 
这样可以在运行时显示出来:
var
Form2:Tform
begin
if Form2=nil then
Form2:=TForm.Creata(self);
Form2.show;
end;
 
to: Yferal
同意你的做法,最好 form1:=nil 放在destory 里
 
同意:WiseAnt
 
不用那么麻烦,就用winseant的方法就行,点菜单Project->Options,切换到Forms页,
将你不想让其自动创建的窗口从auto-create forms列表转移到Available forms中即可。
 
樓上所說都正確…………
 
to shbjkl:
我有我的道理,放在Close中便于集中管理,调试。分开了不好维护。懂不懂?
 
to All:
凭本人的经验,用 Option选项光等就得2分钟左右。并且顺序它不给你调整
用Project 单元最方便快速!
 
谢谢各位。
 
靠!这不打击人吗?没有功劳也有苦劳呀,为什么一分也没有:(
 
就按WiseAnt说的做吧!没错的!
 
后退
顶部