单据录入用户输入法个性化(修改)

如今输入法繁多,用户在使用软件录入单据,每录入一个信息,跳到下一个输入框要不断的切换输入法,很麻烦。

无聊时在软件系统设置加了一个输入法个性化功能,每个用户只要选择了自己常用的输入法后,录入数据时无需一直切换输入法。

方法很简单:

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;
原文地址:https://www.cnblogs.com/qzfitsoft/p/1823726.html