我通过下面的办法打印
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
再次表示感谢
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
再次表示感谢
解决方案 »
- Delphi翻译成C# 很简短 大家帮下忙
- 急!!!设计报表套打,如何让QRDBText换行?
- 使用web app debugger运行websnap程序,练习的多了,页面出现很多无用的注册,请问如何unregister??
- 已经知道进程的ID,怎么判断这个进程是否还在运行?
- 求SQL 语句
- 我挣一年的钱比不上我的同学年终奖的一半,我实在太厌倦了!
- Easy问题:怎么使lineto命令所实现的线条头部变成平的,而不是圆头?在线等候!
- 如何控制mediaplayer控件的音量,而不是系统音量
- 明明数据库里有值,为什么查出来都是0啊
- 怎样将倚天码的汉字转换成BIG5码或GB码?或有什么编辑软件可对倚天汉字进行编辑????
- [microsoft][odbc sql server driver]没有执行可选特性
- help,应用服务器总是死机,怎么办呢?急
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 }
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)处
form1.memo1.print('your string');
就可以了