как сделать собственное свойство компонента? - PullRequest
6 голосов
/ 21 января 2012

Мне нужна помощь, чтобы создать свойство элемента управления, чтобы при щелчке на нем всплыло диалоговое окно с настройками.так же, как TPicture.

Любая идея или предложения?

1 Ответ

8 голосов
/ 21 января 2012

Если ваш класс используется как свойство других компонентов, и вы хотите использовать инспектор объектов для вызова вашего диалогового окна, то вам нужно реализовать и зарегистрировать пользовательский редактор свойств, например:

interface

uses
  DesignIntf, DesignEditors;

type
  TMyClassProperty = class(TPropertyEditor)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
  end;

procedure Register;

implementation

uses
  MyClassUnit;

procedure TMyClassProperty.Edit;
begin
  with TMyDialog.Create(nil) do
  try
    ShowModal;
  finally
    Free;
  end;
end;

function TMyClassProperty.GetAttributes: TPropertyAttributes;
begin
  Result := inherited GetAttributes + [paDialog];
end;

procedure Register;
begin
  RegisterPropertyEditor(TypeInfo(TMyClass), nil, '', TMyClassProperty);
end;
...