如果我将父控件传递给Create而不是分配Parent属性,为什么不出现我的新控件?

时间:2012-12-12 16:11:30

标签: delphi lazarus language-concepts

在拉撒路我正在尝试这个:

TabSaveButton := TButton.Create(nil);
with TabSaveButton do
  begin
    Parent:=NewTab;
    Width:=75;
    Height:= 25;
    Top:=530;
    Left:=715;
    Caption:='Save';
  end;

它有效。即,我得到了按钮,它是可点击的,它是动态创建的标签页的子项。

但是以下显示按钮,也没有错误:

TabSaveButton := TButton.Create(NewTab);
with TabSaveButton do
  begin
    Width:=75;
    Height:= 25;
    Top:=530;
    Left:=715;
    Caption:='Save';
  end;
  1. 为什么第二种方法不起作用?

  2. 这对Lazarus和Delphi都有同样的效果吗?

1 个答案:

答案 0 :(得分:4)

Create的参数设置控件的所有者。所有者是负责释放相关组件的组件。例如,如果释放一个组件,那么它所拥有的所有组件也将被释放。 是完全不同的事情。它是托管相关控件的窗口(控件)。

Delphi和Lazarus在这里没有区别。