Компонент родительского компонента при создании - PullRequest
3 голосов
/ 28 февраля 2012

Я хочу иметь возможность ограничить место создания компонента.

Как, например, TMyChild может быть TButton, а TMyParent может быть TPanel, и когда я помещаю MyChild в другой компонент, я хочу, чтобы MyChild проверил, он создается в TMyParent / TPanel или нет.

Если это так, то хорошо, давайте сделаем это, если он НЕ создан в TMyParent / TPanel, затем отмените создание TMyChild и отображение сообщения, которое говорит что-то вроде: «Извините, MyChild должен быть создан в MyParent!».

Спасибо!

1 Ответ

9 голосов
/ 28 февраля 2012

Вы должны переопределить метод Controls.TControl.SetParent .

  TMyChild = class(TControl)
  protected
    procedure SetParent(AParent: TWinControl); override;
  end;


procedure TMyChild.SetParent(AParent: TWinControl);
begin
  if (AParent <> nil) then
  begin
    if not (AParent is TMyParent) then
      raise Exception.CreateFmt('Sorry, MyChild needs to be created in MyParent!', [ClassName]);
  end;
  inherited;
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...