以前学过VB,刚学delphi,经常看到下列语句:
var
  Button:TButton;
begin
  Button:=TButton.Create(self);
  Button.Parent:=self;
  Button.Width:=30;
  ......
end;
  这里Button是一个变量,但为什么可以接受一个新创建的控件?

解决方案 »

  1.   

    Button:TButton;表明这个Button是属于TButton这个类
    但是你要用这个实体Button,就要创建,下面就是创建的语句,相当于你在设计阶段从面板上
    拖一个button下来一个效果,不创建怎么应用呢?
    Button:=TButton.Create(self);
      Button.Parent:=self;
      Button.Width:=30;
      

  2.   

    //Button:=TButton.Create(self);
    在delphi的ObjectPascal中,凡VCL类声明的变量都是一个指针,也就是仅占用4个字节,TButton.Create(self);调用TButton的构造函数在分配的堆内存上构建一个对象,并将占用地址赋给Button这个指针,但注意的是要调用Button的成员并不需要解除引用:
      Button^.width:=30;//没有必要,虽然没错
    VB中没有指针的概念,不知我说清楚了没有。
      

  3.   

    我以前学过一点C++,并未深入,也没用它作过开发,但指针这章我觉得掌握得没问题,
    谢谢两位,特别是青云兄的指点,我想我明白了,VCL类对象都是指针,但Ide对其还是作了一些处理,这似乎有点象C++的引用。