messagebox (처리 하시겠습니까? '정말로 종료 하시겠습니까?', '정말입니까?', 1);messagebox에 대한 일반적인 질문
이 버튼에는 사용자가 할 수있는 것이 두 가지 있습니다. 확인하고 취소하십시오. 어떤 코드를 써야합니까? 버튼이 "ok"에서 프로그램을 닫고 취소를 누르면 대화 상자가 끝납니다.
messagebox (처리 하시겠습니까? '정말로 종료 하시겠습니까?', '정말입니까?', 1);messagebox에 대한 일반적인 질문
이 버튼에는 사용자가 할 수있는 것이 두 가지 있습니다. 확인하고 취소하십시오. 어떤 코드를 써야합니까? 버튼이 "ok"에서 프로그램을 닫고 취소를 누르면 대화 상자가 끝납니다.
델파이는 메시지 상자를 표시하는 데 더 나은 솔루션을 제공합니다. MessageDlg 함수를 사용해야합니다. MessageDlg (및 MessageBox) 함수의 반환 값은 사용자 선택을 나타냅니다. 따라서 MessageDlg에 예 버튼을 배치하면 사용자가 예 버튼을 누르면 반환 값이 mrYes가됩니다. 그래서 당신의 코드는 다음과 같습니다
또한 사용자가 예를 선택하는 경우 응용 프로그램을 닫으려는var
ShouldClose: Boolean;
begin
if MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
ShouldClose := True
else
ShouldClose := False;
end;
. 일반 Delphi VCL 애플리케이션을 사용하는 경우 mainform의 CloseQuery 이벤트를 구현할 수 있습니다. 클로즈 버튼을 클릭하는 것처럼 메인 폼을 닫으려고 할 때 CloseQuery 이벤트가 실행되고 변수 CanClose가 있습니다. CanClose를 True로 설정하면 MainForm이 닫히고 OK이면 false로 설정하면 메인 폼이 닫히지 않습니다.
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes;
end;
먼저 메시지 상자의 단추가 텍스트와 일치하는지 확인하십시오. 따라서 텍스트가 "정말로 종료 하시겠습니까?" 단추는 "예"및 "아니오"여야합니다.
둘째, 적절한 상수를 사용하면 나중에 쉽게 읽을 수 있습니다. 그 결과는 다음과 같습니다.
var
Res: integer;
Res := Application.MessageBox('Do you really want to exit?', 'Are you sure?',
MB_ICONQUESTION or MB_YESNO);
결과는 IDYES 또는 IDNO가됩니다. 그래서 통화가 기본 폼의 방법 안에 가정, 당신은 그것을 좋아 사용합니다 : 다른 곳에서이 호출하면
if Res = IDYES then
Close;
, 당신은 또한 부를 수
if Res = IDYES then
Application.Terminate;
편집 : 또한 Vista User Inteface Guidelines on dialog boxes을 확인 마십시오있는 상태 :
불필요한 확인서가 성가신
MessageDlg는 훌륭하지만 현지화되지 않았습니다. 영어 이외의 프로그램을 작성하고 현지화 할 방법을 사용하지 않는 경우 Application.MessageBox를 사용하는 것이 좋습니다. Application.MessageBox, Windows 대화 상자를 지역화 된 버전으로로드합니다. –
첫 번째 코드를 복사하여 붙여 넣을 때 메시지 상자가 나타납니다. 그러나 아무리 클릭해도 아무런 일도 일어나지 않고 상자가 닫힙니다. 프로그램을 닫을 때 무엇을해야합니까? – Alex
새 Delphi VCL 응용 프로그램이있는 경우 : 버튼을 추가합니다. 처리기에 add : Close; 양식으로 이동하여 이벤트로 이동하고 FormClose 이벤트를 추가하십시오. 이벤트 핸들러를 두 번째 코드 샘플처럼 보이게하십시오. –