Q&A

  • 폼 Show 에서요..
폼을 show하는 루틴속에 좀 무거운 쿼리를 올려놨는데요...

폼이 show될때 그 루틴을 다 처리하고 나야 완전한 모양이 나와요... 그 전에는 폼 모양이 뜨긴하는데 Label이나 이미지 올려 놓은게 다 안보이구요..

아궁.. 어떤 상황인지 잘 묘사가 안되지만 아시리라 믿습니다..

왜, 있잖습니까.. 무한루프에 빠져 있을 때 처럼요...



어찌해야 할지 모르겠습니다..

방법좀 알려 주세요...

그리구요.. 게시판을 검색해보니..Show 가 끝난 다음을 확인해 주는 게 있길래 휘리릭 카피해서 아래와 같이 썼더니...END_SHOW가 정의되지 않았다고 컴파일 에러가 나요...

private

procedure Show_After(var Msg : TMessage); message END_SHOW;





2  COMMENTS
  • Profile
    마형 2001.05.09 02:48
    나연희 wrote:

    > 폼을 show하는 루틴속에 좀 무거운 쿼리를 올려놨는데요...

    > 폼이 show될때 그 루틴을 다 처리하고 나야 완전한 모양이 나와요... 그 전에는 폼 모양이 뜨긴하는데 Label이나 이미지 올려 놓은게 다 안보이구요..

    > 아궁.. 어떤 상황인지 잘 묘사가 안되지만 아시리라 믿습니다..

    > 왜, 있잖습니까.. 무한루프에 빠져 있을 때 처럼요...

    >

    > 어찌해야 할지 모르겠습니다..

    > 방법좀 알려 주세요...

    > 그리구요.. 게시판을 검색해보니..Show 가 끝난 다음을 확인해 주는 게 있길래 휘리릭 카피해서 아래와 같이 썼더니...END_SHOW가 정의되지 않았다고 컴파일 에러가 나요...

    > private

    > procedure Show_After(var Msg : TMessage); message END_SHOW;

    >

    >



    Show 루틴에서 사용자 정의 메시지를 정의 하고 그것을 폼에 보낸후에 처리하면 됩니다.



    ex)



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, shdocvw;



    const

    UM_PAINT = WM_USER + 100; // Userdefine Paint Message



    ...

    ...

    ...

    폼의 private 영역에 다음 것을 선언



    procedure AplOnPaint(var Msg: Tmessage); message UM_PAINT;





    procedure TForm1.AplOnPaint(var Msg: Tmessage);

    begin

    .... 어쩌구 저쩌구..

    end;





    procedure TForm1.FormShow(Sender: TObject);

    begin

    PostMessage(handle, UM_PAINT, 0,0);

    end;





    이상입니다.



    PostMessage는 메시지를 메시지큐에 넣으므로 FormShow를 다실행하고

    즉각적인 실행이 될것입니다.



    이해가 안가시면 윈도우 메시지 메카니즘에 대한 책을 한번 보시길 바랍니다.





  • Profile
    나연희 2001.05.09 05:25
    감사합니다..



    좋은날 되시구요...