Как сделать собственное свойство компонента?

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

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

1 ответ

Решение

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

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;
Другие вопросы по тегам