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組件的的各列是不可見的,因此只能在運行時刻進行設置。

 ?。▓D3)

  組件屬性為: 組件 屬性 屬性值 label1 caption 請選擇輸入法 combobox1 table1 databasename e:\ tablename test.db datasource1 dataset table1 dbgrid1 datasource datasource1
  在該例中,假設我們的Aaa字段為中文內容,Bbb和Cclearcase/" 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.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97