Конференция "Компоненты" » Как в своем компоненте подключиться к событиям формы
 
  • stas1 (27.01.09 10:33) [0]
    Как в своем компоненте подключиться к событиям формы  (OnShow, OnHide)
  • {RASkov} © (27.01.09 10:40) [1]
    Что это значит?
  • stas1 (27.01.09 11:04) [2]
    Необходимо разработать компонент в котором бы вызывались события OnShow и OnHide при визуализации и скрытии формы на котором он установлен
  • Игорь Шевченко © (27.01.09 11:44) [3]
    type
     TMyComponent = class(TComponent)
     private
       FSavedOnShow: TNotifyEvent;
       procedure SetEvents;
       procedure MyFormShow (Sender: TObject);
     protected
       procedure Loaded; override;
     end;

    procedure TMyComponent.Loaded;
    var
     Loading: Boolean;
    begin
     Loading := csLoading in ComponentState;
     inherited Loaded;
     if not (csDesigning in ComponentState) then
     begin
       if Loading then
          SetEvents;
     end;
    end;

    procedure TMyComponent.SetEvents;
    begin
     if Owner is TCustomForm then
     begin
       with TForm(Form) do begin
         FSavedOnShow := OnShow;
         OnShow := MyFormShow;
       end;
     end;
    end;

    procedure MyFormShow (Sender: TObject);
    begin
     //
    end;



    как-то так
  • DimaBr © (27.01.09 13:36) [4]
    Вообще вопрос сложный, поскольку существует ряд факторов. Например динамическое назначение события в OnCreate формы. Если сильно не стараться, то  SetEvents нужно провести в конструкторе, поскольку при динамическом создании компонента Loaded не наступит.
  • Игорь Шевченко © (27.01.09 17:25) [5]
    DimaBr ©   (27.01.09 13:36) [4]


    > Если сильно не стараться, то  SetEvents нужно провести в
    > конструкторе, поскольку при динамическом создании компонента
    > Loaded не наступит.


    Верно. Вместо Loaded надо перекрыть AfterConstruction.
    Впрочем, RX старенький, ему простительно
 
Конференция "Компоненты" » Как в своем компоненте подключиться к событиям формы
Есть новые Нет новых   [134464   +62][b:0][p:0.001]