输入框自动切换输入法
输入框自动切换输入法
陈理辉
我们在使用 Windows 平台(以下指中文版Windows)的软件时,常常需要输入一些有关
信息,有时在一个编辑框内输入中文,而另一个编辑框却要求输入英文,这时我们不得不
切换输入法。当我们在录入大量上述条件的数据至数据库时,频繁的切换无疑对速度影响
很大,那么能不能在光标落入编辑框内时,就自动切换为所需的输入法呢,答案是肯定的,
Delphi中就可以实现。
在delphi中,可直接键入内容的元件都具有ImeMode、ImeName属性,IME为(Input
Method Editor)的缩写。其中ImeMode 为枚举型变量,取值为
(imDisable,imClose,imOpen,
imDontCare,imSAlpha,imAlpha,imHira,imSKata,imKata,imChinese,imSHanguel,
imHanguel),默认为imDontCare,其他几种属性值与本文没有很大关系,内容又多,因此略过。
ImeName也是枚举型变量,默认为空,具体取值范围与系统中所装输入法有关,在Delphi
启动时,自动检测得变量取值范围,对于中文版Windows而言,智能ABC输入法、全拼
输入法都是缺省安装的。
例如:一个用户登录窗口要求输入用户名(中文),口令(英文字母与数字的组合)。假设
用户名为“陈理辉”,口令为“student"。设计步骤如下:
1.新建一窗体,设置其属性为,Caption:′登录窗口′;Name:′LoginForm ′;BborderStyle:bsDialog;FormStyle:fsStayonTop;Position:poScreenCente
r 。
2.在窗体中放入两个TLabel构件,分别设置为 Caption:′请输入用户名:′和Caption:
′密码:′。
3.在窗体中放入一个TEdit构件,设置为
Name:UserNameEdt;Text:′′;ImeName:′智
能ABC输入法′。
4.在窗体中放入一个TEdit构件,设置为
Name:PassWordEdt;Text:′′;PasswordChar:
′,′。
5.放入一个TButton构件,设置为Caption:′确认(,O)′;Name:OkBtn。
双击该构件加
入如下代码:
procedure TLoginForm.OkBtnClick(Sender:TObject);
begin
if (UserNameEdt.text=′陈理辉′)and(PasswordEdt.TExt=′student′)
then begin ShowMessage(′密码正确,登录成功~′);
Application.Terminate;
end
else ShowMessage(′密码错误,请再试。′);
end;
6.放入一个 TButton 构件,设置为 Caption:′取消(,C)′Name:CancelBtn。双击该构
件加入如下代码:
procedure TLoginForm.CancelBtnClick
(Sender:TObject);
begin
Application.Terminate;
end;
7.将Project存为Login.dpr,将LoginForm设为主窗口(点Project|Options,选Forms标签
页,点Main Form下拉框,选LoginForm,按Ok),按F9运行。
不用手工切换输入法是不是很方便,以上在Delphi 2.0 ,3.0 上通过。