public에 밑에 함수 추가
const
English = 0; Korean = 1;
uses InputUnit, ViewUnit, Imm;
{$R *.DFM}
//////////// 한/영상태 검사 루틴///////////////
function TMainForm.IsHanState(paForm: TForm): boolean;
var
fFlag, imeMode: DWORD;
hIMC: THandle;
begin
hIMC:= ImmGetContext(paForm.Handle);
ImmGetConversionStatus(hIMC, fFlag, imeMode);
ImmReleaseContext(paForm.Handle, hIMC);
Result:= (fFlag = 1);
end;
//////////// 한/영상태 변화 루틴///////////////
procedure TMainForm.SetIMEMode(const Language: Integer);
var
dwConversion, dwSentence: DWORD;
hIMC: THandle;
begin
hIMC:= ImmGetContext(Application.Handle);
ImmGetConversionStatus(hIMC, dwConversion, dwSentence);
Case Language Of
English: ImmSetConversionStatus(hIMC, IME_CMODE_ALPHANUMERIC, dwSentence);
Korean : ImmSetConversionStatus(hIMC, IME_CMODE_NATIVE, dwSentence);
end; {Case Value Of}
ImmReleaseContext(Application.Handle, hIMC);
end;
procedure TMainForm.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
If IsHanState(Self) Then StatusBar1.Panels[1].Text:= ' 한글 '
Else StatusBar1.Panels[1].Text:= ' 영문 ';
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
InputFormActive:= False;
ViewFormActive:= False;
InputClose:= True;
Application.OnHint:= ShowHint;
Application.OnMessage:= AppMessage;
SetIMEMode(Korean);
Left:= 1;
Top:= 1;
end;
'프로그래밍 > Delphi' 카테고리의 다른 글
EurekaLog와 다른 리소스 누수 탐지 모듈 (0) | 2012.03.27 |
---|---|
[Delphi] XP에서 TSaveDialog의 확장자 필터타입 바꿨을때 파일명 확장자가 자동으로 변경되지 않는 문제 (3) | 2012.01.26 |
[팁] ActiveX XP에서 한영 전환 안되는 문제 해결책. (0) | 2012.01.05 |
[Delphi]*를 포함한 여러 파일 일괄 삭제 (2) | 2011.11.16 |
[Delphi] IF문에서 not 연산자를 사용할때 주의할 점 (0) | 2011.10.27 |