드로우홀릭 더베이직

한/영 자동 전환 (IME 모드 속성)

액세스-일반 2013.04.12 16:51:40 조회 수 42671 추천 수 0

한/영 자동 바꿈을 말하는 것이 아닙니다. 한/영 자동 전환에 대해서 말씀을 드리는 것입니다.

한/영 자동 전환은, 특정 컨트롤에 커서가 있다가 다른 컨트롤로 이동시 한글 / 영문 입력 상태가 자동으로 바뀌는 것을 말합니다.

CapPic20130412-80.jpg

<그림 1> '고객업체코드'는 영문으로 입력해야 합니다. 그래서 영문 입력 상태로 입력하였습니다.


CapPic20130412-90.jpg

<그림 2> '고객업체명'에서 데이터를 입력하면 자동으로 한글이 입력됩니다. 한/영 전환을 하지 않았는데도 말이죠.


CapPic20130412-100.jpg

<그림 3> 이렇게 된 것은, 액세스 컨트롤의 'IME 모드' 속성이 '한글'로 되어 있기 때문입니다.


사실, 제가 권장하는 것은 'IME 모드' 속성을 '현재 상태 유지'로 하는 것 입니다. 대부분의 입력자는 자신이 한글 입력 상태인지, 영문 입력상태인지 인지하고 있는 상태이거든요. 그래서, 이를 인위적으로 변경하는 것은 오히려 불편함을 야기할 수 있습니다.

'현재 상태 유지'로 하게 되면, 사용자가 한/영 전환을 하지 않는 한, 한/영 입력 모드를 변경하지 않습니다.

문제는.. 액세스 폼은 기본적으로 '한글' 상태로 가 있는 것인데요..

전체 프로그램에 대해, IME 모드를 '현재 상태 유지'로 일괄적으로 변경해 주는 VBA 코드를 제공하겠습니다.

이 프로시저를 실행하면, 현재 데이터베이스의 모든 폼을 열어서, IME 모드를 '현재 상태 유지'로 변경해 줍니다.

Public Sub gsbSetIMEMode()

'2009-06-26, 염기웅
'현재 프로젝트의 모든 폼의 IME모드를 '현재 상태 유지'로 변경해 주는 프로시저
'IME모드가 3(사용안함)일 경우에는 변경하지 않는다. --> '암호' 컨트롤일 가능성이 있음
'실행하기 전 열려 있는 폼이 없어야 한다.

On Error GoTo Herror

    Dim Obj As Object
    Dim frm As Access.Form
    Dim lngAnswer As VbMsgBoxResult
    Dim strMsg As String
    Dim ctr As Control
    
    
'작업 확인
    strMsg = "현재 프로젝트의 모든 폼의 컨트롤에 대해서 IME모드를 '현재 상태 유지'로 변경합니다." & vbNewLine & _
             "계속 하시겠습니까?"
    lngAnswer = MsgBox(strMsg, vbYesNo)
    If lngAnswer = vbNo Then Exit Sub


'상태 체크: 모든 폼은 닫혀 있어야 한다.
    For Each frm In Forms
        Select Case frm.Name
            Case Else
                MsgBox "열려 있는 폼이 있습니다."
                Exit Sub
        End Select
    Next
    
    
'모든 폼에 대해서 수행
    For Each Obj In CurrentProject.AllForms
        
        '폼 열기
        DoCmd.OpenForm Obj.Name, acDesign
        Set frm = Forms(Obj.Name)
        
        '작업 수행
        For Each ctr In frm.Controls
            sbSetIMEMode ctr
        Next
        
        '폼 닫기
        DoCmd.Close acForm, Obj.Name, acSaveYes
        DoEvents
    Next
    
    MsgBox "IME모드 속성을 고쳤습니다."
    Exit Sub

Herror:
    Select Case Err.Number
        Case Else
            MsgBox Err.Description & vbNewLine & Err.Number
            Stop
    End Select
    
End Sub


Public Sub gsbSetCurrFormIMEMode()

    Dim frm As Access.Form
    Dim ctr As Access.Control
    
    Set frm = Screen.ActiveForm
    
    '작업 수행
    For Each ctr In frm.Controls
Debug.Print ctr.Name
        sbSetIMEMode ctr
    Next

    MsgBox "IME모드 속성을 고쳤습니다."
    
End Sub


Private Sub sbSetIMEMode(ctr As Control)

On Error Resume Next

    Select Case ctr.IMEMode
        Case 3          '3 = fmIMEModeDisable --> 주로 암호 입력란에 포함되어 있을 가능성이 높다.
            Exit Sub
        
        Case 0          '0 = fmIMEModeNoControl --> '현재 상태 유지'
            Exit Sub
        
        Case Else
            ctr.IMEMode = 0
    End Select

End Sub


이 기능을 동작하려면, 'gsbSetIMEMode' 프로시저를 실행하면 됩니다.

만약, 특정 폼 하나만 설정하려면, 특정 폼을 디자인 보기로 연 다음, 'gsbSetCurrFormIMEMode' 프로시저를 실행하면 되겠습니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 액세스-일반 길벗출판사 / 실무액세스 예제파일(64비트용) [4] 돌직구 2021-01-13 30260
공지 액세스-일반 길벗출판사 / 액세스 2013 무작정 따라하기 정오표 돌직구 2014-10-09 80493
공지 액세스-일반 길벗출판사 / 액세스 2010 무작정 따라하기 정오표 file 돌직구 2012-10-26 125924
29 IT일반 (중소기업) 랜섬웨어 예방하기 돌직구 2016-04-27 6838
28 IT일반 검색엔진에게 내 정보 조금만 주기 file 돌직구 2016-03-01 14603
27 액세스-일반 특정 데이터베이스에만 반영되는 메뉴 만들기 file 돌직구 2016-01-17 9346
26 액세스-일반 액세스에서 자주 사용하는 함수 file 돌직구 2015-07-13 37548
25 액세스-일반 '필수' 속성과 '빈 문자열 허용' 속성 알아보기 file 돌직구 2014-11-21 19937
24 ADP 대용량 해결하기 및 ADP 알아보기 file 돌직구 2014-09-14 33101
23 IT일반 우편번호 DB 2014-03-07, 도로명 주소 포함 돌직구 2014-03-12 29339
22 IT일반 Windows 8에서 드래그 & 드롭이 되지 않을 때 file 윈드님 2013-09-12 33526
21 IT일반 맥북을 업무용으로 구입하고 싶으세요? 돌직구 2013-09-04 23948
20 MS액세스 블로그 번역 액세스(Access) 2013으로 업무용 앱을 만드는 4가지 방법 file 윈드님 2013-07-13 47644
19 MS액세스 블로그 번역 쉬운 데이터 입력 file 윈드님 2013-06-18 30406
18 IT일반 Dropbox 동기화 vs. SkyDrive Pro 동기화 돌직구 2013-06-06 24661
17 SQL Server SQL Server Express 버전별 DB 용량 1 돌직구 2013-05-30 45895
16 ADP 액세스와 SQL Server 간의 데이터 형식 호환표 돌직구 2013-05-14 18498
15 MS액세스 블로그 번역 액세스(Access) 2013 과 SQL 서버(SQL Server) file 윈드님 2013-05-13 36018
14 MS액세스 블로그 번역 액세스(Access) 테이블, 자동으로 재연결하기 file 1 윈드님 2013-05-02 22762
13 MS액세스 블로그 번역 액세스(Access) 2013 웹 앱 만들기 file 윈드님 2013-04-18 40154
12 MS액세스 블로그 번역 액세스(Access) 2013 소개 file 윈드님 2013-04-15 20863
» 액세스-일반 한/영 자동 전환 (IME 모드 속성) file 돌직구 2013-04-12 42671
10 액세스-일반 탐색 컨트롤 돌직구 2012-07-17 19455


  주소  12925 경기도 하남시 미사대로 540, B동 917호 (현대지식산업센터 한강미사2차) ㈜팀데이터이십일  |  고객센터 전화번호  02-467-2998  |  대표이사  염기웅
개인정보관리책임자  염기웅 (ml_privacy@td21.com)  |  사업자등록번호  120-86-79260  |  통신판매업신고번호  제 2021-경기하남-1166 호  [사업자 정보 확인]
  TD21의 사전 서면 동의 없이 TD21 사이트 일체의 정보, 콘텐츠 및 UI 등을 상업적 목적으로 전시, 전송, 스크래핑 등 무단 사용할 수 없습니다.