Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2011, 16:01   #1
GydruS
 
Регистрация: 27.07.2011
Сообщений: 6
Вопрос Реакция из компонента на OnShow формы...

Добрый день, уважаемые специалисты!

Есть задача - в невизуальном компоненте (потомок TComponent) нужно отреагировать на событие OnShow формы, на которой он расположен.

Я делаю это так:

Код:
TMyComponent = class(TComponent)
  private
    FOwnerOnShow: TNotifyEvent;
    procedure FShow(Sender: TObject);
    ...
...
constructor TMyComponent.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  if AOwner is TForm then begin
    FOwnerOnShow := (FOwner as TForm).OnShow;
    (FOwner as TForm).OnShow := FShow;
  end;
end;
...
procedure TMyComponent.FShow(Sender: TObject);
begin
  // do something
  if Assigned(FOwnerOnShow) then FOwnerOnShow(Sender);
end;
Проблема в том, что FOwnerOnShow = nil в момент Create компонента... Как быть?
GydruS вне форума Ответить с цитированием
Старый 27.07.2011, 16:25   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Как быть?

перенести код

Код:
  if Owner is TForm then begin
    FOwnerOnShow := (Owner as TForm).OnShow;
    (Owner as TForm).OnShow := FShow;
  end;
из Create() в перекрытый Loaded().
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 28.07.2011, 10:56   #3
GydruS
 
Регистрация: 27.07.2011
Сообщений: 6
По умолчанию

veniside, спасибо за ответ!
Ваш способ работает!
Но, как оказалось - работает и мой )
Просто, каким-то образом в инспекторе объектов пропала связь OnShow формы и ее метода ShowForm. Но сам ShowForm был в коде формы - что и породило мое непонятие ситуации...
В общем, тему можно закрывать, спасибо!
GydruS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реакция на кнопку "развернуть" на бордюре формы Ksardas13 C++ Builder 3 16.05.2011 04:11
реакция на наведение указателя на участок формы. Canvas skalt12 Общие вопросы Delphi 4 11.08.2010 13:09
Спрятать панель после отсчета времени в обработчике OnShow формы Человек_Борща Общие вопросы Delphi 8 22.05.2010 17:49
Как в своем компоненте подключиться к событиям формы (OnShow, OnHide) Stas1 Компоненты Delphi 4 27.01.2009 13:28
Событие OnShow формы Antoha Общие вопросы Delphi 4 12.02.2008 21:13