以前学过VB,刚学delphi,经常看到下列语句:
var
Button:TButton;
begin
Button:=TButton.Create(self);
Button.Parent:=self;
Button.Width:=30;
......
end;
这里Button是一个变量,但为什么可以接受一个新创建的控件?
var
Button:TButton;
begin
Button:=TButton.Create(self);
Button.Parent:=self;
Button.Width:=30;
......
end;
这里Button是一个变量,但为什么可以接受一个新创建的控件?
但是你要用这个实体Button,就要创建,下面就是创建的语句,相当于你在设计阶段从面板上
拖一个button下来一个效果,不创建怎么应用呢?
Button:=TButton.Create(self);
Button.Parent:=self;
Button.Width:=30;
在delphi的ObjectPascal中,凡VCL类声明的变量都是一个指针,也就是仅占用4个字节,TButton.Create(self);调用TButton的构造函数在分配的堆内存上构建一个对象,并将占用地址赋给Button这个指针,但注意的是要调用Button的成员并不需要解除引用:
Button^.width:=30;//没有必要,虽然没错
VB中没有指针的概念,不知我说清楚了没有。
谢谢两位,特别是青云兄的指点,我想我明白了,VCL类对象都是指针,但Ide对其还是作了一些处理,这似乎有点象C++的引用。