打印设置问题(200分)

  • 主题发起人 主题发起人 brightangel
  • 开始时间 开始时间
B

brightangel

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序中用打印对话框或打印设置对话框来控制打印选项的设置。

但程序运行时,我通过打印对话框的打印机“属性”或打印设置对话框
来设置打印纸和打印机分辨率,却不起作用。而我直接在我的电脑中设
置打印机的相应选项时才是有效的,为什么?(我用BCB5)
请各位高手指教,不胜感激!
下面是我的相应代码:
………………
PrinterSetupDialog->Execute();
………………
if(PrintDialog->Execute()) //显示打印对话框
{
TPrinter *Printer=new TPrinter();
Printer->begin
Doc();
………………
iWidth=Printer->PageWidth;
//在我的程序运行时不管怎样改变设置,这两个值都不变,打印出来的东西也不对
//当在我的电脑中修改相应选项时,这两个值相应的变化,打印出来的东西才正确
iHeight=Printer->PageHeight;
………………
Printer->EndDoc();
}
 
后来发现直接用Printer()获取打印机句柄则可以,不能用Printer=new TPrinter()来创建
新的实例,所以上面的程序中的printer->全部改为Printer()就对了,真奇怪,
各位能解释一下原因吗?
 
在 Delphi/C++ Builder 中设置打印机时,
只在程序空间有效,并不实际修改系统(Windows)中的打印配置(当然采用WIN32 API可以实现)。
按Printer()函数实际是返回当前打印机,正如在PrinterSetup中的配置一样,
也是设置当前打印机。 所以 APrinter = new TPrinter() 语句中的打印机实际上已经
不是你所指定配置的打印机了 --- 除非手工进行配置,那就没必要了,
反正Printer()是最简单有效的访问。
 
谢谢各位!
 
后退
顶部