delphi7 调用form的问题

我新建一个form然后通过主程序中的mainmenu和actionmanager调用,但是我调用只能通过以下语句调用,而我看到有个程序里面是直接通过tratform.Cr... 我新建一个form 然后通过主程序中的mainmenu 和 actionmanager调用,但是我调用只能通过以下语句调用,而我看到有个程序里面是直接通过 tratform.Create(application);就调用了。我用该语句却调用显示不出来,请高手帮我解释一下。
procedure TMainForm.raintpExecute(Sender: TObject);
var
fff : TForm;
begin
fff := tratform.Create(application);
fff.ShowModal;
end;
我调用以后,主程序就不能调用其他单元了,但是他的就可以再继续调用其他单元
展开
 我来答
景茹炜L8
2012-08-23 · TA获得超过481个赞
知道小有建树答主
回答量:617
采纳率:0%
帮助的人:368万
展开全部
如果你的tratform是系统自动创建的,就不需要tratform.Create(application),直接ShowModal即可。
如果不是自动创建的,你这个调用还需要加入fff.free,释放资源。

需要说明的是,你的tratform的单元,需要引用一下才能调用。
uses tratformUnit;

fff := tratform.Create(application);//创建对象
fff.ShowModal;//模态显示
fff.free;//释放对象
追问
tratform是我自己创建的,我看别人的例子上也是自己创建的。但是我就不知道为什么他只用一句话就可以调用并显示。而我却不行。
追答
用一条语句实现想要的功能,只要重写Create就行了。但是,我强烈建议你不要那样写,因为这不利于你的代码维护。
如果想用fff := tratform.Create(application);实现显示窗体的功能,只要在重写Create中的最后加上显示窗体的语句就行了。
liu55721
2012-08-25 · TA获得超过922个赞
知道大有可为答主
回答量:1861
采纳率:100%
帮助的人:854万
展开全部
那你不用ShowModal;用show方法,不说调用一个就是调用一万个都可以,只要你的内在够用.
另外,动态窗口,它的启动时间是有规定的,在工程选项设置中,要把动态创建窗口放到动态创建列表框中.这样程序加载时,就不加载动态创建窗口,也就不占内存.设立动态创建窗口的目的就是节省程序所占内存,还有动态窗口它是自动初始化的,如果你的动态窗口上有文字编辑框一类的组件,它每次启动时,这些框中的字符都是被清空的.而非动态窗口,如果不用代码清除字符,窗口再次被调用时,上次写入字符仍然在上面.
syhxin先生说的很好,"用一条语句实现想要的功能,只要重写Create就行了。但是,我强烈建议你不要那样写,因为这不利于你的代码维护。"
调用动态创建窗口三条基本语句要用上,一是创建;二是模态显示;三是FREE销毁它,你说别人的还可以调用其它窗口,这就不符合建立动态窗口的初衷了,动态窗口就是要办完事就销毁.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
军思博0Hn
2012-08-23 · TA获得超过1028个赞
知道小有建树答主
回答量:635
采纳率:0%
帮助的人:358万
展开全部
tratform应该只是你看到的代码中的一个窗口中一个类,不是Delphi提供的,是人家自己写的。

你应该改成TForm.Create(Application);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式