请问这三个创建窗口的句子有什么区别?
application.CreateForm(TLoginform,Loginform);
Loginform:= TLoginform.Create(nil);
Loginform:=TLoginform.Create(application); 
希望大侠能讲详细点儿,谢谢!

解决方案 »

  1.   

    1: Application会判断该窗体是否做为主窗体,并且你不需要释放Loginform,Application会负责释放Loginform.
    2: Loginform需要自己释放
    3: 应用程序关闭时,Application会负责释放Loginform.
      

  2.   

    Application.CreateForm为Application指定主窗口的功能,如果Application中有多个Form,Project文件中统一用CreateForm方法创建Form,同时指定第一个CreateForm创建的Form为主窗口Loginform:= TLoginform.Create(nil);
    Loginform:=TLoginform.Create(application);
    Loginform:= TLoginform.Create(self); 拥有者不同Create(nil)需要自己释放
      

  3.   

    create里面的参数主要是用来看是由谁来决定释放自己的,一般有三种方式
    Create(nil); //nil动态建立窗体的时候需要自己释放调用form.Free方法
    Create(self); //当前form(self) Destory的时候,会将动态建立窗体free
    Create(application); //这个是在程序结束的时候,或者调用Application.Terminate的时候会将动态建立的窗体释放
    application.CreateForm(TLoginform,Loginform);//application这个是Delphi VCL程序就有的,用来管理整个程序的,用法个人觉得和Create(application)有点类似。
      

  4.   

    application.CreateForm(TLoginform,Loginform);
    //一般在工程单元出现,project->options->Forms,这里设置的是否自动创建
    //如果没有设置是否自动创建,默认是自动创建的,你可以把左边的移动到右边,
    //那么就需要你手动创建了//下面的就是手动的创建
    Loginform:= TLoginform.Create(nil);
    //参数为nil的时候,那么他是无属主的,需要你手动释放
    Loginform:=TLoginform.Create(application); 
    //这个的属主是application 也就是应用程序,那么应用程序在结束时会自动释放其实每一个控件都有他的属主,当属主销毁时会递归遍历属于自己的控件,销毁他们,最后销毁自己。
      

  5.   

    都是建立一个 LoginForm  ,第一个会检查主窗体是否存在。
                                第二个就是建立一个登录窗
                                第三个就是所者有个管理。