如:create(self)与create(nil)的区别

解决方案 »

  1.   

    每个类的Create都不一样的,这只是传入的参数不同,具休有什么不同哪要看类的Create的实现了。像TForm,Create的参数是要传入所有都。self就是所有者是创建它的窗口,nil就是不指定有所有者
      

  2.   

    像TForm,Create的参数是要传入所有者
    -------
      不一定,没有谁规定必须传入所有者,TForm.Create(nil)一样可用,只不过新建的FORM没有所有者而已。
      其实解释一下所有者是什么意思就可以了。
      一个继承自TComponent的类,它的构造函数Create都要求一个参数:AOwner,也就是要求提供一个所有者,如果一个TComponent有所有者,那么当所有者被销毁时,这个TComponent自动被销毁----举例来说,一个FORM被销毁时,它所拥有的所有按钮、检查框、文本框....乃至不可视的如TQuery等等被自动被销毁,因为这些控件的所有者都是这个FORM。
      但是TComponent也可以没有所有者,因为所有者并不等于父窗口,一个按钮(所有TWinControl)没有父窗口是不行的(看不到它),但可以没有所有者。
      

  3.   

    某些情况下,参数是owner,某些情况下,参数代表要创建的子类
      

  4.   

    SeaWave(NoSound) 对
    TForm.Create的参数是要传入所有者(或称对象的创建者)
    而NIL则没有创建者
      

  5.   

    Create就一种用法。怎么?还有什么用法。看具体你怎么重载基本的建构函数来写参数。TComponent重载建构函数,并且设置参数AOwner: TComponent然后有自己的一套代码。你也可以写啊。看delphi开发人员指南,可以明白很多。可以设置许多适合的参数。如果不想传递就用空指针传递进取。但是写法不就是一个嘛。还有什么意思吗?
      

  6.   

    有关Form建立的参数,看TComponent的建构函数的写法就都明白了。有必要在这里问吗?
      

  7.   

    你可以写Constructor Create(AOwner: TWinControl);也可以写Constructor CreateEx(AOwner: TWinControl);