화면 메시지박스 가이드

화면 메시지박스에 대한 예시화면이다.

메시지박스는 기본적으로 메시지박스 표시 동작과 메시지박스에 대한 사용자 선택 동작이 비동기 스크립트 흐름 방식으로 동작한다.

메시지박스 표시는 screen 오브젝트의 messagebox API를 통해서 표시한다.

메시지박스에 대한 사용자 선택 결과는 screen 오브젝트의 on_messagebox 이벤트를 통해 전달된다.

메시지박스를 동기식 스크립트 흐름을 통해서 사용하기 위해서는 screen 오브젝트의 messageboxsync API를 사용한다.

메시지박스 표시시 초기 포커스 대상 버튼 지정 기능 및 버튼에 정의된 단축키를 이용한 선택 기능을 제공한다.

ANIMATE_TYPE_MESSAGEBOX 실행 파라미터를 기준으로 메시지박스 표시 애니메이션 유형이 지정된다.

템플릿 위치: /HTML5/SCREEN/SCREEN/screen_messagebox

템플릿 파일

// 메시지박스 사용자 선택 버튼 유형 값에 유형 문자열 리턴
function GetMessageBoxType(messagebox_result)
{
	var messagebox_result_type;

	messagebox_result_type = "";
	switch (messagebox_result) {
		case XFD_MB_RESOK: messagebox_result_type = "OK"; break;
		case XFD_MB_RESCANCEL: messagebox_result_type = "CANCEL"; break;
		case XFD_MB_RESABORT: messagebox_result_type = "STOP"; break;
		case XFD_MB_RESRETRY: messagebox_result_type = "RETRY"; break;
		case XFD_MB_RESIGNORE: messagebox_result_type = "IGNORE"; break;
		case XFD_MB_RESYES: messagebox_result_type = "YES"; break;
		case XFD_MB_RESNO: messagebox_result_type = "NO"; break;
		case XFD_MB_RESCONTINUE: messagebox_result_type = "CONTINUE"; break;
		default: messagebox_result_type = "UNKNOWN"; break;
	}

	return messagebox_result_type;
}

/**
 * 화면 messagebox API로 로드된 메시지박스 사용자 선택 완료 이벤트
 *
 * @param {string} messagebox_id 메시지 박스 ID
 * @param {number} result 사용자가 선택한 버튼 값
 */
function screen_on_messagebox(messagebox_id, result)
{
	factory.consoleprint("on_messagebox> start");
	factory.consoleprint("on_messagebox> messagebox_id = " + messagebox_id);
	factory.consoleprint("on_messagebox> result = " + result);
	factory.consoleprint("on_messagebox> messagebox_result_type = " + this.GetMessageBoxType(result));
}

function btn_messagebox_info_on_click(objInst)
{
	// 정보성 메시지박스 아이콘을 표시하면서 메시지박스 표시
	screen.messagebox("INFO 메시지", "INFO 타이틀",
		XFD_MB_INFORMATION, XFD_MB_OK, XFD_MB_FOCUSBUTTON1, objInst.getname());
}

function btn_messagebox_error_on_click(objInst)
{
	// 에러성 메시지박스 아이콘을 표시하면서 메시지박스 표시
	screen.messagebox("ERROR 메시지", "ERROR 타이틀",
		XFD_MB_ERROR, XFD_MB_OK, XFD_MB_FOCUSBUTTON1, objInst.getname());
}

function btn_messagebox_question_on_click(objInst)
{
	// 질문성 메시지박스 아이콘을 표시하면서 메시지박스 표시
	screen.messagebox("QUESTION 메시지", "QUESTION 타이틀",
		XFD_MB_QUESTION, XFD_MB_OK, XFD_MB_FOCUSBUTTON1, objInst.getname());
}

function btn_messagebox_stop_on_click(objInst)
{
	// 멈춤성 메시지박스 아이콘을 표시하면서 메시지박스 표시
	screen.messagebox("STOP 메시지", "STOP 타이틀",
		XFD_MB_STOP, XFD_MB_OK, XFD_MB_FOCUSBUTTON1, objInst.getname());
}

    // 중단/다시 시도/무시 메시지박스 버튼 표시
function btn_messagebox_abortretryignore_on_click(objInst)
{
	screen.messagebox("ABORT/RETRY/IGNORE 메시지", "ABORT/RETRY/IGNORE 버튼",
		XFD_MB_QUESTION, XFD_MB_ABORTRETRYIGNORE, XFD_MB_FOCUSBUTTON1, objInst.getname());
}

function btn_messagebox_ok_on_click(objInst)
{
	// 확인 메시지박스 버튼 표시
	screen.messagebox("OK 메시지", "OK 버튼",
		XFD_MB_INFORMATION, XFD_MB_OK, XFD_MB_FOCUSBUTTON1, objInst.getname());
}

function btn_messagebox_okcancel_on_click(objInst)
{
	// 확인/취소 메시지박스 버튼 표시
	screen.messagebox("OK/CANAEL 메시지", "OK/CANAEL 버튼",
		XFD_MB_INFORMATION, XFD_MB_OKCANCEL, XFD_MB_FOCUSBUTTON1, objInst.getname());
}

function btn_messagebox_retrycancel_on_click(objInst)
{
	// 다시 시도/취소 메시지박스 버튼 표시
	screen.messagebox("RETRY/CANCEL 메시지", "RETRY/CANCEL 버튼",
		XFD_MB_INFORMATION, XFD_MB_RETRYCANCEL, XFD_MB_FOCUSBUTTON1, objInst.getname());
}

function btn_messagebox_yesno_on_click(objInst)
{
	// 예/아니요 메시지박스 버튼을 표시
	screen.messagebox("YES/NO 메시지", "YES/NO 버튼",
		XFD_MB_INFORMATION, XFD_MB_YESNO, XFD_MB_FOCUSBUTTON1, objInst.getname());
}

function btn_messagebox_yesnocancel_on_click(objInst)
{
	// 예/아니요/취소 메시지박스 버튼 표시
	screen.messagebox("YES/NO/CANCEL 메시지", "YES/NO/CANCEL 버튼",
		XFD_MB_INFORMATION, XFD_MB_YESNOCANCEL, XFD_MB_FOCUSBUTTON1, objInst.getname());
}

function btn_messagebox_cancelretrycontinue_on_click(objInst)
{
	// 취소/다시 시도/계속 메시지박스 버튼 표시
	screen.messagebox("CANCEL/RETRY/CONTINUE 메시지", "CANCEL/RETRY/CONTINUE 버튼",
		XFD_MB_INFORMATION, XFD_MB_CANCELRETRYCONTINUE, XFD_MB_FOCUSBUTTON1, objInst.getname());
}

// 동기식 메시지박스 흐름 처리 (함수가 async로 정의되어야 함)
async function btn_messagebox_sync_on_click(objInst)
{
	var messagebox_result;

	factory.consoleprint("messagebox_sync> before call messageboxsync");

	// messageboxsync API 호출시 "on_messagebox" 이벤트가 발생하지 않는다.
	// messageboxsync API 함수 호출의 리턴값을 통해서 사용자가 선택한 값을 구한다.
	// 사용자가 메시지 박스 버튼을 선택하기 전까지 함수가 리턴되지 않고 대기한다.
	// await의 동기화 처리는 async 함수내에서만 수행된다.
	messagebox_result = await screen.messageboxsync("어떤내용을 선택하시겠습니까?", "선택",
		XFD_MB_QUESTION, XFD_MB_YESNOCANCEL, XFD_MB_FOCUSBUTTON1);

	factory.consoleprint("messagebox_sync> after call messageboxsync");

	factory.consoleprint("messagebox_sync> messagebox_result = " + messagebox_result);
	factory.consoleprint("messagebox_sync> messagebox_result_type = " + this.GetMessageBoxType(messagebox_result));
}

  • guide/screen/screen/screen_messagebox.txt
  • 마지막으로 수정됨: 2023/08/08 13:35
  • 저자 127.0.0.1