Q&A

  • 델초짜의 슬픔..가볍게 도와주세요..
질문1.

제가 만드는 프로그램의 메인폼에서 발생하는 서브폼을 사이즈조절도 못하게 하고 종료도 할 수 없게 하고싶은데 어떻게 해야하는지.. 폼 속성에서 borderstyle인가에서 선택하면되는거 아닌가요..근데 선택을 해도 적용이 되지않고 여전히 디폴트 값그대로 거든요... 어디를 만져야 되는지요...제가 원하는 폼의 형태는 최소화,최대화,종료버튼이 없는 형태의 폼입니다.

질문2.

폼에서 윈도우 상단우측에 있는 종료버튼을 클릭했을때 종료확인 대화상자를 띄워서

확인,취소를 선택하게끔 하고싶은데 폼의 close이벤트에서 messagebox를 호출해서 하면되나요? 그렇게 해봤는데 취소를 눌러도 그냥 close되던데요.. 어떻게 해야할는지요..

이상입니다. 많은 조언 부탁드릴게요.. 좋은 저녁되시구요..

1  COMMENTS
  • Profile
    최용일 2000.05.21 09:07
    안녕하세요. 최용일입니다.



    첫번째 질문은 서브폼의 BorderStyle을 bsDialog, bsNone 중의 하나로 하시면 됩니다.



    bsNone은 타이틀바가 없으니까 별문제 없는데 bsDialog는 타이틀바에 종료버튼이 있습니다.



    이건 시스템메뉴에서 삭제하면 디스에이블되고 또 Alt-F4로도 종료할 수도 있는데 이것



    도 무효화를 시켜야 합니다. 폼의 KeyPreview를 True로 하시고 아래와 같이 코딩하세요.



    // 폼의 OnCreate 이벤트

    procedure TForm1.FormCreate(Sender: TObject);

    var

    SysMenu: HMENU;

    begin

    SysMenu := GetSystemMenu(Handle, False);

    DeleteMenu(SysMenu, 7, MF_BYPOSITION); // 시스템 메뉴의 잔상(??)을

    DeleteMenu(SysMenu, 5, MF_BYPOSITION); // 없애버립니다.

    // 시스템메뉴에서 종료메뉴를 삭제하고 종료버튼을 디스에이블 시킨다.

    DeleteMenu(SysMenu, SC_CLOSE, MF_BYCOMMAND);

    end;



    // 폼의 OnKeyDown 이벤트

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

    begin

    if (ssAlt in Shift) and (Key = vk_F4) then // 만일 Alt-F4가 눌렸다면

    Key := 0; // 키를 무효화 시킨다.

    end;



    두번째질문은 이벤트선택을 잘못하셨네요. 종료할지 안할지를 결정한것은 OnCloseQuery



    이벤트입니다. OnClose이벤트는 폼을 종료할때 발생합니다. 여기에서는 취소가 안됩니다.



    이 이벤트에 마지막에 CanClose란 파라매터가 있는데 여기에다가 True를 넣어주면 폼을



    종료하고 False를 넣어주면 폼의 종료를 취소합니다. 아래와 같이 코딩하시면 취소번튼을



    누르면 종료를 취소하게 됩니다.



    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

    begin

    CanClose := Application.MessageBox('Close', 'Close', IDOK) = IDOK;

    end;



    ^^ 항상 즐코하세요.



    최진석 wrote:

    > 질문1.

    > 제가 만드는 프로그램의 메인폼에서 발생하는 서브폼을 사이즈조절도 못하게 하고 종료도 할 수 없게 하고싶은데 어떻게 해야하는지.. 폼 속성에서 borderstyle인가에서 선택하면되는거 아닌가요..근데 선택을 해도 적용이 되지않고 여전히 디폴트 값그대로 거든요... 어디를 만져야 되는지요...제가 원하는 폼의 형태는 최소화,최대화,종료버튼이 없는 형태의 폼입니다.

    > 질문2.

    > 폼에서 윈도우 상단우측에 있는 종료버튼을 클릭했을때 종료확인 대화상자를 띄워서

    > 확인,취소를 선택하게끔 하고싶은데 폼의 close이벤트에서 messagebox를 호출해서 하면되나요? 그렇게 해봤는데 취소를 눌러도 그냥 close되던데요.. 어떻게 해야할는지요..

    > 이상입니다. 많은 조언 부탁드릴게요.. 좋은 저녁되시구요..