我试过,fr245中中文折行仍有问题,我是这样解决的。
1、在WrapMemo方法中的WrapLine程序中加入子程序(在变量声明之后)
procedure WrapLine(const s:String);
var
i, cur, beg, last, LoopPos: Integer;
WasBreak, CRLF: Boolean;
//以下为加入部分
procedure AdjustLast;
var
ls:string;
ci,ni:Integer;
begin
ls:=Copy(s,beg,last - beg + 1);
ci:=0;
for ni:=1 to Length(ls)do
if (ls[ni]>=#$A0) then
Inc(ci);
ni:=ci mod 2;
if (ni<>0) and (ls[Length(ls)]>=#$A0) then
Dec(last);
end;
2.在最后一次调用OutLine的地方作如下修改:
if WasBreak then
OutLine(Copy(s, beg, last - beg + 1) + '-')
else
if s[last] = ' ' then
OutLine(Copy(s, beg, last - beg))
else
begin
AdjustLast;
//此为新加的程序
OutLine(Copy(s, beg, last - beg + 1));
//在fr242中该行就是这样,在fr245中原来没有 + 1,但输出后last却减1, 不知为何
end;
如果那位高手有更好的方法,请不吝赐教。