检测不到打印机,程序就出现问题. (50分)

S

sunwork

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个程序,程序里面有报表要打印的.
在测试的时候使用的是网络打印机,如果,远处的网络打印机关闭了,
程序就出现错误.请问,这个问题如何解决.在调试环境下,那些报表还出现丢失的现象.
我记得我在delphi里面没有发现这样的问题..
 
那你就先检测是否有打印机啊!
 
那么具体怎么做呢..而且,我觉得这应该是程序自动检测的吧.
我觉得如果就算没有打印机也可以预览啊..但是现在连预览也不行.
 
把你的代码进行排错呀。
try
except
或者
try
finaly
根据你的具体情况,建议后者。
 
明白,我知道了,但是..这样好象没有达到我预想的目标,我希望,
程序在没有安装打印机的时候,也可以运行,进行预览.只是在不能打印而已.
这样如何做?或者我更加具体点说,我调用TQuickRep控件时候,
就要检测打印机.我如何不让他检测打印机,可以让程序可以运行和预览?
最多不能打印而已?
 
没有安装打印机不能打印和预览
 
我原来也遇到国这样的问题
 
没有打印机是可以预览的!
关键在于你如何理解 DC。
 
什么如何理解DC?直接点说吧。。
 
这是quickreport的bug,
在它的网站(www.qusoft.com)上有修正的方法,但需要有QR的源码
 
你可以随便增加一个本地打印机
这个问题我碰到过,只要增加个本地打印机,解决问题。
给分吧
 
准确的说,这不能算 bug;这是程序运行的基本要求。微软的 office 系列在打印/预览的时候也需要的啊。
解决的办法:添加一个任意的符合你程序要求本地打印机。(调试的时候,设置成为默认)
 
Report Machine中可以采用虚拟打印机
 
有必要澄清!没有打印机是肯定不能打印的,但打印预览却完全可以实现。
不知道楼上的各位有没有自己作过手工打印,打印预览的原理很简单:
在任何一个 TCustomControl 派生的组件中,都可以实现打印预览,
但一般用 PaintBox + ScrollBox 的多。原理是:重载 Paint 事件,
然后在你的 Paint 事件中,传递这个组件的 Canvas.Handle,即设
备情境(DC),然后调用 WinAPI 的绘图函数对这个 DC 进行你的
报表绘制;而如果需要实际打印,则传递实际打印机的 DC(Printer()
->Canvas->Handle)。因此在实际的页面绘制过程中,根本不需要
知道 DC 是一个打印机的,还是一个组件的,只要注意在使用过程中一
定要用 GetDeviceCaps来获取打印设备的参数。如此而已。
 
同意ddev
 
顶部