1 我知道用 REPORT FORM ... PROMPT 命令可以让用户为报表选择一个指定的打印机.但有没有办法让选定的打印机成为当前
工作期中的默认打印机?
最简单的办法是用以下命令:
SET PRINTER TO NAME GETPRINTER()
以上命令会显示一个标准打印机对话框. 用户可以选择一个打印机, 该打印机将成为默认的打印机. 如果用户没有选择打印机而选择了取消, 原来默认的打印机不会被修改.
2 如果我象上面所述改变以默认打印机, 会不会影响到用户可能运行的其它 Windows 应用程序?
不会. SET TO PRINTER TO NAME 只影响 Visual FoxPro 的默认打印机, 不会影响 Windows 默认的打印机. 如果想让 Visual FoxPro 默认打印机与 Windows 默认的打印机一样, 执行以下命令:
SET PRINTER TO DEFAULT
3 GETPRINTER() 与 SYS(1037) 有什么不同? 因为两者都显示一个打印对话框.
有相当大的不同. GETPRINTER() 调用一个简单的打印机对话框, 用户可以选择一个打印机(也可以不选择). SYS(1037) 打开完整的页面设置对话框. 在这里, 用户可以选择打印机, 页大小, 进纸源和打印方向.
另一个重要的区别是, GETPRINTER() 简单的返回用户选择的打印机的名字(如果没有选择则是一个空串) – 它并不实际改变选定的打印机. SYS(1037) 不返回任何东西, 但它会执行用户的选择. 例如, 如果用户选择了一个指定的激光打印机并设置进纸方式为手动, 那么这些选择会影响到后面打印的报表(除非在报表设计器中另外指定了不同参数或在 REPORT 命令中使用 PROMPT 子句).
4 在我的一个报表中, 我想让用户选择上纸盒或下纸盒. 但又不想让用户改变纸张大小和打印方向. 可能吗?
没有VFP 命令或函数可以达到这一目的. 唯一的办法是在运行时修改报表文件 (FRX 文件). 你可以在在运行时控制报表设置一文中找到相关细节.
好了, 我已读了那篇文件. 但它没有回答我的下一个问题. 怎样在第一页中选择上纸盒而其它页选择下纸盒?
你只能创建该报表的两个拷贝. 在报表
设计器中用面面设置对话框选择纸源: 第一个拷贝用上纸盒, 另一个拷贝用下纸盒. 然后两次运行REPORT FORM 命令, 用RANGE 子句来选择报表页数:
REPORT FORM MyReport_Ver1 RANGE 1,1 NOCONSOLE
REPORT FORM MyReport_Ver2 RANGE 2 NOCONSOLE
以上命令将用MyReport_Ver1 打印第一页,用MyReport_Ver2 打印第二页及以后的页.
5 我想在预览窗口中显示报表, 但又想要用户单击报表预鉴工具条上的打印按钮时,打开打印对话框. 可能吗?
是的. 命令如下:
REPORT FORM MyReport TO PRINTER PROMPT PREVIEW
6 如何以编程方式最大化报表预览窗口?
象这样:
KEYBOARD "{ctrl+f10}"
REPORT FORM MyReport PREVIEW
7 我有一个 VFP 主窗口不可见的,作为顶层表单运行的应用程序
,不幸的是, 这也意味着报表窗口的不可见. 怎么办?
在 VFP 5.0 中, 唯一的办法是在预览前直接恢复 VFP 窗口,并在预览后隐藏它. 代码如下:
_SCREEN.Visible = .T.
REPORT FORM MyReport PREVIEW
_SCREEN.Visible = .F.
在 VFP 6.0 中, 你可以在一个普通表单中预览报表. 它自己是一个顶层表单, 因此不必显示 VFP 主窗口. 要达到这一点, 创建一个叫做 frmPreview 的表单. 设置它的 ShowWindow 属性为 2 (作为顶层表单). 然后启动表单, 例如用 DO FORM 命令. 最后象这样预览你的报表:
REPORT FORM MyReport PREVIEW IN WINDOW frmPreview
8 我用带 FOR 子句的 REPORT FORM 命令来打印一个表中的部分数据. 在很多情况下, 没有
问题. 但当用户预览报表并单击预览工具条上的打印按钮时, 整个表中 的数据都被打印了.
这是 VFP 5.0 的一个 BUG. 在该情况下, 打印按钮不理会象下面一样的命令中的 FOR 子句:
REPORT FORM customers PREVIEW FOR country = "UK"
解决办法是用筛选代替:
SET FILTER TO country = "UK"
REPORT FORM customers PREVIEW
SET FILTER TO
该 bug 在 VFP 5.0a 中已修正.
9 我想用报表设计器来生成发票. 一些发票会包