1
TMyPanel = class(TPanel)
public
  procedure AfterConstruction; override;
end;

procedure TMyPanel.AfterConstruction;
begin
  inherited AfterConstruction;
  Caption := '';
end;

我想在构建过程中清除标题,但是这段代码没有按我的预期工作。它不会将标题设置为空字符串。如果我将“”(空格)分配给 Caption,它将保留,但这不是一个合适的解决方案。

我正在使用德尔福 2006。

4

1 回答 1

5

试试这个:

uses
  ExtCtrls, StrUtils;

type
  TMyPanel = class(TPanel)
  public
    procedure Loaded; override;
  end;

procedure TMyPanel.Loaded;
  inherited;
  Caption := EmptyStr;
end;

经过测试,在 XE2 中似乎可以正常工作。

编辑

这在 OP 中显示的方法不起作用的情况下起作用的原因是因为在从 DFM 文件分配对象的属性值之后Loaded调用。

重写的调用AfterConstruction发生在对象的初始创建之后,但在从表单的 DFM 分配属性值之前,这意味着您在方法中分配的任何属性值都AfterConstruction将立即被为同一属性指定的任何值替换在 DFM 中。

Loaded发生施工订单的最后,因此您分配的任何值都将是最终的。

于 2012-06-13T10:50:04.990 回答