DELPHI基础教程:文本编辑器的设计(二)[4]

如题所述

第1个回答  2022-10-06

   文件打印

  在Delphi中 文件打印有两种方式

   将文件变量分配给打印机 用此变量名创建或打开文件后 往此文件变量写入的任何文本都视为向打印机输出 以下过程可实现文件的打印

  procedure TEditForm Print Click(Sender: TObject)

  var

  Line: Integer;

  PrintText: System Text;

  begin

  if PrintDialog Execute then

  begin

  AssignPrn(PrintText)

  Rewrite(PrintText)

  Print CanvasFont := Memo Font;

  For Line := to Memo Lines Count do

  Writeln(PrintText Memo Line[line];

  System Close(PrintText)

  end;

  end;

   利用Printers单元中定义的TPrinter对象进行文件打印 本章例程采用这种方法打印文件

   TPrinter对象

  TPrinter对象可调用Windows的打印机 在Printer 单元中定义了TPrinter 的实例Printer 用户可直接使用

  调用TPrinter的BeginDoc方法可开始一项打印工作 调用EndDoc 方法可结束一项已成功发送给打印机的工作 如果在发送过程中出现问题或用户想中途终止打印工作 可调用Abort方法

  通过检查Printing属性可测试当前是否有打印工作 如果打印工作被终止 Abort属性为真

  Canvas属性代表打印表面 Brush Font Pen属性可决定打印字体或图像的特征

  Printers属性中包含着已安装的打印机列表 PrinterIndex 属性是当前选择的打印

  机 Fonts属性中有当前打印机支持的字体 Orientertion属性可决定打印方向

  PageHeight PageWith中包含着当前的高度和宽度 PageNanber为当前页的值

  设置Title属性可决定在Windows打印管理器或网络中出现的文本

   TPrintDialog打印对话框

  TPrintDialog部件显示一打印对话框 用户在对话框中 可以选择打印机 打印页数 打印份数 当用户选择对话框中的Setup按钮 则出现打印设置对话框

  调用Execute方法显示打印对话框 如图 使用Option属性可设置打印对话框显示的形式 Options的设置如表 所示

  PrintRange属性可定义打印的范围 如果PrintPage的值是prPageNums 则可以设置FromPage和ToPage属性来确定打印范围 设置MinPage MaxPage属性可限制用户的打印范围

  表 打印对话框的Option属性的取值及含义

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    取值                          含义

  ──────────────────────────────────────

  PoHelp             如果是真值 对话框出现帮助按钮

  PoPageNums   如果是真值 页数按钮有效 用户可以设置打印范围

  PoPrintToFile   如果是真值 文件打印检查框将出现在对话框中 用户可以选

  择文件打印

  PoSelection      如果是真值 选择按钮有效 用户可打印文件中所选择的文本

  PoWarning       如果是真值 在打印机尚未安装时 用户选择OK 按按钮将出现警告信息

  PoDisablePrinttoToFile  如果是真值 而PoPrintToFile亦是真值时 当对话框出现时 文件打印对话框将无效

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  本章例程是利用Printer的画布进行文本打印的 用户选择打印菜单后 将弹出打印对话框 用户可设置各种参数 当用户选择打印按钮后 打印工作进行发送 此时将弹出打印取消对话框 见图 用户可中止打印工作 有关打印和打印取消的代码如下

  procedure TEditForm Print Click(Sender: TObject)

  var

  DistanceLine Line: Integer;

  PrintText: System Text;

  begin

  if PrintDialog Execute then

  begin

  Printer Canvas font := Memo Font;

  DistanceLine := Trunc( *FontDialog font size)

  OpenPrintCancelDialog;

  Printer BeginDoc;

  for line := to Memo Lines Count do

  begin

  Printer canvas textout( DistanceLine*Line Memo lines[Line])

  end;

  Printer EndDoc;

  BtnBottomDlg free;

  end;

  end;

  procedure TEditForm OpenPrintCancelDialog;

  begin

  BtnBottomDlg := TBtnBottomDlg Create(Application)

  BtnBottomDlg show;

  BtnBottomDlg canvas Brush Color := clActiveBorder;

  BtnBottomDlg canvas TextOut( Print +FileName)

  BtnBottomDlg canvas TextOut( if you want to

  stop please choice Cancel Button )

  end;

   返回目录 DELPHI基础教程

       编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

  Visual C++音频/视频技术开发与实战

  Oracle索引技术

  ORACLE G数据库开发优化指南

  Java程序性能优化 让你的Java程序更快 更稳定

  C嵌入式编程设计模式

  Android游戏开发实践指南

lishixinzhi/Article/program/Delphi/201311/25251

相似回答