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」という名前のプロパティが表示されます。それをダブルクリックすると、Name に保存されている TStringList のアイテムがダイアログに表示されます。

このプロパティを他のコンポーネント (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 に答える