如何在程序中切换输入法(50分)

  • 主题发起人 主题发起人 hujim
  • 开始时间 开始时间
H

hujim

Unregistered / Unconfirmed
GUEST, unregistred user!
memo1.imename:=??
 
??应为什么,比如五笔字型,或是英文输入法
 
我在w2k下试的。
ImeName := '中文 (简体) - 全拼'
空的话就是现在默认(当前)的输入法
 
我想要叁个步骤:
1、获得当前系统的所有输入法:使用Screen对象的Imes属性!
2、设置Memo的输入法:设置Memo的ImeName属性
3、在Memo获得输入焦点时打开输入法:将Memo.ImeMode从默认的imDontcase改imOpen

代码:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;
type
  TForm1 = class(TForm)
    Memo1: TMemo;//设好imeMode属性!
    ComboBox1: TComboBox;//Text属性为空
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.Items:=Screen.Imes;//获取系统安装的所有输入法
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Memo1.ImeName:=ComboBox1.Text;//根据所选的输入法变化Memo的默认输入法
end;
end.
 
用菜单进行输入法的选择,也就是说没有你说的第二步能不能实现.谢谢
 
我想给杜宝加,但加不上
 
杜宝大侠已说的很清楚了,你还想怎样?还不给分?
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items:=Screen.Imes;
//你把这句话改成动态生成菜单项不就行了吗?或者点击一个菜单让它弹出一个对话框再进行选择呀?
end;


 
我想给杜宝加分,但现在下拉框中没有他的名字,怎么加.
 
代码:
with Screen.Imes do
  ActivateKeyboardLayout(HKL(Objects[IndexOf('中文 (简体) - 微软拼音')]), KLF_ACTIVATE);
 
接受答案了.
 
后退
顶部