**怎样定制打印预览窗口? **在打印预览表单中定制标题栏的一个途径
怎样定制打印预览窗口?
问: 有什么办法可以定制打印预览窗口的标题和工具栏?
我想要移去在右上角的那些按钮,这样在工具栏上的退出按钮就可以保证是退出的唯一选择。
回答: VFP不允许对打印预览窗口的更多控制。所以你可能想要使用其他的报表编辑器——无论如何,对你提到的那些问题我们还是可以做一些事情的。Report 有一个 WindowName 选项。还有,如果你使用 REPORT NOWAIT 命令,那么你可以使用 ACTIVATE WINDOW 在任何窗口(包括顶层表单)中预览。
至于工具栏,你对它的修改被保存在 foxuser.dbf 中。你可以新建一个,定制工具栏,然后用另一个文件名保存 foxuser.dbf。在你打印预览前,用 SET RESOURCE to 把 foxuser.dbf 指定为你的自定义 foxuser.dbf。
在打印预览表单中定制标题栏的一个途径
在打印预览表单中定制标题栏并不是一件困难的事情,秘诀在于:
1、定义一个用于打印预览的窗口:(DefinirForma)
2、运行报表:(DO DOVistaPrevia)
**定义打印预览窗口的代码 PUBLIC oForm IF !UPPER("FOXTOOLS") $ SET("LIBRARY") SET LIBRARY TO HOME() + "Foxtools.Fll" ENDIF DO DefinirForma DO DOVistaPrevia RETURN
**表单定义 PROCEDURE DefinirForma oForm = NEWOBJECT("Form002", "", "", "一个自定义打印预览窗口的例子") oForm.Show
DEFINE CLASS Form002 AS Form AutoCenter = .T. BorderStyle = 3 Caption = "APLIC_NAME" && 这个标题是可以改变的 Desktop = .T. DoCreate = .T. FontBold = .T. FontName = "MS Sans Serif" FontSize = 8 Height = 350 Name = "Form002" ShowWindow = 2 SizeBox = .T. TabStop = .F. Tag = "501" TitleBar = 0 && **** 重要!不要改动 **** Width = 474
PROCEDURE Init LPARAMETERS lcCaption LOCAL lnWHandle THIS.Caption = lcCaption *-- 这里设置的标题将不会显示 _WSetTitle(_WFindTitl(THIS.Caption), THIS.Caption) ENDPROC ENDDEFINE ENDPROC
*-- Procedure DoVistaPrevia PROCEDURE DoVistaPrevia LOCAL lcAlias lcAlias = ALIAS() CREATE CURSOR TempDbf (TempMemo m) SELECT TempDbf APPEND BLANK REPLACE TempDbf.TempMemo WITH "这是一个自定义打印预览窗口的例子" + CHR(13) + "不是一个完美的方法" REPORT FORM UserRpt NOCONSOLE PREVIEW IN WINDOW Form002 SELECT TempDbf USE IF !EMPTY(lcAlias) AND USED(lcAlias) SELECT (lcAlias) ENDIF RELEASE WINDOWS Form002 ENDPROC
这就是全部内容。秘诀在下面这些地方:
1、在表单定义中: TitleBar = 0 && **** 重要!不要改动 ****
2、在用于打印预览的表单的INIT方法中: _WSetTitle(_WFindTitl(THIS.Caption), THIS.Caption)
3、在菜单代码中: REPORT FORM UserRpt NOCONSOLE PREVIEW IN WINDOW Form002