bestlong 怕失憶論壇
標題:
資料輸入使用者輸入法個人化
[打印本頁]
作者:
bestlong
時間:
2010-10-29 13:51
標題:
資料輸入使用者輸入法個人化
單據錄入用戶輸入法個性化
參考來源
http://www.cnblogs.com/qzfitsoft/archive/2010/09/11/1823726.html
如今輸入法繁多,用戶在使用軟件錄入單據,每錄入一個信息,跳到下一個輸入框要不斷的切換輸入法,很麻煩。
無聊時在軟件系統設置加了一個輸入法個性化功能,每個用戶只要選擇了自己常用的輸入法後,錄入數據時無需一直切換輸入法。
方法很簡單:
1。 讀入系統輸入法列表,讓用戶選擇輸入法,並保存輸入法到INI文件
2。 在窗體基類裡動態修改Component的ImeName屬性
部分實現代碼:
//獲取系統輸入法列表
edtIME.Items.Clear;
for i := 0 to Screen.Imes.Count - 1 do
edtIME.Items.Add(Screen.Imes.Strings[i]);
IniIME := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'sys.ini');
edtIME.Text := IniIME.ReadString('IME', 'MYIME', '');
複製代碼
//統一輸入法
for i := 0 to ComponentCount - 1 do
begin
if Components[i] is TdxDBEdit then
TdxDBEdit(Components[i]).ImeName := SYSIME;
if Components[i] is TdxEdit then
TdxEdit(Components[i]).ImeName := SYSIME;
if Components[i] is TdxDBMemo then
TdxDBMemo(Components[i]).ImeName := SYSIME;
if Components[i] is TdxMemo then
TdxMemo(Components[i]).ImeName := SYSIME;
if Components[i] is TdxDBButtonEdit then
TdxDBButtonEdit(Components[i]).ImeName := SYSIME;
if Components[i] is TdxButtonEdit then
TdxButtonEdit(Components[i]).ImeName := SYSIME;
if Components[i] is TdxDBPickEdit then
TdxDBPickEdit(Components[i]).ImeName := SYSIME;
if Components[i] is TdxPickEdit then
TdxPickEdit(Components[i]).ImeName := SYSIME;
if Components[i] is TdxDBDateEdit then
TdxDBDateEdit(Components[i]).ImeName := SYSIME;
if Components[i] is TdxDateEdit then
TdxDateEdit(Components[i]).ImeName := SYSIME;
end;
複製代碼
經lotsbug指點,重新寫了代碼
//統一輸入法
if SYSIME <> '' then
for i := 0 to ComponentCount - 1 do
begin
if Components[i] is TWinControl then
if IsPublishedProp(Components[i], 'ImeName') then
if GetPropValue(Components[ i], 'ImeMode', True) = 'ImChinese' then
SetPropValue(Components[i], 'ImeName', SYSIME);
end;
複製代碼
歡迎光臨 bestlong 怕失憶論壇 (http://www.bestlong.idv.tw/)
Powered by Discuz! X1.5