我有分数杂你!100分一个小问题????(100分)

Y

yxp132

Unregistered / Unconfirmed
GUEST, unregistred user!
动态创建窗体时Form2:=TForm2.Create(self)
参数 Self、NIL 和 Application有什么不同??请大家帮忙解决!
 
1。self 和sender
 

在事件处理程序参数表中,至少含有一个参数Sender,它代表触发事件处理程序的
构件,如在上例中,Sender就指Button2,有了Sender参数,可以使多个构件共用相同的
事件处理程序,如下例:
  Procedure Tform1.Buttonclick(Sender:Tobject);
   Begin
  If sender=button1 then
     Label1.caption:=′看庭前花开花落′
  Else
    Label2.caption:=′望天上云卷云舒′
   End;
  在此例中,Button1,Button2共用了Buttonclick事件处理程序。
  Self是指所编的程序范围是在哪一个类中,Delphi中大都在窗体范围内编程,因此
,self即指窗体,如果在编写一个类或是一个组件,则self指该类或组件。我们在函数
或过程的声明中可看出self是代表哪个组件,即self代表‘.’号之前的组件,如在第一
个例子中,self代表Tform1。另外应注意,self只能用在类方法中,而不能用在过程或
函数中,如下例用法是错的:
Function a1(B:Integer):Integer;
 Begin
  ……
  Button:=tbutton.create(self);……
 End;   
 
Tform.Create(self)与Tform.Create(Application)的区别是二者的属主(Owner)不同,
一个是在其中创建Form的控件(如一个TForm),一个是Application对象。
Owner是谁谁就负责保证该Form被释放,也就是说你不必显示地调用该Form的Free方法。

实际使用中self和Application的效果没什么不同,只是负责释放的Owner不同而已。但Create(nil)不一样,用Create(nil)创建
的对象必须手工自己释放。
 
此问题还是有哪不懂,请大家帮忙再解决一下!
 
self和application还是有一点区别的,比如我在form2(不是MainForm)里创建了一个
form3,如果是:TForm3.create(self)那么form2关闭后,form3也释放了。如果是
TForm3.create(Application),那么只有程序关闭或者显式释放form3才free.
 
self和application还是有一点区别的,比如我在form2(不是MainForm)里创建了一个
form3,如果是:TForm3.create(self)那么form2关闭后,form3也释放了。如果是
TForm3.create(Application),那么只有程序关闭或者显式释放form3才free.
 
多人接受答案了。
 
顶部