说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Delphi下编程实现中文输入

HTML文档下载 WORD文档下载 PDF文档下载
Delphi下编程实现中文输入

BorlandDelphi以其强大的功能及和高效的可 视化开发环境为广大程序设计员所青睐。尤其是它封装了WINDOWSAPI函数,能方便地利 用WINDOWS资源

大大加快了程序开发速度。

在平时的计算机操作中

中文输入是不可避免的。 使用者可能喜欢不同的中文输入法(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:=screen.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下通过。

CoconutKit:iOS开发必备的开源组件库 个人隐私是如何“泄漏”的:国内外互联网企业隐私策略对比 惠普2014年Q1财报:净利润同比增16% PC业务逆势好转 “阅后即焚”挖谷歌墙角,GAE技术大牛跳槽Snapchat 日800万访客、20万RPS网站的5个9可用性架构 程序员想找好工作?那就学好Linux吧! 一周消息树:开源专家袁萌,国产COS操作系统是“杂种”,不是中国软件梦 移动周报:对话智能硬件云服务平台Yeelink Node.app:用Node.js API开发iOS“原生”应用 Google Project Tango:能3D捕捉的智能手机 成功打造Evernote API生态系统的五大经验 研发周报:Google与Facebook的产品研发之道 AMD高级副总裁Lisa Su访华 宣布引领AMD复兴的五大战略 一周热点:IBM新技术使网速达400G/s,硬盘会“烧掉”吗 特种作战,纽约极客企图建造现实中的“潘多拉星球” 领先Google 150年的数据可视化和“不务正业”的超级计算机 苹果会成为新微软的四大理由 雨血&#183;影之刃:参选2014年Unity游戏及应用大赛 AT&amp;amp;T联手IBM对抗AllSeen:“晚点和堵车”将成历史 微软WP春季更新将降低手机生产成本 意在开拓新兴市场 私人定制,十款最佳Node.js MVC框架 开发者“逆袭”,就等你一票! 基于多路云计算方案焕发新春 浪潮抢发E7 v2服务器 美国人眼中的腾讯 英特尔发布64位凌动处理器Merrifield 布局移动市场 OvershareKit:开源的iOS社交分享工具库 Ruby 2.1.1发布,改进系统加速,服务器兼容等问题 专访Ejoy2D作者云风:因Lua而生的开源图形引擎 当DDoS跨入400Gbps时代,那些来自孩子们的攻击该如何应对! Mesos渐入主流,Twitter模式有望“无限复制” 几十亿美元当头,你现实世界信息是否还会安全? 二个简单Access问题 请各位高手指教:怎样用VB读出WORD中指定区域的内容。 查询的表单提交 求多线程SOCK连接程序 二个简单Access问题 关于计算学生人数??? 二个简单Access问题 二个简单Access问题 二个简单Access问题 JBUILDER 6 FOR LINUX 的注册码谁有啊 VB中如何判断打印机的状态(空闲还是脱机等)? 难道没有高手了吗?为解决在Win32上MPEG-1视频流播放延时问题再次悬赏6000元人民币 关于Exp时候的4031错误? JBUILDER 6 FOR LINUX 的注册码谁有啊 谁会用safileup上传下载文件? 关于OCX控件的两个问题 数据库更新不成功的问题!(菜鸟高分提问!) 求助:多线程访问数据库的问题 触发器?很简单的 紧急求助???狂加分!!! 不相上班,怎么办呀?各位有何高招? 学习ATL的建议!!! 请问: 多个javabean怎么相互调用?如。。。。 二个简单Access问题 qq号码集合之增强版 这样的查询该怎样实现呢? 求:谁有立方体旋转的程序?需要源代码!谢谢,万分焦急!!!谢谢,100分送!!! 怎样实现这样的界面? 关于多线程中操作数据库 给一个c#连接sybase数据库的例子,谢谢! c#datagrid 增加,删除,修改 工作急需,help!!!!!!!!!!!!! 请哪位高手帮小弟做一个井字棋游戏作业,救小弟一命,感激投地并送以高分,我的信箱见内! Exchange2000的怪问题,请高手指教。 三层中的问题? datawindow加计算域或line的程序加在哪? 请问各位收邮件的程序采用的是什么组件??!!因为CFPOP,JMAIL在收中文附件时都会出现乱码。参与有分。 求助EXCEL解密 !!大送分99分! 请教JAVA中读一个文件的时候 怎么锁住它 不让别的程序来写 在ASP页面中怎样获得域用户的信息? 求助: 移值C++出问题 谁能解救我于水火???怎样解决循环运算次数太大造成程序死机的问题? 谁有delphi或bcb的简单的画图程序的源码 二个简单Access问题 Access不支持位运算吗? qq号码集合之增强版 递归函数的工作原理! 二个简单Access问题 如何在声音控制中将“全部静音(M)”选中,实现系统静音?在线等候! 韩国变性艺人河莉秀以“性感之枪”姿态攻陷香港 如何用javascript在客户端清空<input type=file>的value值?50分! 水化成冰后,重量增加了吗?假设:100克水化成冰后,冰的重量和水的重量相同吗?一楼能说清楚一点吗? 宇宙黑洞的秘密 谜语,what can you never hold with your right hand? 把1.1克铁,铝混合物溶于200毫升5摩尔每升的盐酸中体积变化忽略该混合物中铝、铁的n 关于神秘的黑洞黑洞的产生,蠕虫洞,黑洞真的是时空隧道吗?或关于宇宙的知识!地球会毁灭吗? 手机短信谜语有高手来猜吗?何水无鱼,何山无石,何书无枝,何子无父.何女无夫,何城无市,按序每打一个字连成一句很浪漫的话 什么是营养繁殖 中华传统美德文章要具体一点的,不要太短.要文章,不是故事 在我们的生活中,存在不少浪费资源和污染环境的现象.就你所见的,发挥想象,写一篇关于保护环境的文章.急 为什么低纬度地区温度高? 很简单滴谜语哦..来猜猜这匹马办户口了,打一动物! 索马里暖流的成因同上 北斗授时 关于祖国60年的成就.不要太长的,5行就行了! 帮忙猜下谜语用心载着你,不舍上轻舟,已然不言中,双人日下行,飞鸟离鹅去,马口解猜疑.(每句猜一字,连成一句问候语.)主要准确. 北斗授时手表求解释,到底行吗 春节时中国最隆重的传统节日它易居中国古代历法把正月作为岁首这一节日最早起源于? 索马里暖流形成原因? 北斗七星 春节是我国重要的传统节日,根据历法成分,下列节日于春节不同的是()A.中秋节B.元宵节C.清明节D.重阳节速度! 请猜下谜语,并告诉答案, 北斗七星电影求求求, 谈谈使用煤这种能源会给我们的生活带来哪些影响 煤燃烧后留下煤渣 请教索马里暖流的成因已经知道索马里寒流的成因了,只是不明白暖流是怎么形成的,海水不是从高纬流向低纬吗?为什么是暖流呢? 一根普通的铁丝做来的弹簧弹性不够怎么办 一定温度下,某氯化钠溶液中氢离子浓度为1*10-6摩尔,则A、溶液显酸性 B、Kw=10*-14C、该溶液稀释10倍PH为7D、Kw=10*-12 请大家帮帮我猜下这个字谜 为什么把铁丝弯成弹簧,弹性就增大了很多 我们的生活和生产离不开能源,下列能源中不会对环境造成污染的是------------.(多项选择)A.风能 B.煤C.石油 D.天然气 E.水能 F.太阳能 索马里那里为什么冬季是暖流,从高纬流向低纬的 怎么将一根铁丝手工做成弹簧? 氢离子浓度大于10的-7次方摩尔每升这时候会发生什么?或者这种东西叫什么? 生物在生存和发展中不断什么环境? 怎样给普通铁丝做的弹簧增加弹性 有没有关于"中国近代化进程"和"政治家与和平(或战争)"的大学历史论文能告诉查找的方法吗? 只有在新物种形成时,才发生基因频率的改变.这句话为什么错 2014年的世界杯足球赛是什么时候开始的啊 上下求索为复兴——中国近代化探索之路500——700字 种群基因频率的定向改变是形成新物种的前提基因频率怎么会定向改变那? 2014年世界杯足球赛将于什么时候在哪里举行 考试时填厄加勒斯暖流好还是马达加斯加岛暖流好 进化,新物种产生和基因频率改变分别有什么关系 2014年世界杯具体是在什么时候开始? 请问:地理中厄加勒斯暖流按性质分是什么洋流? 新物种形成的过程就是种群基因频率定向改变的过程对不对 卫星授时手表中的北斗卫星授时手表的原理是什么? 黑洞的秘密有谁可以解答? 历史的选择—纪念中国共产党成立90周年 北斗卫星手表和南京的那个北斗手表一样吗? 为什么莫桑比克暖流没有使沿岸成为热带雨林气候? 反映祖国取得新成就的新闻50~100字最好,最好是写奥运会的,好的追加悬赏越快越好,半小时内的我再增加悬赏20 北斗卫星手表都有什么功能呢? 什么是黑洞神秘的黑洞 反应祖国取得新成就的新闻 北斗授时手表的功能都有哪些? 三个暖流的区别厄家勒斯暖流,马达加斯加暖流,莫桑比克暖流地理位置相近,如何更细致区分呢? 2009年祖国取得了哪些成就谢! 求文档:一杯水化成冰又化成水问质量是否变化?为什么? 黑洞秘密黑洞 长什么样子?请听我说完 ... 如果把量子引力和爱因斯坦相对论结合 计算出来的方程式将会崩溃 如果这个崩溃的数字就存在我们现实中的自然世界呢? 那么想像一下黑洞是什么 那个 木是左边那一丿上有个数字3
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘