经常在delphi中看到要动态创建一个变量用到了self

var bitmap:Tbitmap;
begin
 bitmap1:=TBitmap.create(self);
这里的self到底是什么意思?
但有写变量的动态创见又没有用到self
就是一个
var
 ***:T***;
begin
 ***:=T****.creat;
这两这又有什么区别?

解决方案 »

  1.   

    指本类,也就是Self被引用的类。比如若在类TMyClass内引用了Self,那么Self=TMyClass
      

  2.   

    bitmap1:=TBitmap.create(self);
    是指bitmap1的所有者为form1(所在窗体)......
    而变量或对象的create是在内存中初始化实例......
      

  3.   

    bitmap1:=TBitmap.create(self);
    这里的self参数是指定bitmap1的拥有者
      

  4.   

    在一个类的方法中,Self指该类的实例,具体和这句代码的位置有关
    例如: 如果在以下代码段中,self指的就是Form2
         procedure TForm2.FormCreate(Sender: TObject);
         begin
           Form1:=TForm1.create(self);
         end;
           如果在以下代码段中,self指的就是Form3
         procedure TForm3.FormCreate(Sender: TObject);
         begin
           Form1:=TForm1.create(self);
         end;
       但无论如何都不是Form1,因为一个窗体不能以自己作为拥有者
      

  5.   

    to gzyzljk(正龙剑客),他声明的那个bitmap不是窗体的,因此那个self也不是对窗体的引用
    你仔细看一下,如过是窗体的一个成员的话,应该在窗体类中定义
    而他是在变量声明中定义的
      

  6.   

    self
    [self]
    n.自己, 自我, 本性, 本质, 本人, 私心
    vt.使近亲繁殖, [植]使自花授精
    vi.[植]自花授精
    adj.同一的
      

  7.   

    var bitmap:Tbitmap;//声明,告诉系统你要一个TBitmap的类。
    begin
     bitmap1:=TBitmap.create(self);//建立该类的实例,系统分配内存。
    这个SELF是bitmap1的所有者,你也可以用application,nil的。