0

我为示例组件编写了以下单元:

unit Test;

interface

uses
  System.SysUtils, System.Classes, System.Variants, VCL.Dialogs;

type
  TTest = class(TComponent)
  private
    fName: TStringList;
    { Private declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); Override;
    destructor Destroy; override;
  published
    { Published declarations }
    property Names: TStringList read fName;
  end;

procedure Register;

implementation

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

{TTest }

constructor TTest.Create(AOwner: TComponent);
begin
  inherited;
  fName := TStringList.Create;
  for i:= 1 to 100 do
      fName.Add(IntToStr(i));
end;

destructor TTest.Destroy;
begin
  fName.Free;
  inherited;
end;

end.

现在,当我在 Delphi 上安装它时,在 Object Inspector 中我有一个名为“Names”的属性,我应该双击它,然后一个对话框显示 TStringList 存储在 Name 上的项目。

我想在其他组件(如 TEdit 等)中将此属性设为 Font.Name,当单击 Name 属性时,会显示一个列表,用户可以从中选择一个项目,然后将该项目分配给该属性并显示为对象检查器中的属性值。

4

1 回答 1

5

您需要为您的属性编写一个属性编辑器。这里有一些链接供您阅读,因为这不是一个简单的答案:-

http://www.drbob42.com/delphi/property.htm

http://delphi.about.com/library/bluc/text/uc092501a.htm

http://www.delphicorner.f9.co.uk/articles/comps1.htm

于 2012-11-14T10:23:29.573 回答