我在界上有一个edit, 在edit的exit事件中想得到这个edit中的正在使用的输入法 一开始是默认的输入法, 然后我把切换成了 五笔输入法, 然后反焦点移到其它的控件中,可是显示出来的edit.imeName还是 默认输入法的名字 为什么? 怎么解决啊?

解决方案 »

  1.   

    在设计时按需求定义输入控件的imename属性
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    procedure SetmyIme(ImeName:string);
    var
      I: Integer;
      HandleToSet: HKL;
    begin
      if not SysLocale.FarEast then Exit;
      if ImeName <> '' then
      begin
        if (AnsiCompareText(ImeName, Screen.DefaultIme) <> 0)
            and (Screen.Imes.Count <> 0) then
        begin
          HandleToSet := Screen.DefaultKbLayout;
          I := Screen.Imes.IndexOf(ImeName);
          if I >= 0 then
            HandleToSet := HKL(Screen.Imes.Objects[I]);
          ActivateKeyboardLayout(HandleToSet, KLF_ACTIVATE);
        end;
      end;
    end;procedure ResetmyIme(ImeName:string);
    begin
      if not SysLocale.FarEast then Exit;
      if ImeName <> '' then
      begin
        if AnsiCompareText(ImeName, Screen.DefaultIme) <> 0 then
          ActivateKeyboardLayout(Screen.DefaultKbLayout, KLF_ACTIVATE);
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    SetmyIme('中文 (简体) - 智能 ABC');end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    ResetmyIme('中文 (简体) - 智能 ABC');end;end.
      

  3.   

    imeName为空。
    imemod 设置为默认的。即imDontCare .就可以。