为什么 richedit 控件不能正确显示汉字(100分)

  • 主题发起人 主题发起人 zhmj
  • 开始时间 开始时间
Z

zhmj

Unregistered / Unconfirmed
GUEST, unregistred user!
同一软件,在有的机器上能正常显示汉字,有的机器上就不能正常显示汉字.
主要表现为:1.不能按整个汉字处理(如删除时,将会删除半个汉字);
2.当一行折回时,如果行末卡在半个字上,下一行就成乱码.
(设置为 中文字符集不起作用)
当然,大部分计算机是正常的,只有个别计算机不正常.
请问,什么原因,如何解决.(可能与IE5.0有关)
 
哪位知道?
 
应该是与系统的dll有关吧?
 
这与系统的DLL关系不大,而是与Delphi中处理TStrings对象有关,
原因分析如下:
如果你编辑TMemo控件,直接在StirngEditor中编辑Lines时,
你同样会发现输入中文会出现问题(到此可以看出TStrings不支持中文)
第二:查看TRichEdit的源代码,发现它的内容其实是存放在TRichEditString中的
而这个对象是由TString继承而来的,当然它也就会在存放中文时出问题啦
再来分析这什么TStrings不支持中文,原因也就会很清楚了,TString中的属性
Strings有两个方法Put和Get方法一个是写,一个是读,再看一下TStringList中的
相应的方法,你会发现,所有对Strings的操作,其实就是将String直接相加,
也就是说让两个String用'+'相联系,如果你在程序中直接这样做的话也会不支持中
文的(不是完全错而是在显示上也会存在问题)
解决办法:继承TStrings对象,生成自己的TYouStrings对象,注意只要修改其中对
String的存放部分也就可以了
然后将TRichEditString由你TYouString继承而来,其它不变,重新编译,
注意要将TRichEdit改名做为自己的的控件,TYouRichEdit。
可以支持中文啦!!!!!
 
与System目录下的Riched32.dll有关,换一个能正常显示汉字机器上的。
 
to dop
非常感谢!另外问一下,为什么在有的计算机上没有问题呢?(windows 95 or
windows 98) 只有少数计算机有问题呢?
 
不用'+'联系应该用什么联系呢?
 
因为这些机器已经用了英文版本的RICHED32。DLL了!
 
看你的 riched32.dll 的语言版本,
英文的,就是你所说的问题,并且如果选用 前面是@的字体,
汉字就是横着的。
如果是中文的,没有一点问题。
一般中文的office 会带有中文的 riched32.dll,
 
agree SuperMMX
看看riched32.dll 的语言版本
 
多人接受答案了。
 
后退
顶部