修改代码令TMS组件库的THTMLLabel控件支持中文换行
最近使用THTMLLabel控件时候发现,如果文本中包含中文的时候,该控件不能很好的换行。该控件也没有WordWrap属性,查看源代码后发现如下情况:
1,WordWrap=Not Ellipsis;
该控件虽然没有WordWrap属性,但实际上Ellipsis属性的设置值影响着WordWrap行为。
如果Ellipsis为True则超出部分显示为...但并不换行。
如果Ellipsis为False则超出部分换行显示,问题就出在英文可以换行,中文不行。
2,SpacePos := Pos(' ',s);
继续跟踪发现在htmllengo.pas 600行附近有上面的代码,也就是说自动换行是依赖与空格,再英文习惯中,单词是不能换行的。而中文语句中很少有空格,所以换行失败。
修改方法(htmllengo.pas 600行附近):
//原始代码注视掉了
//if WordWrap then begin
// SpacePos := Pos(',',s)
//end else
// SpacePos := 0;
//替换为如下代码
if WordWrap then begin
if s='' then
SpacePos:=0
else begin
if Ord(s[1])<127 then
SpacePos := Pos(' ',s)
else
SpacePos:=1;
end;
end else
SpacePos:=0;
注:控件版本号不同,源代码可能也不尽相同,仅供参考。我使用的版本是:TMS Pack.v5.2.4.1

浙公网安备 33010602011771号