一个窗口上有两个EDIT控件,创建窗体的时候,输入法是英文
EDIT1始终要是英文,EDIT2是用户自定义的输入类型。
如何通过代码设置?
我现在是这样做的,
当EDIT1获得发生onenter事件的时候,修改它的输入法为英文,同时备份原来的输入法。
     tempmode:=EDIT1.ImeMode;
     EDIT1.ImeMode:= imSAlpha;
当EDIT1失去焦点的时候。我修改它的输入法为原来的输入法。
     EDIT1.ImeMode:= tempmode;
结果输入法还是没有改过来。始终是英文,EDIT2获得焦点时用户又得重新选择他的输入法。
本来想最初就设置的,可是不知道用户需要那种输入法

解决方案 »

  1.   

    应该是EDIT1.ImeName,不是ImeMode吧
      

  2.   

    procedure TForm1.Edit1Exit(Sender: TObject);
    begin
            mState1 := GetKeyboardLayout(0);
    end;procedure TForm1.Edit1Enter(Sender: TObject);
    begin
            ActivateKeyboardLayout(mState1,KLF_REORDER);
    end;procedure TForm1.Edit2Exit(Sender: TObject);
    begin
            mState2 := GetKeyboardLayout(0);
    end;procedure TForm1.Edit2Enter(Sender: TObject);
    begin
            ActivateKeyboardLayout(mState2,KLF_REORDER);
    end;