
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;
我调用以后,主程序就不能调用其他单元了,但是他的就可以再继续调用其他单元 展开
procedure TMainForm.raintpExecute(Sender: TObject);
var
fff : TForm;
begin
fff := tratform.Create(application);
fff.ShowModal;
end;
我调用以后,主程序就不能调用其他单元了,但是他的就可以再继续调用其他单元 展开
3个回答
展开全部
如果你的tratform是系统自动创建的,就不需要tratform.Create(application),直接ShowModal即可。
如果不是自动创建的,你这个调用还需要加入fff.free,释放资源。
需要说明的是,你的tratform的单元,需要引用一下才能调用。
uses tratformUnit;
fff := tratform.Create(application);//创建对象
fff.ShowModal;//模态显示
fff.free;//释放对象
如果不是自动创建的,你这个调用还需要加入fff.free,释放资源。
需要说明的是,你的tratform的单元,需要引用一下才能调用。
uses tratformUnit;
fff := tratform.Create(application);//创建对象
fff.ShowModal;//模态显示
fff.free;//释放对象
追问
tratform是我自己创建的,我看别人的例子上也是自己创建的。但是我就不知道为什么他只用一句话就可以调用并显示。而我却不行。
追答
用一条语句实现想要的功能,只要重写Create就行了。但是,我强烈建议你不要那样写,因为这不利于你的代码维护。
如果想用fff := tratform.Create(application);实现显示窗体的功能,只要在重写Create中的最后加上显示窗体的语句就行了。
展开全部
那你不用ShowModal;用show方法,不说调用一个就是调用一万个都可以,只要你的内在够用.
另外,动态窗口,它的启动时间是有规定的,在工程选项设置中,要把动态创建窗口放到动态创建列表框中.这样程序加载时,就不加载动态创建窗口,也就不占内存.设立动态创建窗口的目的就是节省程序所占内存,还有动态窗口它是自动初始化的,如果你的动态窗口上有文字编辑框一类的组件,它每次启动时,这些框中的字符都是被清空的.而非动态窗口,如果不用代码清除字符,窗口再次被调用时,上次写入字符仍然在上面.
syhxin先生说的很好,"用一条语句实现想要的功能,只要重写Create就行了。但是,我强烈建议你不要那样写,因为这不利于你的代码维护。"
调用动态创建窗口三条基本语句要用上,一是创建;二是模态显示;三是FREE销毁它,你说别人的还可以调用其它窗口,这就不符合建立动态窗口的初衷了,动态窗口就是要办完事就销毁.
另外,动态窗口,它的启动时间是有规定的,在工程选项设置中,要把动态创建窗口放到动态创建列表框中.这样程序加载时,就不加载动态创建窗口,也就不占内存.设立动态创建窗口的目的就是节省程序所占内存,还有动态窗口它是自动初始化的,如果你的动态窗口上有文字编辑框一类的组件,它每次启动时,这些框中的字符都是被清空的.而非动态窗口,如果不用代码清除字符,窗口再次被调用时,上次写入字符仍然在上面.
syhxin先生说的很好,"用一条语句实现想要的功能,只要重写Create就行了。但是,我强烈建议你不要那样写,因为这不利于你的代码维护。"
调用动态创建窗口三条基本语句要用上,一是创建;二是模态显示;三是FREE销毁它,你说别人的还可以调用其它窗口,这就不符合建立动态窗口的初衷了,动态窗口就是要办完事就销毁.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
tratform应该只是你看到的代码中的一个窗口中一个类,不是Delphi提供的,是人家自己写的。
你应该改成TForm.Create(Application);
你应该改成TForm.Create(Application);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询