자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
 
		
	
	
		
			Delphi			델파이 컨트롤(edit, memo)에서 한영전환
		
		
			2012.05.30 02:35		
		
	
	
	
		
	
	
				안녕하세요.
 
델파이 7에서는 한영전환이 아래 코드로 잘 작동했는 델파이 2010에서는 작동하지 않습니다. 어떻게 전환하는지 궁금합니다.
 
type
  TimeInputmode = ( imHangul, imEnglish);
 
procedure SetImeInputMode(const AHandle : THandle; const Value : TimeInputMode);
var
  hContext : HIMC;
  dwSentence : DWORD;
  dwConversion : DWORD;
begin
  hContext := ImmGetContext(AHandle);
  try
    ImmGetConversionStatus(hContext, dwConversion,dwSentence);
    if value = imHangul then
       ImmSetconversionStatus(hContext, IME_CMODE_HANGUL,dwSentence)
    else
       ImmSetConversionStatus(hContext, IME_CMODE_ALPHANUMERIC,dwSentence);
  finally
    ImmReleaseContext(AHandle, hContext);
  end;
end;
 
답변 부탁드립니다.
			
	
	
	
	
	
		댓글 4
	
	
		- 
			
						아래 코드로 호출해봤습니다, 잘됩니다.유닛의 위쪽에 uses 에 Imm 유닛을 추가 해주시지 않은것은 아닌가요?
  SetImeInputMode(Edit1.Handle, imHangul);
									
		 - 
			
												
															superman				
				2012.05.30 03:35
			
						델파이 2010, 윈도우 7에서 사용하고 있습니다.
 
운영체제가 xp일 때는 잘 됐으나 윈도우7에서는 작동하지 않습니다.
 
운영체제와 관련이 있나요?
									
		 - 
			
						
제가 테스트한 환경이 윈도우7입니다. 저는 잘동작하는걸 확인 했습니다.
적어주신 내용은 win api를 이용하는 방법이라 Windows에서는 기본적으로 잘되어야 정상입니다만..
혹시 권한문제때문일 수도 있으니 관리자 권한으로 실행해보시기 바랍니다. ^^
									
		 - 
			
												
															준이킴				
				2012.05.30 20:22
			
						
Win7 과의 호환성 때문이라고 본 것 같습니다.
 
Edit 의 프로퍼티 중 imeName 칸을 지워주시거나..
 
소스에서 TEdit 를 찾아서 모두  ImeName에 공백을 주시면 잘 동작될 겁니다.
									
		 	
    	
	
	
Delphi 델파이 컨트롤(edit, memo)에서 한영전환
2012.05.30 02:35
안녕하세요.
델파이 7에서는 한영전환이 아래 코드로 잘 작동했는 델파이 2010에서는 작동하지 않습니다. 어떻게 전환하는지 궁금합니다.
type
  TimeInputmode = ( imHangul, imEnglish);
procedure SetImeInputMode(const AHandle : THandle; const Value : TimeInputMode);
var
  hContext : HIMC;
  dwSentence : DWORD;
  dwConversion : DWORD;
begin
  hContext := ImmGetContext(AHandle);
  try
    ImmGetConversionStatus(hContext, dwConversion,dwSentence);
    if value = imHangul then
       ImmSetconversionStatus(hContext, IME_CMODE_HANGUL,dwSentence)
    else
       ImmSetConversionStatus(hContext, IME_CMODE_ALPHANUMERIC,dwSentence);
  finally
    ImmReleaseContext(AHandle, hContext);
  end;
end;
답변 부탁드립니다.
댓글 4
- 
			
						아래 코드로 호출해봤습니다, 잘됩니다.유닛의 위쪽에 uses 에 Imm 유닛을 추가 해주시지 않은것은 아닌가요?SetImeInputMode(Edit1.Handle, imHangul);
 - 
			
superman
2012.05.30 03:35
델파이 2010, 윈도우 7에서 사용하고 있습니다.
운영체제가 xp일 때는 잘 됐으나 윈도우7에서는 작동하지 않습니다.
운영체제와 관련이 있나요?
 - 
			
						
제가 테스트한 환경이 윈도우7입니다. 저는 잘동작하는걸 확인 했습니다.
적어주신 내용은 win api를 이용하는 방법이라 Windows에서는 기본적으로 잘되어야 정상입니다만..
혹시 권한문제때문일 수도 있으니 관리자 권한으로 실행해보시기 바랍니다. ^^
 - 
			
준이킴
2012.05.30 20:22
Win7 과의 호환성 때문이라고 본 것 같습니다.
Edit 의 프로퍼티 중 imeName 칸을 지워주시거나..
소스에서 TEdit 를 찾아서 모두 ImeName에 공백을 주시면 잘 동작될 겁니다.
 
                                            