有关打印memo中文本的问题

guitarheaven 2003-08-19 10:19:37
我通过下面的办法打印
var
lines:integer;
prntext:system.text;
begin
assignprn(prntext); //将PRNTEST分配给打印机
rewrite(prntext); //调用REWRITE函数,为输出打开已分配的文件
printer.canvas.font:=memo1.font;
//把当前MEMO1的字体指定给打印对象的CANVAS的字体属性
for lines:=0 to memo1.lines.count-1 do
writeln(prntext,memo1.lines[lines]);
//把MEMO的内容写到打印机对象
system.close(prntext); //关闭打印文件
end;
可却只能从纸张的最左边、最顶部开始打印
无法设置页边距等等

如果采用这种办法
var
richedit:TRichEdit;
begin
richedit := TRichEdit.Create(self);
richedit.Visible := false;
richedit.Parent := self;
richedit.Left := memo5.Left;
richedit.Top := memo5.Top;
richedit.Height := memo5.Height;
richedit.Width := memo5.Width;
richedit.Text := memo5.Text;
richedit.Font := memo5.Font;
richedit.Print('test');
richedit.Free;
richedit := nil;
end;
打印出来的效果仍然一样 都是很难看

请问各位有没有好的办法能够设置页边距等参数
让我不从纸张的左上脚开始打印

谢谢~
同时我也不想用form.print
再次表示感谢
...全文
72 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
g58521547 2004-02-18
  • 打赏
  • 举报
回复
好像
form1.memo1.print('your string');
就可以了
yangzhb 2003-08-25
  • 打赏
  • 举报
回复
各位大侠:如何将字符串直接发送到LPT1打印?
d983074 2003-08-22
  • 打赏
  • 举报
回复
注意这两句:
Printer.Canvas.TextOut(0,Printer.Canvas.TextHeight('注释:'),'注释:');
Printer.Canvas.TextOut(0,(i+2)*Printer.Canvas.TextHeight

只要改成
Printer.Canvas.TextOut(X,Y+Printer.Canvas.TextHeight('注释:'),'注释:');
Printer.Canvas.TextOut(X,Y+(i+2)*Printer.Canvas.TextHeight
既可以写在任何点(X,Y)处
guitarheaven 2003-08-21
  • 打赏
  • 举报
回复
打印出来的效果仍然是在左上角~
d983074 2003-08-21
  • 打赏
  • 举报
回复
var
h,w,i:Integer;
begin
Screen.Cursor := crHourGlass; { <-- nice detail }
try
Printer.PrinterIndex:=PrinterCB.ItemIndex;
Printer.Orientation:=TPrinterOrientation(LandscapeRB.Checked);
Printer.BeginDoc;

Printer.Canvas.Font.Name:='Arial';
Printer.Canvas.Font.Size:=12; { <-- set the font size }
Printer.Canvas.Font.Style:=[];
Printer.Canvas.TextOut(0,Printer.Canvas.TextHeight('注释:'),'注释:');
for i:=0 to Memo.Lines.Count-1 do
Printer.Canvas.TextOut(0,(i+2)*Printer.Canvas.TextHeight(Memo.Lines.Strings[i]),Memo.Lines.Strings[i]); { <-- print some text }

Printer.EndDoc;
except
on Exception do { just in case an error happens... }
begin
Printer.Abort;
Printer.EndDoc;
raise; { <-- raise up the exception !!! }
end;
end;
Screen.Cursor:=crDefault; { <-- restore cursor }
guitarheaven 2003-08-21
  • 打赏
  • 举报
回复
顶一下

5,388

社区成员

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

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