ShowMessage, MessageDlg를 쓰면 버튼, 캡션이 영문으로 나온다.


  ShowMessage( 'asdf' );

  MessageDlg( '가나다라', mtInformation, mbYesNo, 0 );






예전에는 메시지창을 만들어서 쓰곤 했었는데 귀...귀찬....


MessageDlg의 인자로 Winapi의 MessageBox를 쓰도록 Wrapping하려고 했으나...

Winapi의 MB_ 항목들에는 YesToAll, NoToAll, Abort 등 버튼이 없다.

MessageBox로 Wrapping하다가 델파이에 있는 기능이 더 많은데?라는 생각에 Stop!!


문자열을 바꿔버리면 될까나? 라는 생각이 들어서 Dialogs 유닛 확인~

Dialogs 유닛을 보니 Consts유닛에 있는 resourcestring 문자열들을 이용하고 있다.



작업


우선 Consts 유닛을 다른 이름으로 저장한 후에 수정했다.

우선은 메시지 창에서 사용하는 부분 정도만 수정


  SMsgDlgWarning = '경고';

  SMsgDlgError = '오류';

  SMsgDlgInformation = '알림';

  SMsgDlgConfirm = '확인';

  SMsgDlgYes = '예(&Y)';

  SMsgDlgNo = '아니오(&N)';

  SMsgDlgOK = '확인';

  SMsgDlgCancel = '취소';

  SMsgDlgHelp = '도움말(&H)';

  SMsgDlgHelpNone = '도움말 없음';

  SMsgDlgHelpHelp = '도움말';

  SMsgDlgAbort = '취소(&A)';

  SMsgDlgRetry = '재시도(&R)';

  SMsgDlgIgnore = '무시(&I)';

  SMsgDlgAll = '전부(&A)';

  SMsgDlgNoToAll = '전부 아니오(&o)';

  SMsgDlgYesToAll = '전부 예(&A)';

  SMsgDlgClose = '닫기(&C)';


그러고는 저장한 파일을 프로젝트에 추가~

(꼭 추가하지 않더라도 같은 경로에 넣어도 된다.)



위의 소스를 다시 돌려보자




최종 결과물




오홋!!! 됐다~

파일 저장해놨다가 프로젝트 할때 추가하면 될듯하다.

메시지창 말고 다른 메시지도 한글로 바꿔서 적용하면 국내 프로그램 만들 때 편하게 쓸 수 있을 것 같다.



-------------------------------------------------------------------------------------------


ps. 테스트를 해보니 따로 저장한 파일을 library path에 추가되어 있는 경로에 넣어도 된다.

 그러면 프로젝트에 넣지 않아도 한글로 표시된다.


그러므로 난 앞으로 메시지는 모두 한글로 보여줄래!! 라고 한다면 Consts유닛을 델파이의 라이브러리 경로에 추가되어 있는 폴더에 넣으면 되고

필요한 경우에만 쓰고자 한다면 Consts 유닛을 따로 보관하다가 필요한 경우 프로젝트 경로에 복사해 넣으면 되겠다.


+ Recent posts