1 / 14
文档名称:

输入法自动切换.doc

格式:doc   页数:14
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

输入法自动切换.doc

上传人:xxj165868 2016/6/8 文件大小:0 KB

下载得到文件列表

输入法自动切换.doc

文档介绍

文档介绍:输入法自动切换摘要: Dephi 程序输入法自动切换最简单最好用的实现方法关键字:输入法, 自动, 切换类别: Delphi & IDE 前言: 当我们的软件交付用户使用时, 特别涉及到大量的数据输入处理时, 用户需要频繁的在中英文之间切换, 而且用户使用的输入法也不同, 有的是五笔, 有的是拼音等等. 我们能否在软件中提供一个个性化的输入法选择? 当用户选择自己喜欢的输入法时, 程序中该输入中文的地方, 全部自动切换为中文, 该输入英文的地方自动切换为英文. 这个实现方法比较多, 但多很麻烦, 因此, 虽然很多程序员可以实现, 但都感到非常麻烦而放弃! 下面是本人的一个非常简单和好用的解决方法. 解决思路: 程序员只需要将窗体中该输入中文的控件的 imemode=imchinese, 然后在每个窗体里 create( 或 active) 事件里调用本人编写的方法 ChangeYouFormAllControlIme(frm) 即可. 在程序中提供一个用户输入法选项供用户选择自己喜欢的输入法, 调用显示 FrmImeNameList 窗体即可! 总之, 程序员只需要调用一个公用 unit( 含有窗体的 unit) 下的方法: ChangeYouFormAllControlIme(YFormName:TWinControl), 调用显示窗体 FrmImeNameList 实现方法: unit 名字 UnitImeManager 包含的窗体名字 FrmImeNameList 公用 unit 的窗体界面: 界面操作的代码: procedure (Sender: TObject); // 列表框加载系统输入法 begin :=; end; procedure (Sender: TObject);// 保存用户选择的输入法存放到系统注册表里面 var Reg:TRegistry; CustImeName:string; begin reg:=; :=HKEY_LOCAL_MACHINE; if <>-1 then CustImeName:=[] else CustImeName:=' 中文( 简体)- 智能 ABC'; try if ('\Software\IMeCustom', True) then ('CustomIMeName',CustImeName); finally ; ; end; ; end; 公用 unit 的方法: 1 更改相应窗体中所有的控件的输入法 Procedure ChangeYouFormAllControlIme(YFormName:TWinControl); // 需要更改输入法的窗体名称 var i:integer; ChildControl:TControl; Reg:TRegistry; YouFormOrOTher:Twincontrol; begin YouFormOrOTher:=YFormName; reg:=; // 读取注册表保存的用户选择的输入法, 用单元全局变量 StrImeName 保存 :=HKEY_LOCAL_MACHINE; try if ('\Software\IMeCustom',false)=true then StrImeName:=('CustomIMeName'); finally ; ; end; // 调用方法 JugeClassType(ChildControl) 更改窗体中控件的 ImeMode for i:=0 to -1 do begin ChildControl:=[i]; JugeClassType(ChildControl); // 如果控件包含控件, 更改被包含的控件 if ChildControl is TWinControl then ChangeYouFormAllControlIme(ChildControl as TWinControl); end; end