如何将属性添加到将反映在对象检查器上的组件

时间:2011-02-10 17:17:28

标签: delphi ide delphi-7

在Delphi 7中,当向对象添加属性时,如何在对象检查器中看到该属性?

4 个答案:

答案 0 :(得分:14)

制作属性published。例如,

private
  FMyProperty: integer;
published
  property MyProperty: integer read FMyProperty write FMyProperty;

通常,您需要在更改属性时重新绘制控件(或执行其他一些处理)。然后就可以了

private
  FMyProperty: integer;
  procedure SetMyProperty(MyProperty: integer);
published
  property MyProperty: integer read FMyProperty write SetMyProperty;

...

procedure TMyControl.SetMyProperty(MyProperty: integer);
begin
  if FMyProperty <> MyProperty then
  begin
    FMyProperty := MyProperty;
    Invalidate; // for example
  end;
end;

答案 1 :(得分:4)

将该属性添加到已发布的部分,它将使其显示在Object Inspector上,如下所示:

TMyComponent = class(TComponent)
 ...
published
  property MyProperty: string read FMyProperty write SetMyProperty;

答案 2 :(得分:3)

来自docs

  

在已发布的中声明的属性   组件类的一部分   声明可在Object中编辑   检查员在设计时。

答案 3 :(得分:1)

不要忘记组件需要在Delphi中注册(最好是在设计时包中),否则你根本不会在Object Inspector中看到任何内容!

我的意思是......我可以创建一个名为TMyPanel的新TPanel后代,并为其添加一个新的已发布属性:

type
  TPanel1 = class(TPanel)
  private
    FMyName: String;
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
    property MyName : String read FMyName write FMyName;
  end;

但如果您没有使用RegisterComponent注册新类,那么该属性将不会显示在Object Inspector中:

procedure Register;
begin
  RegisterComponents('Samples', [TPanel1]);
end;

要完成: - )