回 帖 发 新 帖 刷新版面

主题:打印问题,请教mgm

请教如何在报表中设置打印纸(象票据一样,一次打几联)。用VFP页面设置纸张,打印机不会自动调整位置,一张接一张打印,出现很多问题,靖帮忙解决。能否用程序控制。

回复列表 (共4个回复)

沙发

请教如何在报表中设置打印纸(象票据一样,一次打几联)。用VFP页面设置纸张,打印机不会自动调整位置,一张接一张打印,出现很多问题,靖帮忙解决。能否用程序控制。

首先祝这位朋友早日成功!
VFP中打印也是不好控制的。如果你想打印票据,最好设为自定义纸张,如果还不好控制,试着不用报表,而用标签(Labels),这样可能还好上些。
如果你想设置打印机,或是指定打印范围,你可以用以不命令:
REPORT FORM <report name> PREV
我把打印的命令格式和说时写出来,你好好的看吧,
语法

REPORT FORM FileName1 | ?
[ENVIRONMENT]
[Scope] [FOR lExpression1] [WHILE lExpression2]
[HEADING cHeadingText]
[NOCONSOLE]
[NOOPTIMIZE]
[PLAIN]
[RANGE nStartPage [, nEndPage]]
[PREVIEW [[IN] WINDOW WindowName | IN SCREEN]
[NOWAIT]]
[TO PRINTER [PROMPT] | TO FILE FileName2 [ASCII]]
[NAME ObjectName]
[SUMMARY]

参数描述

FileName1

指定报表定义文件的名称。

?

显示“打开”对话框,从中可选择报表文件。

ENVIRONMENT

包括此子句是为了提供与 2.x 版本报表的向后兼容性。要恢复与 VisualFoxPro 报表相关的数据环境,应把数据环境 AutoOpenTables 属性设置为默认值“真”(.T.)。若要确保在报表打印完后关闭报表环境,应把数据环境AutoCloseTables 属性设置为默认值“真”(.T.)。

对于从早期 FoxPro 版本转换过来的报表,即便 AutoOpenTables 属性设置为“假”(.F.),包含 ENVIRONMENT 也会打开并恢复数据环境中的所有表和关系。

当创建或修改报表时,可以用报表定义文件保存当前 Visual FoxPro 数据环境。保存Visual FoxPro 数据环境,实际上是在报表定义表中添加了一些附加的记录,保存下列信息:所有打开的表和索引文件、索引顺序以及表之间关系。

Scope

指定要包含在报表中的记录范围。只有在指定范围内的记录才包括在报表中。

Scope 子句有:ALL、NEXT nRecords、RECORD nRecordNumber 和 REST。有关 scope 子句的详细内容,请参阅帮助中的Scope 子句和语言概述。

REPORT 的默认范围是所有记录(ALL)。

FOR lExpression1

只有使表达式 lExpression1 的计算值为“真”(.T.) 的记录,才打印其中的数据。包括 FOR 可以筛选出不想打印的记录。

如果 lExpression1 是一个可优化表达式,Rushmore 将优化 REPORT FOR 命令。为获得最佳运行性能,应在 FOR 表达式中使用可优化表达式。

详细内容,请参阅稍后的 SET OPTIMIZE 命令与《Microsoft Visual FoxPro 6.0 中文版程序员指南》第十五章“优化应用程序”中的“掌握 Rushmore 技术”。

WHILE lExpression2

指定一个逻辑表达式 lExpression2 作为打印数据的条件。只要 lExpression2条件计算为“真” (.T.) ,就打印记录中的数据,直至遇到使表达式不为“真”(.T.) 的记录为止。

HEADING cHeadingText

指定放在报表每页上的附加标题文本。如果既包括 HEADING 又包括了PLAIN,应把 PLAIN 子句放在前面。

NOCONSOLE

当打印报表或将报表传输到一个文件时,不在 Visual FoxPro 主窗口或用户自定义窗口中显示有关信息。

NOOPTIMIZE

若要关闭对 report 命令的 Rushmore 优化,应包括 NOOPTIMIZE 子句。

详细内容,请参阅稍后的 SET OPTIMIZE 命令与《Microsoft Visual FoxPro 6.0 中文版程序员指南》第十五章“优化应用程序”中的“掌握 Rushmore 技术”。

PLAIN

指定只在报表开始位置出现的页标题。

RANGE nStartPage [, nEndPage]

指定要打印的页码范围。nStartPage 指定了要打印的第一页;nEndPage 指定了要打印的最后一页。如果省略 nEndPage,则要打印的最后一页默认为9,999。

PREVIEW [[IN] WINDOW WindowName | IN SCREEN]

以页面预览模式显示报表,而不把报表送到打印机中打印。要打印报表,必须发出带 TO PRINTER 子句的 report 命令。

请注意:当命令中包括 PREVIEW 子句时,忽略系统变量。

使用可选的 WINDOW 或 IN WINDOW 子句中,您可以指定一个窗口 WindowName,报表输出到这个窗口中。该窗口可由 DEFINE WINDOW 命令定义。如果包含WINDOW 子句,则使用 WindowName 指定的窗口的特性(例如标题、大小等等)进行预览。如果包含了 IN WINDOW 子句,则在 WindowName 指定的窗口中预览报表。

包含可选的 IN SCREEN 子句,表明报表预览窗口位于 Visual FoxPro 主窗口中,并且不能移动到外面去。

可以在命令中包括可选的 NOWAIT 子句。这时,Visual FoxPro 能够在运行程序时不等待关闭页面预览窗口就继续执行程序。也就是说,当页面窗口打开时,Visual FoxPro 继续运行程序。

在已发布的应用程序中,应确保可以得到“查看”菜单。关掉打印预览工具栏时,如果没有“查看”菜单,将无法恢复“打印预览”工具栏。

TO PRINTER [PROMPT]

把报表输送到打印机打印。

在 Visual FoxPro 中,命令中可以包括可选的 PROMPT 子句,在打印开始前显示设置打印机的对话框。可调整的打印设置项取决于当前安装的打印机驱动程序。PROMPT 子句应紧跟在 TO PRINTER 子句之后。

TO FILE FileName2 [ASCII]

在 Visual FoxPro 中,指定报表要送往的文本文件。将报表送往文本文件时,使用当前打印机驱动程序。包含 TO FILE 子句创建的文件具有默认扩展名 .TXT。

在 Visual FoxPro 中,可以在命令中包括可选 ASCII 子句,用报表定义文件创建一个ASCII 文本文件。没有 ASCII 子句时,则按 PostScript或其他打印机代码格式将报表写到文本文件中。报表定义中任何图像、线条、矩形以及圆角矩形都不出现在 ASCII文件中。

在 ASCII 文本文件的每一页中,列和行的数目由系统变量 _ASCIICOLS 和_ASCIIROWS 的内容确定。_ASCIICOLS 和 _ASCIIROWS 的默认值分别为 80 列和63 行。这些值对应于标准的纵向页。

NAME ObjectName

给报表的数据环境指定一个对象变量名。数据环境和数据环境中的对象都有一些属性和方法,例如 AddObject ,这些属性和方法可在运行时设置或调用。对象变量则提供了存取这些属性和方法的途径。如果不指定 NAME 子句,Visual FoxPro 则使用报表文件的名称作为默认对象变量名,此默认名也可以在事件代码中引用。

SUMMARY

不打印细节行,只打印总计和分类总计信息。

说明

报表定义文件的默认扩展名是 .FRX。如果报表定义文件不在默认目录中,文件名中必须包括文件的路径。


板凳

感谢mgm给我的答复,我会去试的。我曾经也试过用自定义纸,但总会出现标题带宽太大,不能使用,其实也不是很大吧,所以我弄不明白。不过你告诉我这么多,我已经很感谢了。我对英语不感兴趣,你能给我用中文说明,我会仔细学习的

3 楼

标题带宽太大是因为内容的有效范围超出了纸张的范围

4 楼

你还没有测试过非标准的连续走纸打印呢,无论如何在报表设计器里设置,当设定自定义纸张打印时,下一张要么上移动,

我来回复

您尚未登录,请登录后再回复。点此登录或注册