标签:文字处理 TStringList Text Delphi FormatText PrintText MyList 格式化
在将文字存入数据库时,常通过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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。