- 註冊時間
 - 2006-3-13 
 - 最後登錄
 - 2025-7-23 
 - 在線時間
 - 675 小時 
 - 閱讀權限
 - 200 
 - 積分
 - 417 
 - 帖子
 - 1109 
 - 精華
 - 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;
 
  複製代碼 |   
 
  
 |