Q&A

  • SDI에서 MDI 띄우는 방법없나요??
MDI폼으로 프로그램을 만들었는데요, 초기화면에 로그인창을 만들려고 normal로 폼을 추가로 만들었습니다.

근데 SDI(로그인창)에서 MDI(메인폼)을 띄운후, Child창을 띄울때에 에러가 발생하는군요.

여기서 암만찾아봐도 해답을 못찾겠군요 ..ㅠ,ㅠ.. 이런식으로 처리된 프로그램은 분명있는데, 어떤식으로 처리해햐하는지 꼭 좀 한수 가르켜 주세요~~
5  COMMENTS
  • Profile
    타락천사 2003.05.03 23:40
    안녕하세요. 타락임다..

    MDI 메임폼이 TApplication.Mainform 이 되어야 합니다.

    프로젝트 파일(*.dpr) 에서

    Application.CreateForm(); 이 가장 먼저 실행된것이 일반적으로 메인폼 입니다.

    따라서 MDI 메인 폼을 제일 먼저 Application.CreateForm() 시킨후, SDI 폼은 그 후에 Application.CreateForm() 하면 문제 없을 겁니다.

    즐푸하세요..

    타락천사..
  • Profile
    신민수 2003.05.06 18:52
    답변 주신 님들 감사합니다.

    말꼬리 잡는거 같아서 죄송한데요, 이렇게 하니까 Close가 먹히질 않는군요. (제가 허접이라서 ㅡㅡ;;)

    그리고, 이왕이면 MDI 먼저 띄우는거보다 SDI로 만든 로그인 과정을 거친후, 프로그램이 돌아가게 하는 방법은 없는지요??

    님들 한번 더 조언 부탁할께요~~~ (__)

  • Profile
    별볼일없는 2003.05.07 03:42

    FormClose 에 Action := caFree ;
  • Profile
    임철우 2003.05.06 11:35

    타락천사님의 답변이 정답입니다.
  • Profile
    별볼일없는 2003.05.03 21:13

    Child창을 띄울때에 에러가.. 이부분은 정확히 이해를 못하겠는데요
    mdi 를 띄우고 sdi 를 띄우면 되지 않을까요

    mdi 가 엑티브 될때 로고창을 띄우는거에요
    mdi 전역 변수 ok_lognok : Boolean 함수를 선언해서

    mdi
    procedure TMain_Form.FormActivate(Sender: TObject);
    begin
       if ok_lognok = False then
         begin
           HWLoginForm:=THWLoginForm.Create(Self);
           HWLoginForm.ShowModal;
         end ;
    end;

    로고 창에서 확인 버튼 누를때
    id 랑 pw 가 맞은면 ok_lognok := true ; 하시고
    틀리면 당연히 False ;

    //참고 자료
    procedure LoginForm.FormCloseQuery(Sender: TObject;
      var CanClose: Boolean);
    begin
       if ok_lognok = true then   //ALT + F4 방지
         CanClose := True
       else
         CanClose := False ;
    end;

    저는 이런 방식으로 하고 있거든요 ㅡㅡ; 도움이 되실런지...