多窗体调用问题(100分)

  • 主题发起人 主题发起人 xmdsj
  • 开始时间 开始时间
X

xmdsj

Unregistered / Unconfirmed
GUEST, unregistred user!
目前正在开发一套程序,中等规模,窗体约有50个左右
请问各窗体间如何调用比较合理.
程序中有一个主窗体,大多数的功能都是从主窗体中调用

请问是用 form.hide form.show 方法好
还是用application.createform(form)
或者更好的方法
 
我认为自动创建好一点
 
application.createform(form)
动态建立!调用完就FREE
 
窗口这么多,可以考虑动态创建。可以节省资源。

显示时:
subform:=TSubForm.create(Mainform);
subform.show; // showmodal

关闭时:
subForm.free;
 
当然是动态生成、调用的好,节省资源,条理清晰
unit aaa
function showme :boolean;
begin
myform := Tmyform.createform(application);
result := myform.showmodal = mrok;
myform.free;
end;

调用
aaa.showme;

同类型的窗体操作建议把网格浏览写在一起,
一般左边是功能树(需要另加功能码),右边做网格显示(类似WINDOWS的控制台)
(可以把所有的查询SQL、字段显示写到数据库里,动态调用,那样就更省力了,随便客户怎么改)
根据功能码,模式调用资料编辑窗体
如果编辑简单,可以与网格显示做到一起,通过动态窗体嵌入(或者FRAME),
这样做的好处是不必到处重复编码,程序维护简单

"中等规模,窗体约有50个左右 ",你真幸运,偶的已经超过了80个窗体,还只完成了一半
 
主窗体、同级窗体 show
子窗体动态建立
 
当然是动态创建的好。只是如果不是继承体系,要注意释放的时候置为nil
 
用MDI窗体,其中主窗体是父窗口,其他是子窗口,密码登录、系统设置等模态窗口为普通窗体。
具体实现代码如下:
创建子窗口时:
begin
if not assigned(ChildForm1) then ChildForm1:=TChildForm1.Create(Application);
ChildForm1.BringToFront;
end;
别忘了在ChildForm1的Close事件中加入'Action:=caFree;'语句,Destroy事件中加入'ChileForm1:=nil;'语句。

创建普通窗体时:
begin
fmForm1:=TfmForm1.Create(Application);
fmForm1.ShowModal;
fmForm1.Free;
end;
 
多人接受答案了。
 
后退
顶部