打印机编程(100分)

  • 主题发起人 主题发起人 rong_gz
  • 开始时间 开始时间
R

rong_gz

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在DELPHI中不用报表控件,直接对打印机编程,控制打印机?
或者说如何向打印机发送控制字符,就象在DOS下控制打印机一样?
 
参看tprinter类,它能帮你做一些事
有的要用到api
 
关键是看打印机的类型。比方说Epson 1600K, 查看它的手册中有控制命令。然后直接向
并口发送数据。以前做过这种程序,源程序不在身边,需要的话可以帮你找一找
 
用TPrinter 类可以直接控制打印机.
调用begin
Doc()后在它的Canvas上的所有操作都会输出到打印机上直到调用EndDoc()时输出
一个打印作业.
 
写多文字给你点提示

T P r i n t e r 类的一个对象,该对象在P r i n t e r s 单元中定义。可以把P r i n t e r 全局函数看作一个全局变
量,并利用这个全局变量来与打印机进行打印操作。
利用P r i n t e r 来实现打印的一般过程如下:
1) 调用B e g i n D o c 过程向打印机发送一个打印作业(此时还没有在打印机上开始打印)。
2) 通过一个Te x t 变量或调用C a n v a s 对象方法建立打印输出。
3) 调用E n d D o c 过程结束当前的打印作业,该打印作业开始在打印机上打印。
4) 如果出现问题,调用A b o r t 过程取消当前打印的作业。
下面是T P r i n t e r 类的几个常用属性:
•
Aborted 判断是否中止打印作业。
•
Canvas 画布属性。
•
Capabilities 当前打印机驱动设备的设置信息。
•
Copies 打印的份数。
•
Fonts 字体属性。
•
Handle 打印机句柄。
•
Orientation 纸张的方向:横向或纵向。
•
PageHeight 纸张的高度。
•
PageNumber 当前打印的页数。
•
PageWidth 纸张的宽度。
•
PrinterIndex 打印机属性中当前打印机的索引值。
•
Printers 系统中安装的所有打印机。
•
Printing 标识是否正在进行一个打印作业。
•
Title 打印管理器中显示的打印作业的名称。
下面是T P r i n t e r 类的几个常用函数:
•
Abort 中止正在打印的打印作业。
•
begin
Doc 向打印机发送一个打印作业。
•
EndDoc 结束当前的打印作业并关闭文本文件变量。
•
NewPage 开始新的一页并增加P a g e N u m b e r 属性。
•
Refresh 更新字体和打印机的属性。
通常,在打印前要进行打印预览。在打印预览的时候,往往要将打印的结果在屏幕上显示
出来。这时,就要注意屏幕的分辨率和打印机的分辨率的差别了。读取屏幕信息可以通过全局
变量S c r e e n 来实现,S c r e e n 为T S c r e e n 类的一个实例,在创建工程的时候就自动创建了,并在程
序开始运行时读取了屏幕的一些设置信息。
 
agang_yao大侠:我也遇到了用打印机自己的指令集,在DELPHI下直接控制
打印机的问题,但我不知道DELPHI与打印机指令集之间怎么联系起来,也请
帮我一个忙!!!
 
试试:
MyFile: TextFile;
begin

Assignfile(MyFile,'lpt1');
// or 'com1'
Rewrite(MyFile);
Writeln(MyFile, 控制码);
//控制码 如:chr(27)+'a'
System.CloseFile(MyFile);
 
多人接受答案了。
 
后退
顶部