- 註冊時間
- 2006-3-13
- 最後登錄
- 2025-1-10
- 在線時間
- 673 小時
- 閱讀權限
- 200
- 積分
- 417
- 帖子
- 1107
- 精華
- 0
- UID
- 2
  
|
單據錄入用戶輸入法個性化
參考來源 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;
複製代碼 |
|