Printing 将横向中的水晶报表打印到特定打印机

Printing 将横向中的水晶报表打印到特定打印机,printing,vb6,crystal-reports,orientation,Printing,Vb6,Crystal Reports,Orientation,我有几个报告是在横向模式下设计的,在通过VB6 Crystal控件预览和打印时工作良好 我最近被要求允许更改打印机,以便添加代码来枚举打印机,并设置控件的PrinterDriver、PrinterName和PrinterPort属性。 虽然这对纵向报告很有效,但指定默认打印机以外的任何内容都会导致报告查看器强制报告进入所选打印机的默认方向 将Printer.Orientation设置为vbPRORLandscape对crystal没有影响,因为它使用自己的打印表面。 Crystal viewer

我有几个报告是在横向模式下设计的,在通过VB6 Crystal控件预览和打印时工作良好

我最近被要求允许更改打印机,以便添加代码来枚举打印机,并设置控件的
PrinterDriver
PrinterName
PrinterPort
属性。 虽然这对纵向报告很有效,但指定默认打印机以外的任何内容都会导致报告查看器强制报告进入所选打印机的默认方向

Printer.Orientation
设置为
vbPRORLandscape
对crystal没有影响,因为它使用自己的打印表面。 Crystal viewer也无法指定方向(在设计器中将其设置为横向)

Microsoft有更改默认方向的示例代码(在更改为使用
打印机\u访问\u使用
后),但这会影响在再次更改之前访问该打印机的任何其他内容

在控件使用期间,是否有任何方法可以在不临时将打印机的系统范围配置更改为横向的情况下打印到特定打印机并保持报表的横向方向


报表是在Crystal 4.6中设计的,由Crystal 8.0查看器控件打印。

我想您正在设置CRAXDRT.Report的PrinterDriver、PrinterName和PrinterPort属性。同一对象具有PaperSize和PaperOrientation属性。你试过设置它们吗?

我想找到一个比“缓存设置并在使用后恢复”更好的答案。但是,我相信这些设置是在后台打印程序级别存储和使用的,这是全局设置(整个PC的每台打印机一套)。我很高兴被证明这是错误的,虽然!我使用的是旧的VB6
Crystal.CrystalReport
控件,而不是
CRAXDRT.Report
。它似乎没有暴露任何方向属性。什么是Crystal.CrystalReport控件?这是CrystalViewer吗?对不起,我很久以前用过Crystal 8。它是VB6提供的(或兼容的)查看器控件。