你见过吗?中文输入法在程序中莫名消失的奇怪事~~~~~~~~

lxl 2002-10-24 11:52:53
我做了一个程序,
其中有一FORM中有一输入中文的EDIT,在刚刚进入程序这个FORM时,可以输入中文,但不知道在做过什么操作后(或者使用了其他对IMEMODE有设置的控件后),在程序中的所有控件就会失去切换输入法的功能。只好退出程序后,重新打开程序,才能使用输入法,
用户使用极不方便,
程序中没有对IME作过相关的编程处理,但有控件对IME等相关属性作过设置
这些对输入法有影响吗?
总不至于在点托盘的输入法图标,来作中英文切换都不行吧?
我都急疯了,白思不得其解,
可能你遇过类似问题,
请不吝指教
多谢!

...全文
66 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
older 2002-11-20
  • 打赏
  • 举报
回复
参数为输入法名称,可以从screen.imes里去,别忘了uses ime**
lxl 2002-11-19
  • 打赏
  • 举报
回复
呵呵
“看这个问题都快一个月了”
莫非你是打扫论坛卫生的时候发现的?
多谢板主高抬贵手 :)

这个问题害得我头痛很久,
用你的方法试试看

现在有点怀疑是OS的问题,因为我一直在NT中调程序,从没有出现过这个问题

older 2002-11-19
  • 打赏
  • 举报
回复
procedure SetIme(ImeName:string);
var
I: Integer;
HandleToSet: HKL;
begin
if not SysLocale.FarEast then Exit;
if ImeName <> '' then
begin
if (AnsiCompareText(ImeName, Screen.DefaultIme) <> 0)
and (Screen.Imes.Count <> 0) then
begin
HandleToSet := Screen.DefaultKbLayout;
I := Screen.Imes.IndexOf(ImeName);
if I >= 0 then
HandleToSet := HKL(Screen.Imes.Objects[I]);
ActivateKeyboardLayout(HandleToSet, KLF_ACTIVATE);
end;
end;
end;

在formshow中执行该过程,在需要输入法的控件imeMode设为open方式,不需要输入汉字的设置为close方式;则光标到相应控件后,自动出现输入法
RamjetZhang 2002-11-19
  • 打赏
  • 举报
回复
字体 应该没有任何关系
man8888 2002-11-19
  • 打赏
  • 举报
回复
半水是女生吧?呵呵。。。
我没有遇到这个问题,的确很奇怪!

我的建议:
1、窗体上就放个Edit运行看看。如果问题消失了,那么说明是你代码有问题
或者其他第三方控件有BUG!
如果还是存在这个问题,我想应该是输入法或者Delphi本身、Windows的问题
重装Windows、Delphi、输入法!!!!!

ilmore 2002-11-15
  • 打赏
  • 举报
回复
gzing
王集鹄 2002-11-15
  • 打赏
  • 举报
回复
蚊蚊 :) 好久不见,工作还顺利吧~~

看这个问题都快一个月~~所以来关注一下~~

希望多一点思路能帮助解决问题~~

最关键的是要找到问题的所在~~

伴水的分析实施步骤如下:~~

Step.1 排除字体从新设置
在目前程序中加一按钮
如:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Edit1.Font.Name);
end;
以便侦测字体是否发生改变~~
如果用户的机子上没有安装一些字体,系统会不让激活中文输入~~

Step.2 排除IME从新设置
在目前程序中加一按钮
如:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Format('%s,%d', [Edit1.ImeName, Ord(Edit1.ImeMode)]));
end;
以便侦测IME模式是否发生改变~~

Step.3 排除窗体逻辑错误
编一简单应用程序~~
就只有输入筐~~
字体都为默认~~

Step.4 排除操作系统问题
使用其他程序测试看看

<后选方案>
硬性设置输入法
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.ImeName := Screen.Imes[1];
end;

嘻嘻嘻 可怜不能亲手帮蚊蚊 嘻嘻嘻嘻
lxl 2002-11-15
  • 打赏
  • 举报
回复
我在努力重现问题,
奇怪了为什么操作员那里会出现
而我却怎么也看不到这种情况呢?
wly033 2002-11-14
  • 打赏
  • 举报
回复
如果你的程序在繁体里写的,在简体98运行,会有此问题。
不过这就是字体的问题,你主动设置了字体应该就不会问题了。
还有一点可以证明不是字体设置错误引起了,就是你的程序先能输入中文,只是一段时间后不行了。
lxl 2002-11-14
  • 打赏
  • 举报
回复
革命尚未成功
同志还需努力
lxl 2002-11-14
  • 打赏
  • 举报
回复
多谢楼上大侠关注
可是现在问题绝对不是改IME引起的,
我没有动任何一个控件的IME,还是不行
blueshu 2002-11-12
  • 打赏
  • 举报
回复
你可从注册表中取当前输入法,也可让用户自定义使用哪种输入法。
不改ime不就行了,如在录入界面只让用户有英文输入法和一种汉字输入法
这样做好象比较好!
"HKEY_CURRENT_USER\keyboard layout\preload"
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layouts\"
参考一下
lxl 2002-11-12
  • 打赏
  • 举报
回复
200分没有人要?
lxl 2002-10-27
  • 打赏
  • 举报
回复
应该不是操作系统的问题
我在两个不同地方的客户都有此现象WIN98
55~~~~~~~~~~~~
还没有人知道吗?
zxkid 2002-10-27
  • 打赏
  • 举报
回复
设置控件的IME...等属性
lxl 2002-10-27
  • 打赏
  • 举报
回复
自己先UP
w_anghe 2002-10-25
  • 打赏
  • 举报
回复
严重关切
lxl 2002-10-25
  • 打赏
  • 举报
回复
还是不行啊,
我直接改*。DFM文件,查找并设置了所有的FONT,
还是不行
怎么办??????
请帮忙UP,也会有分啊
xzhifei 2002-10-24
  • 打赏
  • 举报
回复
你将所有控件设置为:
Font.Charset:=GB2312_CHARSET;
Font.Name:='宋体';

有的字体或类型不支持中文输入,所以,只要一激活它们,就会自动取消中文输入,本人也遇到过。

希望能帮你解决!!
fangchangjiang 2002-10-24
  • 打赏
  • 举报
回复
有这样的事吗?
不会是OS的bug?
加载更多回复(3)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧