procedure TForm1.Edit1Change(Sender: TObject);
begin
  Form2.Show;  
  Form2.SetFocus;  
 edit1.SetFocus;
end;
用五笔在edit中输入一个字,马上变成英文。再调,输入字后又变.弄了快半个多钟,搞不定。

解决方案 »

  1.   

    Edit的属性ImeName设置输入法了吗?
      

  2.   

    ImeName 没有设置。  
    我是想edit能记住我使用的输入法...下次不用重复调整。
      

  3.   

    可以搞个INI文件存放输入法,在程序打开时读取并设置EDIT的ImeName属性
      

  4.   

    要不你以参数的形式保存到INI文件或是数据库中,在edit的enter事件里设置ImeName。
      

  5.   

    参考了“万一”前辈的博客,改成下面的样子了。功能是实现了,但是输入时显示会卡。。高手帮我优化一下procedure TForm1.Edit1Change(Sender: TObject); 
    var
      kl: HKL;
      i: Integer;
    begin  kl := GetKeyboardLayout(0);
      for i := 0 to Screen.Imes.Count - 1 do
       if HKL(Screen.Imes.Objects[i]) = kl then
         Edit1.ImeName:=Screen.Imes.Strings[i];  Form2.Show;  
      Form2.SetFocus;  
    edit1.SetFocus; 
    end;
      

  6.   

    原因查明了,因为form2上只有一个DBgrid所以输入法会变。
    已经解决了谢谢大家!