改变输入法的问题(100分)

  • 主题发起人 主题发起人 rice
  • 开始时间 开始时间
R

rice

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序中动态的改变输入法,现在出现了一点小麻烦。<br>我用了两个Tedit组件,当激活其中一个时,自动切换中文<br>输入法;当某一个失去输入焦点时,自动换成英文输入法。<br>程序如下:<br>procedure TForm1.Edit1Enter(Sender: TObject);<br>var<br>&nbsp; myhkl: hkl;<br>&nbsp; i: &nbsp; &nbsp; integer;<br>begin<br>&nbsp; &nbsp;if screen.Imes.Count &lt;&gt; 0 then &nbsp;<br>&nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp;i:= screen.Imes.IndexOf('全拼输入法'); <br>&nbsp; &nbsp; &nbsp;if i &gt;= 0 then<br>&nbsp; &nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp; &nbsp;myhkl:= hkl(screen.Imes.Objects);<br>&nbsp; &nbsp; &nbsp; &nbsp;activatekeyboardlayout(myhkl,KLF_ACTIVATE); <br>&nbsp; &nbsp; &nbsp;end;<br>&nbsp; &nbsp;end;<br>end;<br><br>procedure TForm1.Edit1Exit(Sender: TObject);<br>var<br>&nbsp; myhkl: hkl;<br>begin<br>&nbsp; myhkl:= getkeyboardlayout(0);<br>&nbsp; if ImmIsIME(myhkl) then <br>&nbsp; immsimulatehotkey(handle,IME_CHOTKEY_IME_NONIME_TOGGLE); &nbsp;<br>end;<br>注:两个Tedit的onEnter和OnExit事件共用。<br>&nbsp; 即设置edit2的onenter为edit1的onenter;onexit为edit1的onexit.<br>
 
来看看))
 
把EDIT的ImeName设为“全拼输入法”不就行了吗?
 
好像两个事件有冲突,我将onExit事件改为由容器组件执行获得通过。<br>不知是何原因????
 
簡略說一下:<br>檢查是否擁有焦點,<br><br>若是,新的HKL:=LoadKeyboardLayout('你的輸入法');<br>舊的輸入法--英文?<br>舊的HKL:=ActivateKeyboardLayout('新的輸入法', KLF_UnLoadPrevious);<br><br>若失去焦點:<br>ActivateKeyboardLayout('舊的輸入法', KLF_UnLoadPrevious);
 
我早就已经搞定了,但还是要谢谢你们.特别是NGOK,和我解决的方法一样,<br>thank u!!!
 
多人接受答案了。
 
后退
顶部