有关打印memo中文本的问题 (20分)

  • 主题发起人 主题发起人 oldbow
  • 开始时间 开始时间
O

oldbow

Unregistered / Unconfirmed
GUEST, unregistred user!
我通过下面的办法打印
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-1do
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
再次表示感谢
由于本人积分太低~
只能先给20分:(
 
碰到多页怎么办?
难道还要计算一番补空格?
 
到www.report.com网站下载一个专门用于打印的report控件,可以帮助你解决打印过程中出现的一切问题
 
能讲的更加详细点吗?
比如推荐一个控件?
 
加入Printers单元,
procedure TForm1.Button1Click(Sender: TObject);
var
Left,Top,PageHeight,i,x,y,LineSpace : integer;
begin
y := Top;//Top 起始行的位置,比如设置 Top := 20;
x := Left;//Left 左边的起始位置,比如设置:Left := 20;
PageHeight := 2600;//A4得纸张大概是这么多,我既不太清,你可以通过某个过程先得到这个数据,
LineSpace := 24;//行间距
Printer.begin
Doc;
for i := 0 to Memo1.Lines.Count - 1do
begin
Printer.Canvas.TextOut(x,y,Memo1.Lines);
y := y + LineSpace;
if(y > PageHeight - Top) then
begin
Printer.NewPage;
y := Top;
end;
end;
Printer.EndDoc;
end;
 
代码:
[:)]如果有人愿意用这样的控件的话,Q我吧:21532630
 
通过rave来解决这个问题了
谢谢各位。
 

Similar threads

G
回复
5
查看
229
garnel
G
N
回复
11
查看
266
nathanlee
N
N
回复
13
查看
290
duguqiubai
D
后退
顶部