bestlong 怕失憶論壇

 

 

搜索
bestlong 怕失憶論壇 論壇 Delphi 資料輸入使用者輸入法個人化
查看: 2888|回復: 0
go

資料輸入使用者輸入法個人化 [複製鏈接]

Rank: 9Rank: 9Rank: 9

1#
發表於 2010-10-29 13:51 |只看該作者 |倒序瀏覽 |打印
單據錄入用戶輸入法個性化

參考來源 http://www.cnblogs.com/qzfitsoft/archive/2010/09/11/1823726.html

如今輸入法繁多,用戶在使用軟件錄入單據,每錄入一個信息,跳到下一個輸入框要不斷的切換輸入法,很麻煩。
無聊時在軟件系統設置加了一個輸入法個性化功能,每個用戶只要選擇了自己常用的輸入法後,錄入數據時無需一直切換輸入法。
方法很簡單:
1。 讀入系統輸入法列表,讓用戶選擇輸入法,並保存輸入法到INI文件
2。 在窗體基類裡動態修改Component的ImeName屬性

部分實現代碼:
  1. //獲取系統輸入法列表
  2. edtIME.Items.Clear;
  3. for i := 0 to Screen.Imes.Count - 1 do
  4.   edtIME.Items.Add(Screen.Imes.Strings[i]);
  5. IniIME := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'sys.ini');
  6. edtIME.Text := IniIME.ReadString('IME', 'MYIME', '');
複製代碼
  1. //統一輸入法
  2. for i := 0 to ComponentCount - 1 do
  3. begin
  4.   if Components[i] is TdxDBEdit then
  5.     TdxDBEdit(Components[i]).ImeName := SYSIME;
  6.   if Components[i] is TdxEdit then
  7.     TdxEdit(Components[i]).ImeName := SYSIME;
  8.   if Components[i] is TdxDBMemo then
  9.     TdxDBMemo(Components[i]).ImeName := SYSIME;
  10.   if Components[i] is TdxMemo then
  11.     TdxMemo(Components[i]).ImeName := SYSIME;  
  12.   if Components[i] is TdxDBButtonEdit then
  13.     TdxDBButtonEdit(Components[i]).ImeName := SYSIME;
  14.   if Components[i] is TdxButtonEdit then
  15.     TdxButtonEdit(Components[i]).ImeName := SYSIME;
  16.   if Components[i] is TdxDBPickEdit then
  17.     TdxDBPickEdit(Components[i]).ImeName := SYSIME;
  18.   if Components[i] is TdxPickEdit then
  19.     TdxPickEdit(Components[i]).ImeName := SYSIME;
  20.   if Components[i] is TdxDBDateEdit then
  21.     TdxDBDateEdit(Components[i]).ImeName := SYSIME;
  22.   if Components[i] is TdxDateEdit then
  23.     TdxDateEdit(Components[i]).ImeName := SYSIME;
  24. end;
複製代碼
經lotsbug指點,重新寫了代碼
  1. //統一輸入法
  2. if SYSIME <> '' then
  3. for i := 0 to ComponentCount - 1 do
  4. begin
  5.   if Components[i] is TWinControl then
  6.     if IsPublishedProp(Components[i], 'ImeName') then
  7.       if GetPropValue(Components[ i], 'ImeMode', True) = 'ImChinese' then
  8.         SetPropValue(Components[i], 'ImeName', SYSIME);
  9. end;
複製代碼
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw
‹ 上一主題|下一主題

Archiver|怕失憶論壇

GMT+8, 2025-5-2 04:54 , Processed in 0.014824 second(s), 10 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.