经常在delphi中看到要动态创建一个变量用到了self
如
var bitmap:Tbitmap;
begin
bitmap1:=TBitmap.create(self);
这里的self到底是什么意思?
但有写变量的动态创见又没有用到self
就是一个
var
***:T***;
begin
***:=T****.creat;
这两这又有什么区别?
如
var bitmap:Tbitmap;
begin
bitmap1:=TBitmap.create(self);
这里的self到底是什么意思?
但有写变量的动态创见又没有用到self
就是一个
var
***:T***;
begin
***:=T****.creat;
这两这又有什么区别?
是指bitmap1的所有者为form1(所在窗体)......
而变量或对象的create是在内存中初始化实例......
这里的self参数是指定bitmap1的拥有者
例如: 如果在以下代码段中,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,因为一个窗体不能以自己作为拥有者
你仔细看一下,如过是窗体的一个成员的话,应该在窗体类中定义
而他是在变量声明中定义的
[self]
n.自己, 自我, 本性, 本质, 本人, 私心
vt.使近亲繁殖, [植]使自花授精
vi.[植]自花授精
adj.同一的
begin
bitmap1:=TBitmap.create(self);//建立该类的实例,系统分配内存。
这个SELF是bitmap1的所有者,你也可以用application,nil的。