如何打印空行

cd20102010 2011-03-27 06:06:45
我想在要打印的文本后面,加两个空行,可是即便我在Memo尾部用回车敲了两个空行,还是打印不出来。怎么办啊?代码如下,怎么修改,使之能在要打印的文本后面出现两个空行啊:

procedure TForm1.Button2Click(Sender: TObject);
var
Left1,Top1,PageHeight,i,x,y,LineSpace : integer;
begin
Top1 := 20;
Left1 := 10;
y := Top1;//Top 起始行的位置,比如设置 Top := 20;
x := Left1;//Left 左边的起始位置,比如设置:Left := 20;
PageHeight := 2600;//A4得纸张大概是这么多,我记不太清,你可以通过某个过程先得到这个数据,
LineSpace := 24;//行间距

printer.Canvas.Font.Name:='DEFAULT';
printer.Canvas.Font.Charset:=DEFAULT_CHARSET;
printer.Canvas.Font.Size:=17;
printer.Canvas.Font.Style:=[fsBold];

Printer.BeginDoc;
for i := 0 to Memo1.Lines.Count - 1 do
begin
Printer.Canvas.TextOut(x,y,Memo1.Lines[i]);
y := y + LineSpace;
if(y > PageHeight) then
begin
Printer.NewPage;
y := Top;
end;
end;

Printer.EndDoc;
end;
...全文
186 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cd20102010 2011-03-28
  • 打赏
  • 举报
回复
楼上的怎么能改为打印Memo+尾部空行的代码啊。现在我改来改去,只能用如下的,这样可以打印Memo尾部的空行,但是最后面多出了一个s,很不美观啊。

procedure TForm1.Button3Click(Sender: TObject);
var
i,x,y, LineSpace,PageHeight:integer;
begin
Memo1.Text:=Memo1.Text+#13+#10+#13+#10+'s';
x:=20;
y:=10;
LineSpace:=24;
PageHeight := 2600;
Printer.BeginDoc;
for i := 0 to Memo1.Lines.Count - 1 do
begin
Printer.Canvas.TextOut(x,y,Memo1.Lines[i]);
if (y + LineSpace * 2) > PageHeight then
begin
Printer.NewPage;
y := Top;
end
else
y := y + LineSpace;
end;
Printer.Canvas.TextOut(x,y,' ');
Printer.Canvas.TextOut(x,y,' ');
Printer.EndDoc;
end;
kye_jufei 2011-03-28
  • 打赏
  • 举报
回复
var   
PageLine: integer;//现在打印到第几行
PageMaxRow: integer=15; //空行行数
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
PageLine := <Line> mod PageMaxRow;
if (PageLine = 1) and (<line> > 1) then
Engine.newpage;
child1.visible := False;
end;
//Footer1高度必须为0,这里不一定,可能4.0以下要为0,4.0以上不用
procedure Footer1OnBeforePrint(Sender: TfrxComponent);

var
i: integer;
begin
i := iif(PageLine=0, PageMaxRow, PageLine);
child1.visible := True;
while i < PageMaxRow do
begin
i := i + 1;
Engine.ShowBand(Child1); //打印印空白表格
end;
child1.visible := False;
end;
begin
end.
cd20102010 2011-03-28
  • 打赏
  • 举报
回复
按楼上的方法都试了,还是打印不出来空行。

procedure TForm1.Button3Click(Sender: TObject);
var
i,x,y, LineSpace,PageHeight:integer;
begin
Memo1.Lines.Add(' ');
Memo1.Lines.Add(' ');
x:=20;
y:=10;
LineSpace:=24;
PageHeight := 2600;
Printer.BeginDoc;
for i := 0 to Memo1.Lines.Count - 1 do
begin
Printer.Canvas.TextOut(x,y,Memo1.Lines[i]);
if (y + LineSpace * 2) > PageHeight then
begin
Printer.NewPage;
y := Top;
end
else
y := y + LineSpace;
end;
Printer.EndDoc;
end;
cd20102010 2011-03-28
  • 打赏
  • 举报
回复
有高手吗,帮助一下啊。
dinoalex 2011-03-28
  • 打赏
  • 举报
回复
for i := 0 to Memo1.Lines.Count - 1 do
begin
Printer.Canvas.TextOut(x,y,Memo1.Lines[i]);
if (y + LineSpace * 2) > PageHeight then
begin
Printer.NewPage;
y := Top;
end else y := y + LineSpace;
end;
不担心 2011-03-27
  • 打赏
  • 举报
回复
memo1.lines.add(' ');
memo1.lines.add(' ');

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧