Delphi下编程实现中文输入
2008-04-09 04:17:37来源:互联网 阅读 ()
在平时的计算机操作中,中文输入是不可避免的。 使用者可能喜欢不同的中文输入法(inputmethodeditor,简称IME),这就不得不经常点击 任务栏中的中文图标或用CTRL Space,CTRL Shift热键切换,初学者用起来很不方便。针对 这一问题,可以在开发软件时,在程序中设置用户喜欢的中文输入法,方便用户的使用。Delphi 中只有少数控件如TEdit支持IME,而且该功能不强,不能在运行时更改输入法。
笔者通过实践和摸索,查找了相关的IME资料,利 用了WINDOWSAPI函数,实现了IME的功能。
常用函数有:
API函数:BOOLImmSimulateHotKey (HWNDhWnd,DWORDdwHotKeyID);//模拟热键 其中Hwnd为程序窗口的句柄,dwHotHKeyID 为模拟的热键,若成功则返回True HKLGetKeyboardLayout(DWORDdwLayout); //获得当前键盘状态 BOOLImmIsIME(HKLhKL); //判断当前是否处于中文输入状态,若是则返回True 自定义函数: 打开相应输入法:OpenIme(imename:string), 例OpenIme(全拼输入法); 关闭中文输入法:CloseIme; 以下是一个简单的例子,仅起参考作用。 使用时uses中加上imm 具体的实现方法及源代码如下: unitUnit1; interface uses Windows,Messages,SysUtils,Classes, Graphics,Controls,Forms,Dialogs, StdCtrls,Buttons,imm; type TForm1=class(TForm) ComboBox1:TComboBox; BitBtn1:TBitBtn; BitBtn2:TBitBtn; BitBtn3:TBitBtn; procedureFormShow(Sender:TObject); procedureOpenIme(imename:string); procedurecloseIme; procedureComboBox1Change(Sender:TObject); procedureBitBtn1Click(Sender:TObject); procedureBitBtn2Click(Sender:TObject); procedureBitBtn3Click(Sender:TObject); private {Privatedeclarations} public {Publicdeclarations} end; var Form1:TForm1; implementation {$R*.DFM} procedureTForm1.FormShow(Sender:TObject); var j:integer; begin forj:=0toscreen.imes.count-1do begin ComBoBox1.Items.Add(screen.Imes.strings[j]); //获取系统中已安装的中文输入法 end; end; procedureTform1.OpenIme(imename:string); var I:integer; myhkl:hkl; begin ifImeName<>then begin ifScreen.Imes.Count<>0then begin I:=scr .Imes.indexof(imename); ifI>=0then myhkl:=hkl(screen.Imes.objects[i]); activatekeyboardlayout(myhkl, KLF_ACTIVATE);//设置相应的输入法 end; end; end; procedureTForm1.closeime; var myhkl:hkl; begin myhkl:=GetKeyBoardLayOut(0); ifImmIsIME(myhkl)then //判断是否在中文状态,若是则关闭它 immsimulateHotkey(handle, IME_CHotKey_IME_NonIME_Toggle); end; procedureTForm1.ComboBox1Change(Sender:TObject); begin OpenIme(ComboBox1.Text); end; procedureTForm1.BitBtn1Click(Sender:TObject); begin immsimulateHotkey(handle, IME_CHotKey_shape_Toggle);//切换半角和全角模式 end; procedureTForm1.BitBtn2Click(Sender:TObject); begin immsimulateHotkey(handle, IME_CHotKey_symbol_Toggle); //切换中文标点模式和英文标点模式 end; procedureTForm1.BitBtn3Click(Sender:TObject); begin closeime; end; end.本程序在Delphi3.0/4.0下通过。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:使用Delphi心得两则
下一篇:删除文本文件中的多余空格
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash