怎么没人答复???? fastreport 的汉字自动换行问题 (50分)

C

cgdlin

Unregistered / Unconfirmed
GUEST, unregistred user!
我在 fastreport 中使用 memo 显示汉字,该怎样处理自动换行问题。
 
不要用FASTREPORT了,用改进版的REPORT MACHINE,比FR强多了.
http://www.pcjingning.com/
 
难道 就这样了吗?
 
大虾们

给我一个思路
 
唉,你要思路就去读REPORT MACHINE的源码,它是FASTREPORT的改进版
 
你是不是要解决memo自动换行时的乱码问题?如果是的话可以改用RichText。
 
先判断汉字的长度,在需要转行的时候加一个空格
把wordwrap为true
 
HunterTeam
谢谢你的答复 那 richtext 怎吗自动伸展高度???
 
修改fastreport的换行函数
把string类型改为widestring就行了
 
你参考这段代码:同时解决了换行和乱码的问题:
procedure TCommRepForm.QRDBText3Print(sender: TObject;
var Value: String);
var x:integer;
//X值是字符串需换行的长度,一个汉字占两个字节,X值为2.
xbytetype:TMbcsByteType;
//字符属性,用来判明是汉字还是英文字母或数字.
begin
x:=66;
//预设字符串要换行的长度.可调.增加X值则增加字串的长度.
if length(value)>x then
begin
xbytetype:=bytetype(value,x);
if (xbytetype=mbLeadByte)or(xbytetype=mbsinglebyte) then
insert(#13,value,x)
else
insert(#13,value,x+1);
end;
end;
//注意,控件QRDBTEXT3的高度设为50.为可能出现的第二行
// 字串空出位置.
 
http://www.51delphi.com上有fastreport v2.44的汉化版,已经解决了
汉字自动换行问题。
 
哪位大侠给个完整的解决方法,这已经是的经典的问题了。
String类型改为widestring编译通不过
我们需要的是FastReport的解决方案,REPORT MACHINE很好用但是已经收费了,免费版本少了很多功能,更新也慢
RichText有它的特点,但是Memo的上下居中的功能却不能代替,而且设计时候容易出错,不得不重启Delphi甚至系统。
FastReport不仅存在中文折行乱码的问题,
还存在折行时(有中文)如果有空格会造成一行的空格出现
而且预览和实际打印结果不一样,打印结果右边要空很多
现在的汉化版都不能解决这些问题。
 
to a4a:
怎么通不过?
贴出你的代码来
reportbuild也是如此解决的问题
 
我是修改procedure WrapLine(const s: string);
在语句if s[cur] in [#13, #10] then
出错,类型不匹配。
用的是2.46
 
修改FR_CLASS.PAS中
procedure TfrMemoView.WrapMemo;
中的procedure WrapLine(const s: string);
结果
语句if s[cur] in [#13, #10] then
出错,类型不匹配。
 
多人接受答案了。
 
顶部