-
Как в своем компоненте подключиться к событиям формы (OnShow, OnHide)
-
Что это значит?
-
Необходимо разработать компонент в котором бы вызывались события OnShow и OnHide при визуализации и скрытии формы на котором он установлен
-
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; как-то так
-
Вообще вопрос сложный, поскольку существует ряд факторов. Например динамическое назначение события в OnCreate формы. Если сильно не стараться, то SetEvents нужно провести в конструкторе, поскольку при динамическом создании компонента Loaded не наступит.
-
DimaBr © (27.01.09 13:36) [4]
> Если сильно не стараться, то SetEvents нужно провести в > конструкторе, поскольку при динамическом создании компонента > Loaded не наступит.
Верно. Вместо Loaded надо перекрыть AfterConstruction. Впрочем, RX старенький, ему простительно
|