在一个窗体上放一个dbgrid空件,在放一个可获得焦点的控件,
如edit,运行程序,先将输入法切换成任意一种中文输入法,然后
点击一下dbgrid空件,再点击edit控件,输入法就会自动切换成系统默认的方式。
   不要小看这个问题,这个问题很严重,他让我的客户很恼火

解决方案 »

  1.   

    告訴客戶按組合鍵
    Ctrl + Space.
      

  2.   

    记得好像dbgrid控件可以设置默认的输入法的。 
    实在不是什么大问题嘛
    实在不行了,TNND,大不了自己向dbgrid发送虚拟按键.Ctrl + Space.
      

  3.   

    昏,有这样的问题啊!查下ctrl+dpace 的代码,写进去试验下(我没这样试验过:))
      

  4.   

    我试了一下,是有这个问题,楼主你只能通过变通的方法了。
    在edit1的onexit事件里先保存它的输入法,在onenter里再赋值。
      

  5.   

    你设置了控件的输入法
    比如TEdit就有一个ImeMode的属性
      

  6.   

    建议将控件的ImeMode属性清空,在编程时系统的默认输入法为En,不要设为任何中文输入法。
    除非确实有必要。
      

  7.   

    我也碰到过此种现象,我的解决方法是改了Delphi的源代码DBGrids.pas
    procedure TCustomDBGrid.WMKillFocus(var Message: TMessage);
    begin
      if SysLocale.FarEast then inherited  //if not SysLocale.FarEast then inherited
      else
      begin
        ImeName := Screen.DefaultIme;
        ImeMode := imDontCare;
        inherited;
        if not ((InplaceEditor <> nil) and
          (HWND(Message.WParam) = InplaceEditor.Handle)) then
          ActivateKeyboardLayout(Screen.DefaultKbLayout, KLF_ACTIVATE);
      end;
    end;
      

  8.   

    to : belllab(bell)
       你的方法确实很高,可是那意味着我得重新注册一个新的dbgrid空件吗?
    有没有更好的方法?