아래와 같이 Delphi7에서 edtAnswer라는 EditBox에서 한자키를 사용하지 못하게 하려고 하는데
최초의 빈상태에서 한글을 입력하면 자동으로 Select가 되어 한자키를 누르면 오른쪽 하단에 한자가 나타납니다.
이후 Home이나 End로 Select를 하고 한자키를 누르면 제대로 동작합니다.
최초의 빈상태에서 한글 입력시 자동 Select를 안되게 하는 방법은 없나요?
(AutoSelect := True, False 로는 제어되지 않고 Select 색상을 보면 검정색으로 이후 인위적으로 Select한
색상인 군청색과는 다르네요.)
procedure TMain_F.edtAnswerKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = 25 then //한자 key
begin
edtAnswer.SelStart := Length(edtAnswer.Text);
showmessage('한자 Key 사용불가');
exit;
end;
end;
결과적으로 이 문제를 해결하기 위해선 IMM.pas 를 확인 하시고 고치셔야 할 것 같네요.
일단 한글의 조합이 다 끝나기 전에는 KeyDown 에는 299 값이 들어오고 조합이 끝나면 두개의 문자 값이 KeyPress로 들어 옵니다.
그런데 위에 말씀하신 문제는 한글 조합 중에는 처음에 299 값이 들어오고 한자키를 눌러도 한자키값이 25가 안들어 오고 한자키는 눌리는 이런 상황이
발생되는데 키보드 후킹을 이용하시거나 IME를 이용하셔야 하는데 처리하시기 좀 복잡하실 것 같습니다.
그럼 수고하세요.