런타임시 코드에서 "사실 이후"이벤트를 항상 연결할 수 있습니다. (양식을 작성한 후 가장 가능성이 권리를) 다음
type
TEventHolder = class
private
FSFActivate: TNotifyEvent;
published
property SavedFormActivate : TNotifyEvent
read FSFActivate write fSFActivate;
end;
type
TMainForm = class(Tform)
:
SavedEvents : tStringList;
procedure ChildFormActivate(Sender: TObject);
procedure InitChildForm(MdiForm:TForm);
end;
procedure TMainForm.ChildFormActivate(Sender: TObject);
var
i : integer;
begin
// your special processing here this is called for the child form.
i := SavedEvents.IndexOf(ClassName);
if i <> -1 then
tEventHolder(SavedEvents.Objects[i]).SavedFormActivate(Sender);
end;
procedure TMainForm.InitChildForm(MdiForm:TForm);
var
OrigEvents : TEventHolder;
begin
if not Assigned(SavedEvents) then
SavedEvents := tSTringlist.create;
if Assigned(MdiForm.OnActivate) then
begin
OrigEvents := tEventHolder.create;
OrigEvents.SavedFormActivate := MdiForm.OnActivate;
SavedEvents.AddObject(MdiForm.ClassName,OrigEvents);
end;
MdiForm.OnActivate := ChildFormActivate;
end;
를 프로그램의 일부 지점에서 제네릭에 이벤트 핸들러를 설정 InitChildForm 전화 : 기본적으로 다음과 같은 형태 일반적인 OnActivate를 만듭니다. 물론 메인 폼 클로저에서 SavedEvents (및 링크 된 객체)를 해제해야 할 것입니다.
감사합니다. 마지막으로 나는 WH_CBT 플래그를 사용하여 후크 SpTBXLib에서 코드를 사용하여 그것을 해결 ... :) – migajek
안녕 ryan, 그 구성 요소를 시도하고 싶지만 지원 웹 사이트는 나에게 오류 403 - 금단의 (당신은 당신은 특권이 없습니다.) –
@Alin Sfetcu, 최근 호스팅 서비스를 변경했으며 아직 모든 링크와 포럼을 다시 설치하지 않았습니다. 진실을 말하면 나는 이미 지원 포럼이 운영되고 있다고 생각했습니다. 최대한 빨리 살펴 보겠습니다. 미안하다. 내가 말했듯이 Torry 사이트 사본은 여전히 작동해야합니다. –