怎么样让窗体中的DBGrid,Edit等控件得到焦点时系统不自动切换输入法
DbGrid,Edit等控件都有ImeMode,和 ImeName 属性,在ImeName中设置了一种输入法后,在控件得到焦点后就强制转换为该输入法,怎样控制可以是系统不自动切换输入法,让输入法保持以前的状态? 问题点数:100、回复次数:8Top
1 楼jackie168(http://soft.eastrise.net)回复于 2005-01-13 10:53:01 得分 30
ImeName 属性为空,不要去设置它不就行了。。。Top
2 楼gxgyj(杰克逊)回复于 2005-01-13 10:53:07 得分 20
如果你要那样,那为什么还要设置ImeName...
不设置不就行了吗.....Top
3 楼Kevin_Lmx(繁华阅尽)回复于 2005-01-13 10:59:38 得分 10
^_^
ImeMode和ImeName就是用来转换输入法的.....Top
4 楼afei78223(阿飞)回复于 2005-01-13 12:02:45 得分 0
谢谢各位!^_^
假如用户想要自己定义输入法,(比如有的人用智能ABC,有的人用五笔字型,有的人用紫光拼音输入)如果不是通过快捷键切换输入法,而是希望自己在程序运行的时候动态修改DBGrid的 ImeName属性好象不能实现切换到指定的输入法,但是Edit却可以实现切换到指定的输入法,不知道是不是DbGrid 的问题?Top
5 楼cqwty(笨小孩)回复于 2005-01-13 12:34:43 得分 10
dbgrid也有和edit一样的属性啊。Top
6 楼lzy6204(为了忘却的记忆)回复于 2005-01-13 13:02:10 得分 20
//取得输入法
function TForm1.get_ime: string;
var
i: integer;
HKL1: HKL;
begin
result := '';
HKL1 := getkeyboardlayout(0);
for i := 0 to screen.imes.count - 1 do
begin
if HKL1 = HKL(screen.imes.Objects[i]) then
begin
result := screen.imes.Strings[i];
end;
end;
end;
//设置输入法
procedure TForm1.set_ime(ImeName: string);
var
i: Integer;
HKL1: HKL;
begin
if not SysLocale.FarEast then Exit;
if ImeName = '' then
ActivateKeyboardLayout(Screen.DefaultKbLayout, KLF_ACTIVATE)
else
begin
if (AnsiCompareText(ImeName, Screen.DefaultIme) <> 0) and (Screen.Imes.Count
<> 0) then
begin
HKL1 := Screen.DefaultKbLayout;
i := Screen.Imes.IndexOf(ImeName);
if i >= 0 then HKL1 := HKL(Screen.Imes.Objects[i]);
ActivateKeyboardLayout(HKL1, KLF_ACTIVATE);
end
end;
end;Top
7 楼shxng(重新开始。。。)回复于 2005-01-13 19:55:13 得分 5
收藏Top
8 楼coolnan(踏平九城)回复于 2005-01-14 16:02:29 得分 5
你真猛,收藏!Top




