谁能修改rb的源码,使得PPDBText的文本垂直向下对齐。折行显示中文不出现乱码。(300分)

  • 主题发起人 主题发起人 xinmin
  • 开始时间 开始时间
X

xinmin

Unregistered / Unconfirmed
GUEST, unregistred user!
[:D]高分求助。分不够再加。
 
在事件中写程序,来控制折行的字符数,因为中文一个字2个字符.
 
[:)]这个方法太笨了。会有副作用。
 
在2000下没问题
 
TO wuling:
不会吧!
我这里WIN98, WINNT,WIN2K,WINXP都乱码。
 
在轻舟网下载了汉化
http://www.8421.org/download.php?id=143
站长说这个汉化资源可解决乱码问题。可我运行后
仍没有解决,请问有谁用了站长的汉化资源搞定了?
FEIZI曾经改成功过,但他已找不到源代码,他说发了
几份给富翁,哪位富翁有的话就共产吧!
 
暂时搞定了!
参考旧帖:
673614帖: 谁能帮我解决我的DELPHI6。0折行问题我送他200分!!!!!
...
lighttop (2001-10-20 13:59:00)
装ReportBuilder 吧, 在www.51delphi.com 中有6.02版, 然后修改它的
ppPlainText.pas 这个文件中的GetNextWord函数, 注意我加的几行代码。
{TppPlainTextParser.GetNextWord}

function TppPlainTextParser.GetNextWord: String;
var
lbEndOfWord: Boolean;
lCharacter: Char;
lsWord: String;
begin

lsWord := '';
lbEndOfWord := False;

while not(lbEndOfWord) and not(FAllWordsParsed) do
begin
{move to next position in the text}
Inc(FCharPos);

{reached end of the text}
if (FCharPos > FTextLength) then
FAllWordsParsed := True
else
begin

lCharacter := FText[FCharPos];
(*-----------------Lighttop添加于2001年6月12日 ---*)
if StrByteType(Pchar(FText),FCharPos-1) = mbTrailByte then
begin
lbEndOfWord := True;
if (lsWord <> '') then
lsWord := lsWord + lCharacter;
end

(*-----------------------------------------------*)

else if (lCharacter = TppTextMarkups.Null) then
FAllWordsParsed := True

else if (lCharacter = TppTextMarkups.Space) then
begin
lbEndOfWord := True;

if (lsWord = '') then
lsWord := TppTextMarkups.Space
else
Dec(FCharPos);
end

else if (lCharacter = TppTextMarkups.CR) then
begin
lbEndOfWord := True;

if (lsWord <> '') then
Dec(FCharPos)

else
begin

if ((FCharPos + 1) <= FTextLength) and (FText[FCharPos + 1] = TppTextMarkups.LF) then
Inc(FCharPos);

{skip over the LF char since it was found immediately following CR}
if (FCharPos <= FTextLength) then
lsWord := TppTextMarkups.CRLF;

end;

end

else if (lCharacter = TppTextMarkups.LF) then
begin
lbEndOfWord := True;

if (lsWord <> '') then
Dec(FCharPos)

else if (FCharPos <= FTextLength) then
lsWord := TppTextMarkups.CRLF;

end

else if (lCharacter = TppTextMarkups.Tab) then
begin
lbEndOfWord := True;

if (lsWord = '') then
lsWord := TppTextMarkups.Tab
else
Dec(FCharPos);
end

else if ((FCharPos + 1) <= FTextLength) and (lCharacter + FText[FCharPos + 1] = TppTextMarkups.EOP) then
begin
lbEndOfWord := True;

if (lsWord <> '') then
Dec(FCharPos)

else
begin
Inc(FCharPos);

lsWord := TppTextMarkups.CRLF;
end;

end

else
lsWord := lsWord + lCharacter;

end;

end;

Result := lsWord;

end;
...
编译ppPlainText.pas;
将ppPlainText.dcu copy 至 RBuilder/lib 替换掉。

在delphi ide 环境下预览,乱码,但将程序编译后乱码解决了,
凑合着用吧,呵呵。 
 
不错,类似于电机上划粉笔线的绝招。
 
后退
顶部