窗体 几种create方法的不同处?
如:
  form1:=TForm.create(application);
Application.CreateForm(TForm, Fform1);form1:=application.create(TForm1);

解决方案 »

  1.   

    Owner不同而已什么是Owner就具体看Help了
      

  2.   

    看看这个把
    http://community.csdn.net/Expert/topic/3335/3335891.xml?temp=.3940393
      

  3.   

    1 = 3 只是写法不同
    用2建立的一定是主窗体,即整个Application只有一个窗体能用此方法建立。
      

  4.   

    southdream(南国幽梦) 
    同志,不清楚不要紧,但是不要胡说啊
      

  5.   

    asj(最烦活稀泥)
    那你说说吧
      

  6.   

    前面不是已经说的很清楚了嘛,我还说什么?那说说他为什么是胡说吧
    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;
      

  7.   

    Application.CreateForm()和Create()都用于创建一个窗体的实例.Application.CreateForm()相当于窗体本身的Create(),但Application.CreateForm()会检查
    MainForm属性是否为nil。如果是的话,Application.CreateForm()会把新创建的窗体作为主窗体。一般情况下,不要调用Application.CreateForm(),而要调用窗体本身的Create()。