在D6,D7中都存在:当焦点从DBGrid控件转移到其他控件时,出现输入法被初始化为英文输入法??同样在VB中,放置几个DBGrid和几个Edit控件进行测试,没这问题!

解决方案 »

  1.   

    大哥,d中的控件可以设置输入法的,所以你检查一下吧.有没有设过吧
    pig>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      

  2.   

    lance09(lance.&Scott) :大妈,我没设过,就是简单的放几个DBGrid 和Edit不信你试试!
      

  3.   

    设置控件的IMEMode和IMEName属性。看看帮助吧;
    ImeMode:=imOpen;
    ImeName:='中文 (简体) - 微软拼音';
      

  4.   

    设置控件的IMEMode和IMEName属性。看看帮助吧;
    ImeMode:=imOpen;
    ImeName:='中文 (简体) - 微软拼音';
      

  5.   

    难道一定要我设置输入法????????天杀的,这N个DBGrid!!!!!!!!!!!!!晕~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      

  6.   

    HOHOHOHO~~~~~~~~~~~~~~~楼上这个家伙信誉分怎么升的这么快????
      

  7.   

    如果你的系统设置了默认输入法
    在设计时 窗口可接受输入的控件自动设置
    ImeMode:=imOpen;
    ImeName:=系统默认输入法打开.dfm 文件
    替换
    ImeName=''
      

  8.   

    其实,看看delphi带的相关控件的源码就可知道,不知道从TWinControl,还是那个开始,都会有接收到焦点后,自动设置为系统的默认输入法, 本来是一个很好的功能,但实际中,有时很烦,解决的办法,要没该到那些核心的源码; 要么,就在控件的ongetfocus中,用设置相关的那几个ime; 但不是说从dbgrid移到其它引起的!
      

  9.   

    是的,在DBGrid失去焦点时,更改IME,但有没有更好的办法呢?!我DBGrid用的太多了!
      

  10.   

    To gzllich(刚从泥坑里出来) :  设置把输入法检测关掉? 指把DBGrid输入法关掉吗?  您指的是如何关?是更改哪个属性?  关掉后,在DBGrid失去焦点时,不会自动更改IME吗?
      

  11.   

    这是DELPHI的一个小BUG.在delphi的DBGRIDS里.
    ///////////////////////////////////////////就是下面的
    procedure TCustomDBGrid.WMKillFocus(var Message: TMessage);
    begin
     // if not SysLocale.FarEast then inherited //原先错误的.
      if  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;///////////////////////////////
    改正后要重新INSTALL COMPONENT 就行另:在设置输入法时,最好设置
     ImeMode:=DONTCARE;
     ImeName:= //(空)
    让用户自己打开输入法,直到他自己关闭,否则应一直不变的.