答案 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;
要完成: - )