关于打印的问题

gzmitch 2017-01-13 09:18:28
有以下代码:我想改一下代码实现:
1.不用printdialog,直接使用自定义的 打印机 名称,且打印份数是1份,直接打印
2.不用printdialog,直接使用自定义的 打印端口 ,且打印份数是1份,直接打印
有谁能改一下代码呢?谢谢!



procedure TForm1.Button1Click(Sender: TObject);
var
line: integer; //定义一个line变量,用于下面控制打印各行内容
files: system.text; //告诉系统说files是文本文件,是要打印机打印的文件
begin
if printdialog1.execute then //当printdialog1执行后
begin
assignprn(files); //通过assignprn函数将要打印的文件交给打印机
rewrite(files); //让打印机打开文件准备打印
printer.canvas.font.size := 10; //canvas是打印机的画板,用来打印文件的,直接设置字体
for line := 0 to memo1.lines.count - 1 do //以下是循环memo1的每个行
begin
writeln(files, memo1.lines[line]); //打印每行内容 writeln(文件名,文本的某个行);
end;
system.close(files); //打印完了就关闭要打印的文件
end;
end;
...全文
466 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzmitch 2017-03-30
  • 打赏
  • 举报
回复
谢谢!总算解决了问题
gzmitch 2017-01-16
  • 打赏
  • 举报
回复
我找到下面这种方法,可以通过打印机名称进行打印的。但如何更改字体大小呢?

procedure WriteRawStringToPrinter(PrinterName: string; S: string);
var
  Handle: THandle;
  N: DWORD;
  DocInfo1: TDocInfo1;
begin
  if not OpenPrinter(PChar(PrinterName), Handle, nil) then
  begin
    ShowMessage('error ' + IntToStr(GetLastError));
    Exit;
  end;
  with DocInfo1 do begin
    pDocName := PChar('test doc'); {在打印列表中显示的打印内容}
    pOutputFile := nil;
    pDataType := 'RAW'; {关键,数据类型必须是RAW,这样打印机通过驱动程序才能识别ZPL语言}
  end;
  StartDocPrinter(Handle, 1, @DocInfo1);
  StartPagePrinter(Handle);
  WritePrinter(Handle, PChar(S), Length(S), N);
  EndPagePrinter(Handle);
  EndDocPrinter(Handle);
  ClosePrinter(Handle);
end;
lyhoo163 2017-01-16
  • 打赏
  • 举报
回复
问题了,很好。 提醒一下,设置打印机和打印的内容,是二回事情。 打印机就是针对硬件的连接和参数的设置; 打印内容,就是向打印机输入的数据,它有很多种格式。
gzmitch 2017-01-16
  • 打赏
  • 举报
回复
我自己解决了,选择打印机: Printer.PrinterIndex := printer.Printers.IndexOf(self.ComboBox1.Text);
gzmitch 2017-01-16
  • 打赏
  • 举报
回复
使用 RichEdit 也能打印,看来delphi打印的办法真多,但RichEdit怎么指定哪个打印机驱动来打印? RichEdit1.Font.Size := 10; RichEdit1.Lines.Clear; RichEdit1.Lines.LoadFromFile(sBill); RichEdit1.Print('');
gzmitch 2017-01-13
  • 打赏
  • 举报
回复
谢谢!请问什么控件适合这样的开发呢?能用程序控制什么打印,什么不打印吗? 我以前用的是RBuilder控件,可能我用得比较肤浅,好像控制不了打印内容。 如何生成打印模板,可以简单描述一下吗?感谢!
lyhoo163 2017-01-13
  • 打赏
  • 举报
回复
不要这样操作。 建议你使用一个打印的控件,生成打印模板,或打印页面。 在打印控件中,可以设置,指定打印机,指定打印页,指定打印份数。
gzmitch 2017-01-13
  • 打赏
  • 举报
回复
自己顶一下,这个问题应该不会很难吧?我对打印不熟悉,请赐教。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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