2009-04-18 14 views
3

내 델파이 애플리케이션에 편집 된 현재 파일에 대한 변경 사항 저장을 확인하기 위해 기본 양식에서 호출되는 사용자 정의 예, 아니오, 취소 대화 상자가 있습니다. 이것은 일반적으로는 MessageDlg()에 의해 달성 될 수 있지만 모양을 사용자 정의하려면이 대화를 원했다, 그래서 기본적으로 양식이 탈출을 누르면 반응한다는 것입니다 나는form.showModal의 기본 모달 결과 변경

case myDialogue.showModal of 
    mrYes: <<save changes>>; 
    mrNo: <<quit application without saving changes>> 
    mrCancel: <<set the closeAction to caNone and do nothing>> 
end; 

문제로이 기능을 달성하기 위해 노력하고 반환 키 : mrNoTModalResult. 직관에 따라 모달 대화 상자에서 Esc를 누르면 의도 한 응용 프로그램 프로세스가 취소 될 것이라는 사실을 알 수 있기 때문에 BAAAD의 모습을 볼 수 있습니다. 실제로는 어떤 문제가 발생합니까? 변경 내용을 저장하지 마십시오. 명령과 응용 프로그램이 종료됩니다. .

이 방식으로 한 시간의 작업을 잃을 때까지는이 동작을 알지 못했습니다. FormKeyPressed 이벤트 핸들러 또는 키 누름에 응답하는이 myModalDialogue 코드에 입력되었습니다. showModal을 사용하여 표시된 양식에서 Esc를 누르면 mrNo이 반환됩니다. 이 기본 동작을 어떻게 무시할 수 있습니까?

답변

15

"아니오"단추의 취소 속성이 False이고 "취소"단추의 취소 속성이 True인지 확인해야합니다.

+0

이 작업이 수행되었습니다. 감사! –

4

대화 상자에서 단추의 취소 및 기본 속성을 설정하십시오.

+0

정답은 +1입니다. 고마워, 나는 그게 그렇게 간단하다고 믿을 수 없어. 그리고 나는 이것을 고치려고 노력하고 있었다. –