窗体 几种create方法的不同处?
如:
form1:=TForm.create(application);
Application.CreateForm(TForm, Fform1);form1:=application.create(TForm1);
如:
form1:=TForm.create(application);
Application.CreateForm(TForm, Fform1);form1:=application.create(TForm1);
http://community.csdn.net/Expert/topic/3335/3335891.xml?temp=.3940393
用2建立的一定是主窗体,即整个Application只有一个窗体能用此方法建立。
同志,不清楚不要紧,但是不要胡说啊
那你说说吧
1=3么?
3根本是错的
form1:=application.create(TForm1);
是什么意思呢?
TApplication.Create会怎么样?创建一个TApplication实例,那么在这个实例上执行Create又会怎么样呢?把自己重新初始化一遍。也就是说这句语句是把Application初始化以后认为是一个Form1。这个Create的参数是什么呢,TComponent类型的Owner,表示Application的Owner,当这个Owner释放的时候会先释放Application,传入的是什么呢?TForm1,是一个窗口类。所以这句语句编译无法通过。总而言之,这个语句从语义到语法没有正确的地方,大概是楼主匆忙,写错了吧。用2建立的一定是主窗体?
你自己在设计期生成两个自动创建的窗口,再到工程文件看看源码,是什么呢?
Application.CreateForm(TForm1, form1);
Application.CreateForm(TForm2, form2);
一模一样的两句,难道工程有两个主窗口?你再试试把第二句移到第一句前面运行,主窗口是什么呢?会变成Form2;
MainForm属性是否为nil。如果是的话,Application.CreateForm()会把新创建的窗体作为主窗体。一般情况下,不要调用Application.CreateForm(),而要调用窗体本身的Create()。