Borland C++ Builder输入法的自动切换
发表于:2007-07-04来源:作者:点击数:
标签:
邓世刚 左晓辉 摘要 本文介绍了在C++ Builder中自动切换输入法的实现。就其原理和方法进行论述,并给出了一个简化的实例。 关键字 界面,切换技术 ,C++ Auto-switch input method in Borland C++ Builder Deng Shigang Zu0 Xiaohui Computer Science Departm
邓世刚 左晓辉
摘要 本文介绍了在C++ Builder中自动切换输入法的实现。就其原理和方法进行论述,并给出了一个简化的实例。
关键字 界面,切换技术 ,C++
Auto-switch input method in Borland C++ Builder
Deng Shigang Zu0 Xiaohui
Computer Science Department ,Xuzhou Normal University
Abstract This article describes a resolving method that Auto-switch input
method in Borland C++ Builder. This paper discusses the theories and methods
about these questions and a simple sample is given.
Keywords Interface ,Switch technology ,C++
Borland C++ Builder(BCB)是一种优秀的可视化编程工具,把应用程序界面的开发简化到无与伦比的程度,从而极大地缩短了软件的开发周期。但是在实际的开发中,友好的用户界面却不是仅仅使用可视化组件就可以简单地完成的,这不仅要考虑到人机工程,最重要的是要使操作尽量简单。例如在图书管理系统的设计中,数据输入是一项繁重的工作,最令输入人员头疼的是中英文输入方式的转换,如输入书名时要切换到中文输入方式,而输入书号时又要切换到英文输入方式,如果软件能提供输入方式的自动转换,而不需要输入人员手工切换,就可以大大提高软件的亲和力,并减轻输入的工作量。本文即讨论在BCB3.0中的输入法自动切换功能的实现。
一、 输入法与输入模式
C++ Builder为象中国这样的使用双字节Windows的国家提供了相应的输入法,在Tedit等编辑组件中都包含ImeName和ImeMode两个属性,分别用于控制输入法和输入模式。
ImeName属性:设置组件的输入法。在设计阶段可从ImeName属性的下拉列表中选择输入法,在运行时刻可用下列语法设置:Edit1-〉ImeName=”
智能ABC输入法”, C++ Builder自动调用保护方法SetIme(void)激活IME(Input
Method Editor)。设置了ImeName属性后,当输入焦点进入Edit1时,输入法自动转换成智能ABC拼音输入,而输入焦点从Edit1失去时,又会自动切换到英文状态。
ImeMode属性:设置组件输入法的模式,一些比较重要的值及意义见下表:
imdontcare
激活用户最后采用的输入法
imalpha
接受双字节的罗马字符输入
imchinese
接受双字节汉字输入
imclose
关闭前台输入窗,但输入法仍起作用
imopen
打开输入窗
imsalpha
接受字节的罗马字符输入
通常,对于输入数字和字母的组件,一般设置ImeMode为imSAlpha,而不设置ImeName;而对于输入中文的组件,一般设置ImeName,而不设置ImeMode,建议使用以上经验。
二、 设计时刻设置输入法
窗体布局如图1,组件属性为:
组件
属性
属性值
label1
caption
书名
label2
caption
作者
label3
caption
书号
edit1
imename
全拼输入法
Edit1用于输入中文书名,Edit2用于输入英文作者名,Edit3用于输入书号。
(图1)
运行该程序时会发现,当输入焦点在三个Edit组件间切换时,相应的输入法也自动切换,但是这种方法有一个缺点,就是输入法固定,若用户不用全拼输入法,反而会引起麻烦,解决的方法就是在运行时刻动态改变输入法。
三、 运行时刻设置输入法
在窗体增加一个ComboBox组件ComboBox1,并取消上面设置的Edit1的ImeName属性。窗体布局如图2。
1. 在窗体的OnCreate事件过程加入以下代码:
ComboBox1-〉Items-〉Clear();
ComboBox1-〉Items=Screen-〉Imes;
这里使用了Tscreen类型的全局系统变量Screen,该变量在项目(project)建立时自动创建,代表屏幕设备,由其属性可获得当前活动窗体、当前活动控制、屏幕宽度和位深度等有用信息,其中Imes属性包含系统中所有能使用的输入法。
2. 在ComboBox1的OnChange事件过程输入以下代码:
Edit1-〉ImeName=ComboBox1-〉Text;
3.运行程序,只要在下拉列表中选择了输入法,再将输入焦点移入‘中文书名’编辑框时,输入法自动切换到所选输入法,而移出焦点时,又切换回英文方式。
(图2)
四、 与
数据库组件的配合使用
在实际应用中,大量的数据输入通常发生于数据库应用程序,这里用实例说明在数据库应用程序中普遍使用的DBGrid组件如何采用这种技术。
当使用DBGrid组件进行数据输入和修改时,如图3,每一列对应数据库的一个字段,而不同的字段要求的输入方法不同,在这种情况下,为了实现输入方法的自动切换,只能使用我们上面讨论的第二种方法,因为在设计时刻,DBGrid组件的的各列是不可见的,因此只能在运行时刻进行设置。
(图3)
组件属性为:
组件
属性
属性值
label1
caption
请选择输入法
combobox1
table1
databasename
e:\
tablename
test.db
datasource1
dataset
table1
dbgrid1
datasource
datasource1
在该例中,假设我们的Aaa字段为中文内容,Bbb和C
clearcase/" target="_blank" >cc字段为英文内容,我们可以这样设置:
1. Form1的OnCreate事件过程与三相同。
2. ComboBox1的OnChange事件过程输入以下代码:
DBGrid1-〉Columns-〉Items[0]-〉ImeName=ComboBox1-〉Text;
DBGrid1-〉Columns-〉Items[1]-〉ImeName=imAlpha;
DBGrid1-〉Columns-〉Items[2]-〉ImeName=imAlpha; //英文输入模式
3.运行程序,首先在下拉列表中选择了输入法,之后当输入焦点移入Aaa字段时,输入法自动切换到所选输入法,而移入到Bbb和Ccc字段时,又切换回英文方式。
以上讨论了在C++ Builder中自动切换输入法的几种途径,实践证明,在有大量数据输入的系统中,采用这种技术,可以在很大程度上减轻输入量,是一种很好的界面形式。有兴趣的朋友们不妨将这种技术用在自己的软件中,相信一定会使你的软件增色不少。
原文转自:http://www.ltesting.net