Delphi TStringList DBMemo 文字处理 删除多余换页符
作者:互联网
在将文字存入数据库时,常通过TStringList进行逐行分段处理后,再通过DBMemo存入数据。但是Delphi的TStringList控件,通过Text存入数据时,它的最后一行是一个换页符。在打印时,就会多出一个空白行。
DBMemo效果:
正常的打印:
一个空白行,有时造成打印的溢出。
问题解决:
一、Delphi10以下
TStringList,默认最后一行有#13#10字符(换页),可以通过删除最后的#13#10字符
编程做一个函数解决:
function PrintText(S:string):String; // 删除最后一行换页符
var l:integer;
begin
l:=Length(S);
if S[l]=#10 then Delete(s,L,1);
l:=Length(S);
if S[l]=#13 then Delete(s,L,1);
// l:=Length(S);
// if S[l]=#10 then Delete(s,L,1);
PrintText:=S;
end;
在通过TStringLists格式化字符时,通过PrintText过一下,再保存进DBMemo中。这样,彻底删除换页符。后期打印效果就不受影响。
二、Delphi10以上
Delphi10以上版本,TStringList有了改进,增加一些属性。
设置TrailingLineBreak属性即可:
MyListt.TrailingLineBreak := False;
三、常规处理
var MyList:TStringList;
begin
ClientDataSet1.Edit;
MyList:=TStringList.Create;
MyList.Text:=DBRichEdit1.Text;
FormatText(MyList); // 格式化 StringList
DBRichEdit1.Text:=PrintText(MyList.Text);
MyList.Text:=DBRichEdit2.Text;
FormatText(MyList); // 格式化 StringList
DBRichEdit2.Text:=PrintText(MyList.Text);
MyList.Text:=DBRichEdit3.Text;
FormatText(MyList); // 格式化 StringList
DBRichEdit3.Text:=PrintText(MyList.Text);
MyList.Text:=DBRichEdit4.Text;
FormatText(MyList); // 格式化 StringList
DBRichEdit4.Text:=PrintText(MyList.Text);
MyList.Text:=DBRichEdit5.Text;
FormatText(MyList); // 格式化 StringList
DBRichEdit5.Text:=PrintText(MyList.Text);
MyList.Text:=DBRichEdit6.Text;
FormatText(MyList); // 格式化 StringList
DBRichEdit6.Text:=PrintText(MyList.Text);
MyList.Free;
UpDataClientOne(ClientDataSet1,'个案_接案'); // ClientDataSet保存更新数据
标签:文字处理,TStringList,Text,Delphi,FormatText,PrintText,MyList,格式化 来源: https://blog.csdn.net/lyhoo163/article/details/122490447