Q&A

  • ActiveX Form의 Event 처리시..
안녕하세요. ActiveX 초짜 김지홍입니당.

다름이 아니오라 ActiveX Form의 Event 처리에 관한 질문입니다.

OnActivate, OnCreate, OnPaint 이벤트처리를 하는데

OnCreate 이벤트만 처리되어지고. 두이벤트 OnActivate, OnPaint이벤트가

처리되지 않고 있습니다. 제가 모르는 부분이 있는것 같은데 조언 부탁드립니다.

감사합니다.

1  COMMENTS
  • Profile
    김지홍 2001.11.17 00:15
    김지홍 wrote:

    > 안녕하세요. ActiveX 초짜 김지홍입니당.

    > 다름이 아니오라 ActiveX Form의 Event 처리에 관한 질문입니다.

    > OnActivate, OnCreate, OnPaint 이벤트처리를 하는데

    > OnCreate 이벤트만 처리되어지고. 두이벤트 OnActivate, OnPaint이벤트가

    > 처리되지 않고 있습니다. 제가 모르는 부분이 있는것 같은데 조언 부탁드립니다.

    > 감사합니다.



    ^^. 기룡님의 조언으로 문제를 해결했습니다. 기룡님 감사합니다.



    근본적으로 문제를 해결한건 아니고..

    TActiveForm에서는 OnPaint, OnShow.. 등등의 Event 처리가 안되더군요..

    정확한 원인은 모르겠습니다. (근본적인 이유가있을것 같은뎅...)

    편법으로 해결하였는데...

    TForm을 사용 하였습니다.



    Main인 TActiveForm에 Pannel를 추가하고



    New TForm을 새로운 Unit으로 추가하신후 디자인(인터페이스)을 TForm에...



    이런후에 TActiveForm의 OnCreate Event를 잡아 TForm을 TActiveForm에

    Add(Parent)합니다.

    /*********************

    TmpZAddForm := TZAddForm.Create(Panel1);

    TmpZAddForm.Parent := Panel1;

    ***********************/



    내용은 이러하고.. 샘플 소스를 올리겠습니다.. 기룡님 감사 합니다.



    윽.. 파일 올리수가 없군용...

    핵심 부분 소스만 올릴께용



    ==========================================================================

    var

    TmpZAddForm: TZAddForm;



    procedure TTestEvent.ActiveFormCreate(Sender: TObject);

    var

    h: HWND;

    begin

    h := Application.Handle;

    if (Application.Handle = 0) then

    Application.Handle := GetParent(Handle);

    TmpZAddForm := TZAddForm.Create(Panel1);

    TmpZAddForm.Parent := Panel1;

    TmpZAddForm.Left := 0;

    TmpZAddForm.Top := 0;

    TmpZAddForm.Visible := true;

    Application.Handle := h;

    end;

    ==========================================================================