为什么FASTREPORT的报表中文折行问题还没有解决!(200分)

  • 主题发起人 主题发起人 freesoft
  • 开始时间 开始时间
F

freesoft

Unregistered / Unconfirmed
GUEST, unregistred user!
我下载了TIAN修改的FASTREPORT2。44
可是不知道怎么回事,中文折行还是没有解决,会出现半个中文、缺少字符等现象。
不知道这个wrapline到底怎么修改才能,不限制MEMO的大小,焦急等待中!
而且现在英文好象也有缺少字符的现象!
 
将你的fr_class.pas中procedure WrapLine(const s:String);的 代码替换一下
procedure WrapLine(const s:wideString);
var
i, cur, beg, last, LoopPos: Integer;
WasBreak, CRLF: Boolean;
s1:string;
begin
CRLF := False;
LoopPos := 0;
s1:=s;
for i := 1 to Length(s1)do
if s1 in [#10, #13] then
begin
CRLF := True;
break;
end;
last := 1;
beg := 1;
if not CRLF and ((Length(s) <= 1) or (WCanvas.TextWidth(s) <= maxwidth)) then
OutLine(s + #1)
else
begin
cur := 1;
while cur <= Length(s)do
begin
if s1[cur] in [#10, #13] then
begin
OutLine(Copy(s1, beg, cur - beg) + #1);
while (cur < Length(s1)) and (s1[cur] in [#10, #13])do
Inc(cur);
beg := cur;
last := beg;
if s1[cur] in [#13, #10] then
Exit else
continue;
end;
if s[cur] <> ' ' then
if WCanvas.TextWidth(Copy(s, beg, cur - beg + 1)) > maxwidth then
begin
WasBreak := False;
if (Flags and flWordBreak) <> 0 then
begin
i := cur;
while (i <= Length(s1)) and not (s1 in spaces)do
Inc(i);
b := BreakWord(Copy(s, last + 1, i - last - 1));
if Length(b) > 0 then
begin
i := 1;
cur := last;
while (i <= Length(b)) and
(WCanvas.TextWidth(Copy(s, beg, last - beg + 1 + Ord(b)) + '-') <= maxwidth)do
begin
WasBreak := True;
cur := last + Ord(b);
Inc(i);
end;
last := cur;
end;
end
else
if last = beg then
last := cur;
if WasBreak then
OutLine(Copy(s, beg, last - beg + 1) + '-')
else
if s[last] = ' ' then
OutLine(Copy(s, beg, last - beg)) else
OutLine(Copy(s, beg, last - beg + 1));
if ((Flags and flWordBreak) <> 0) and not WasBreak and (last = cur) then
if LoopPos = cur then
begin
beg := cur + 1;
cur := Length(s);
break;
end
else
LoopPos := cur;
beg := last + 1;
last := beg;
end;
// if s[cur] in spaces then
last := cur;
if s[cur] = ' ' then
last := cur;
Inc(cur);
end;
if beg <> cur then
OutLine(Copy(s, beg, cur - beg + 1) + #1);
end;
end;

 
还是不行!继续努力!还是发现有汉字少了几个的现象,
 
我现在这里正常啊!!!
 
可以把你的FASTREPORT发给我吗?
 
我把我的fr_class.pas给你吧
你的信箱?
 
我也是,而且是Fastreport2.41!
在2。47下也可以
 
是不是纸小呢?
 
czyoooo@vip.sina.com
 
纸张是自己定义的,但我要打的哪个memo不在边上呀!在中间有问题吗?
 
发过去了
另外,你刚才怎么给我发的消息?
 
我把你的fr_class拷到lib下了,可以还是一样呀,是不是fastreport要从新编译
 
memo属性设置了吗
自动折行,自动大小,伸展
 
发过去了
 
memo属性当然设置好了,还是不行呀!郁闷!!!
 
我觉得报表还不如用Crystal Reports
 
多人接受答案了。
 

Similar threads

回复
0
查看
848
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部