Delphi下编程实现中文输入-Delphi-优质IT资源分享社区

yutingzhidong
总版主
总版主
  • UID2
  • 粉丝22
  • 关注1
  • 发帖数11
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:308回复:0

Delphi下编程实现中文输入

楼主#
更多 发布于:2016-06-14 11:58

BorlandDelphi以其
强大的
功能及和高效的可 视化开发环境为
广阔程序设计员所喜欢 。尤其是它封装了WINDOWSAPI函数,能简单有利地势 用WINDOWS资本,大大加快了程序开发速度 。
在平常的计算机操作中,中文输入是不行逃过的 。
使用者也许喜欢不一样的中文输入法(inputmethodeditor,简称IME),这就只能
经常点击
使命栏中的中文图标或用CTRL+Space,CTRL+Shift热键切换,初学者用起来很不简单 。对于 这一疑问,
能够在开发软件时,在程序中设置消费者喜欢的中文输入法,简单消费者的
使用 。Delphi 中只有少量控件如TEdit
支撑IME,而且该
功能不强,不能在运行时更改输入法 。
小编经过
实践和探究,查找了
有关的IME
资料,利 用了WINDOWSAPI函数,完成了IME的
功能 。
SEO常犯的一些过错及改进主张网站外链呈现的疑问及解决办法
手机能成救命草 小编教您五招自救办法揭秘!十二星座女人最喜欢的自拍个性
常用函数有:
API函数:BOOLImmSimulateHotKey
(HWNDhWnd,DWORDdwHotKeyID);//
仿照热键
查找引擎优化成功必先解决的三个大忌小白变大师 人像拍照速成窍门大集合
怎么让Windows 7节约电池电量?菜鸟必备镜头之大光圈定焦镜拍照窍门
其间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);
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.
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:=scr .Imes.indexof(imename);
ifI>=0then
myhkl:=hkl(screen.Imes.objects);
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.





优质IT资源分享社区为你提供此文。
本站有大量优质Delphi教程视频,资料等资源,包含Delphi基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。
Delphi教程视频
优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

微信小程序开发

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客