как добавить свойство к компоненту, которое будет отражаться на инспекторе объектов - PullRequest
4 голосов
/ 10 февраля 2011

в Delphi 7, при добавлении свойства к объекту, как можно увидеть это свойство в инспекторе объектов?

Ответы [ 4 ]

14 голосов
/ 10 февраля 2011

Сделать недвижимость 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;
4 голосов
/ 10 февраля 2011

Добавьте это свойство в опубликованный раздел, оно отобразится в Инспекторе объектов, например:

TMyComponent = class(TComponent)
 ...
published
  property MyProperty: string read FMyProperty write SetMyProperty;
3 голосов
/ 10 февраля 2011

Из документов :

Свойства, объявленные в опубликованном разделе объявления класса компонента, доступны для редактирования в Инспекторе объектов во время разработки.

1 голос
/ 11 февраля 2011

Не забывайте, что Компонент должен быть зарегистрирован в Delphi (предпочтительно в пакете времени разработки), иначе вы вообще ничего не увидите в Инспекторе объектов !!!

Я имею в виду... Я могу создать нового потомка TPanel с именем TMyPanel и добавить к нему новое свойство Опубликовано:

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:

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

Просто для завершения: -)

...