在dbgrid中利用中文输入法,当dbgrid失去焦点后,在dbgrid中用到的输入发就也消失了,变为默认的英文输入法。但是为了用户的方便,不能总是更换输入法,又因为用户的中文输入法又不一样,所以,在imename属性中又 不能固定为一种。
问题:有什么办法,在整个程序中只用一种输入法(用户当时选择的一种输入法),不进行切换。

解决方案 »

  1.   

    获取系统输入法,选择
    procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 0 to screen.Imes.Count - 1 do    // Iterate
      begin
       ComboBox1.Items.Add(screen.Imes[i]);
      end;    // for
      dbgrid1.ImeName:=screen.Imes[0];
    end;procedure TForm1.ComboBox1Change(Sender: TObject);begin
      DBGrid1.ImeName:=ComboBox1.Text;
    end;
      

  2.   

    修改一下
    procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 0 to screen.Imes.Count - 1 do    // Iterate
      begin
       ComboBox1.Items.Add(screen.Imes[i]);
      end;    // for
    end;procedure TForm1.ComboBox1Change(Sender: TObject);begin
      DBGrid1.ImeName:=ComboBox1.Text;
    end;
      

  3.   

    或者
    procedure TForm1.DBGrid1ColEnter(Sender: TObject);
    begin
      dbgrid1.ImeName:=ComboBox1.Text;
    end;
      

  4.   

    to  soulwin(铁血汉子)
       现在是用户,不想采用我们自己弄的ComboBox1,而是想直接用windows的输入法。而且,不至于我把所有要输入汉字的控件都写入这样的代码吧。
      

  5.   

    to  demongz() 
       我改过control类的输入法属性,还是不行,能说说你的改法吗?谢谢!!