許多Windows應用程序的中西文錄入界面中,中西文的錄入需要反復切換漢字輸入法,這樣使用起來非常麻煩,下面來介紹一種比較簡便的解決方法。本文的程序設計環境為Delphi Client/Server Suit Ver 3.0(以下簡稱Delphi 3.0)和中文Windows 95。
1.Delphi下的Imename、Imemode屬性
在Delphi 3.0中的Tedit、Tmemo、TmaskEdit等編輯元件在應用程序中經常使用,這三種元件都具有ImeName、ImeMode屬性。其中ImeName屬性是輸入法名稱,在對象觀察器中對應一個包括當前系統中所有漢字輸入法的下拉組合框;ImeMode屬性是輸入法模式,在對象觀察器中也對應一個下拉組合框,組合框中包含imClose、imOpen、imChinese、imDontCare、imSAlpha、imAlpha六項內容。
imClose 表示輸入法處於關閉狀態;
ImOpen 表示輸入法處於打開狀態;
ImChinese 表示處於中文輸入法狀態;
ImDontCare 表示若輸入法處於關閉狀態則打開最近一次使用過的輸入法;
ImSAlpha 表示輸入處於半角狀態;
ImAlpha 表示輸入處於全角狀態。
2.Delphi下漢字輸入法的編程
在Delphi 3.0中,中西文錄入界面中涉及到的輸入元件都具有ImeName、ImeMode屬性。在設計錄入界面表單時,對其中每一個元件的這兩種屬性賦值,系統就可以在元件獲得焦點時自動打開或關閉所設定的漢字輸入法。但是對於用戶來說,這種編程方法一點靈活性也沒有。若系統所設定的輸入法不是用戶所喜歡的,那麼只好再通過Windows 95的輸入法選擇器重新選擇。其實,通過在Form下放置一個標簽及一個下拉組合框的方法就可以靈活地解決這個問題了。本文示例的Form中共放置了四個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,設定其屬性為:
Caption = 選擇最喜歡的輸入法
Font.Size=12
Font.Color=紅色
(4)在Form1中添加一個下拉組合框ComboBox1,在對象觀察器Object Inpector中選擇Events選項卡,雙擊OnDropDown,對此事件進行編程,其代碼如下:
ComboBox1.Items.CommaText:=Screen.Imes.CommaText;
上面這個語句可以將中文Windows 95中安裝的漢字輸入法添加到下拉組合框中,它巧妙地運用了TScreen類的Imes特性,而Imes特性本身又是一個Tstring類,其屬性Commatext包含了Windows 95已安裝的漢字輸入法,可以將其直接賦值給ComboBox1的相應屬性。如果直接編輯ComboBox1的屬性Items來添加漢字輸入法名稱,則會在應用程序發布時,因用戶機器漢字輸入法的不確定性造成應用程序的不通用性。
在對象觀察器中雙擊OnExit事件,對此事件進行編程,代碼如下:
Edit1.ImeName:=ComboBox1.Text;
Memo1.ImeName:=ComboBox1.Text;
(5)在Form1中添加一個命令按鈕Button1,設置其屬性為:
Caption=退出
Font.Size=12
雙擊此命令按鈕,對Click事件進行編程,代碼如下:
Close;
至此,整個示例的程序設計過程就完成了,保存此應用程序及表單,再進行編譯、運行。
3.漢字輸入法的使用
首先在下拉組合框中選擇你所喜歡的漢字輸入法,將光標移到中文輸入編輯框中就會發現所選的漢字輸入法已自動出現在屏幕上;再將光標移到西文輸入編輯框中,漢字輸入法就會自動關閉;如果將光標移到中文多行文本編輯框中,則已選中漢字輸入法又自動出現了。
從上面的程序中可以得出,在應用程序的錄入界面中,設置一個選擇輸入法的下拉組合框,並讓其控制錄入界面中所有可輸入項的ImeName屬性,既可以做到在中西文錄入過程中不必進行錄入法的來回切換,還可以做到讓用戶選擇自己最喜歡的漢字輸入法,而且這樣的錄入界面對於用戶來說也是非常友好、方便、快捷的。PCC
必須用'標識符,但直接用'會出錯
tdataset.filter:='somebodyname='+chr(39)+'李*'+chr(39)