許多WINDOWS應用程式的中西文輸入介面中,而中西文的輸入需要反覆切換漢字輸入法,使用起來非常繁瑣。筆者利用DELPHI開發某MIS的過程中,找到了比較簡捷的解決方法。
本文設計環境為DELPHI CLIENT/SERVER SUIT VER3.0(以下簡稱DELPHI3.0),中文WINDOWS'95。
一、DELPHI3.0下Imename 、Imemode屬性
在DELPHI3.0中Tedit、Tmemo、TmaskEdit等編輯元件在應用程式中經常使用,這三種元件都具有Imename、Imemode屬性,Imename屬性是輸入法名稱,在物件觀察器中對應一包括目前系統中所有漢字輸入法的下拉組合框,Imemode屬性是輸入法模式,在物件觀察器中也對應一下拉組合框,組合框包含imClose、imOpen、imChinese、imDontCare、imSAlpha、imAlpha六項內容:
imClose 表示輸入法處於關閉狀態。
ImOpen 表示輸入法處於開啟狀態。
ImChinese 表示處於中文輸入法狀態。
ImDontCare 表示若輸入法處於關閉狀態,則開啟最近一次
使用過的輸入法。
ImSAlpha 表示輸入處於半角狀態。
ImAlpha 表示輸入處於全角狀態。
二、DELPHI下漢字輸入法的編程
在DELPHI3.0中,中西文輸入介面中牽涉輸入的元件都具有Imename、Imemode屬性。在設計輸入介面表單時,請對其中每一元件這二種屬性賦值,就可以在元件獲得焦點時,系統會自動開啟或關閉你所設定的漢字輸入法。但這種程式方法,對使用者來說一點彈性也沒有,若係統所設定的輸入法不是其所擅長的,他們只好再透過WINDOWS'95的輸入法選擇器重新進行選擇。
作者透過在Form下方放置一標籤及下拉組合框,比較靈活的解決了這個問題,範例中的Forma共放置了四個Label、二個Edit 、一個ComboBox、Memo及Button。以下為範例說明:
1.在DELPHI中選擇File選單下的New application產生一新的應用程式。設定新窗體Form1的屬性
Caption=輸入法程式設計範例
2.在Form1中新增一兩個標籤Label1、Label2、Label3及編輯框Edit1、Edit2、Memo1,設定其屬性
Label1.Caption=中文輸入編輯框
Label1.Font.Size=12
Label2.Caption= 西文輸入編輯框
Label2.Font.Size=12
Label3.Caption= 中文多行文字編輯器
Label3.Font.Size=12
Edit1.ImeMode=ImOpen
Edit2.ImeMode=ImDontCare(缺省值)
Memo1.ImeMode=ImOpen
在程式設計時,對輸入西文或西文為主的元件ImeMode屬性一般設為預設值即可;對輸入中文或中文為主的元件,ImeMode屬性一般設為Imopen,而ImeName屬性值在程式中運行時由使用者設定,而此方法的彈性正在於此。另外,將Edit1.Text、Edit2.Text、Memo1.Lines的值設為空。
3.在Form1中新增一標籤Label4,設定其屬性:
圖說 = 選擇喜歡的輸入法
Font.Size=12
Font.Color=紅色
4.在Form1中加入拉組合框Combobox1,在物件觀察器OBJECT INPECTOR中選擇事件列EVENT,雙擊OnDropDown,對此事件編程,寫入以下代碼:
ComboBox1.Items.CommaText:=Screen.Imes.CommaText;
以便將中文WINDOWS'95中已安裝的漢字輸入法添加到下拉組合框中,此處巧妙地利用了TSCREEN類的IMES特性,而IMES特性本身又是一個TSTRING類,其屬性Commatext 包含了Windows'95已安裝的漢字輸入法,將其直接賦值給ComboBox1的對應屬性。否則,如果直接編輯ComboBox1的屬性Items,加入漢字輸入法名稱,會在應用程式發佈時,因使用者機器漢字輸入法的不確定性,造成應用程式的不通用。
5.再在物件觀察器中雙擊OnExit事件,寫入以下程式碼:
Edit1.Imename:=ComboBox1.Text;
Memo1.Imename:=ComboBox1.Text;
6. 在Form1中新增一指令按鈕Button1,設定其屬性:
Caption=退出
Font.Size=12
雙擊此命令按鈕,對其Click事件編程,寫入以下程序:
Close;
7.整個範例程式設計過程完成,保存此應用程式及表單,此時編譯、執行,其介面如下:
首先,利用下拉組合框選擇你喜歡的漢字輸入法,將遊標移到中文輸入編輯框中,會發現你選擇的漢字輸入法自動在螢幕上出現,再將遊標移到西文輸入編輯框中,漢字輸入法自動關閉,如果將遊標放到中文多行文字編輯器中,已選擇的漢字輸入法又會自動出現。
三、結束語
從上面的程式碼可以出,在應用程式的輸入介面中,設定一輸入法選擇下拉組合框,並讓其控制錄入介面中所有可輸入項目的Imename屬性,既可以做到在中西文輸入時不用進行輸入法的來回選擇,更可以做到讓使用者選擇其最喜歡的漢字輸入法,錄入介面對使用者來講非常友善、方便、快速。