`
ijavagos
  • 浏览: 1191223 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Visual FoxPro 9.0 SP2对报表的增强

阅读更多

<?xml:namespace prefix = o />

订购:http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=10054628
http://www.china-pub.com/computers/common/info.asp?id=34809

在本书即将完成之际,微软公司发布了Visual FoxPro 9.0SP2版本。在SP2中又引入了对报表的许多增强,这些增强中最引人注目的是现在可以通过xBase代码扩展报表设计器和报表输出引擎。

报表设计器现在允许自定义设计器的Properties对话框,在SP2之前,开发者不能扩展现有Properties对话框,但是可以通过事件处理器注册表(Event Handler Registry)来替换它们。不过创建一个自定义Properties对话框并不是一件容易的事情,SP2的增强受欢迎之处是为所有用户在报表设计器中提供了一个接口,作为对所创建自定义报表绘制对象的补充。

SP2也使得报表输出处理更加容易。包含在SP2中的REPORTOUTPUT.APP,提供了一种使用自定义类挂钩报表输出的方法。这个新增类叫做Handlers,它由FXGFX两部分构成。FX Handlers提供了报表运行的扩展功能,但是它并不处理任何报表绘制功能。GFX Handlers执行实际的报表绘制功能,并提供扩展当前绘制或替换所有绘制的功能。

<?xml:namespace prefix = st1 /><chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on"><span lang="EN-US">12.17.1</span></chsdate> ReportListener的新增功能

1CallAdjustObjectSize属性

<chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on"><span lang="EN-US"><font face="Times New Roman">12.10.5</font></span></chsdate>节使用EvaluateContents事件实现了对域控件对象绘制的调整,要实现对形状或图片类型的布局元素的调整,则应当在控件的AdjustObjectSize事件中进行。Visual FoxPro为形状或图片的每个布局元素在绘制之前调用一次AdjustObjectSize,但是当具备下列某个条件时除外:

l 如果在运行时刻派生的ReportListenerAdjustObjectSize事件中没有代码;

l 如果元素在带区中没有标记为可扩展;

SP2中新增了CallAdjustObjectSize属性,用于指定是否要求ReportListener为所有相应的形状或图片类型控件调用AdjustObjectSize事件。该属性的可用值在如表12-50所示。

12-50 CallAdjustObjectSize属性的可用值

说明

0(默认值)

如果在AdjustObjectSize事件具有代码的话,则对所有布局对象运行此代码

1

不发生AdjustObjectSize事件,即使其中具有代码

2

AdjustObjectSize事件总是发生,不管事件中是否具有代码。该值主要的目的是用于调用BINDEVENT(),而不是执行方法中的代码

如果报表输出不需要动态对象大小,可以关闭该功能,以实现更好的性能。假设在表单上有一个复选框被选定,下列代码示例使用CallAdjustObjectSize关闭AdjustObjectSize事件,进行最佳化报表输出。

oReport = CREATEOBJECT("myReportlistener")

IF THISFORM.chkNoAdjustSize.Value = .T.

oReport.CallAdjustObjectSize = 1

ENDIF

REPORT FORM (myreportfile) OBJECT oReport PREVIEW

2CallEvaluateContents属性

CallAdjustObjectSize属性类似,CallEvaluateContents属性用于指定是否要求ReportListener对报表上的所有的域控件调用EvaluateContents事件。通过<chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on"><span lang="EN-US"><font face="Times New Roman">12.10.5</font></span></chsdate>节的介绍可以知道,在EvaluateContents事件中可以改变域控件的文本、颜色、字体和Alpha值。该属性的可用值如表12-51所示。

12-51 CallEvaluateContents属性的可用值

说明

0(默认值)

如果在EvaluateContents事件具有代码的话,则对所有布局对象运行此代码

1

不发生EvaluateContents事件,即使其中具有代码

2

EvaluateContents事件总是发生,不管事件中是否具有代码。该值主要的目的是用于调用BINDEVENT(),而不是执行方法中的代码

现有一个报表,可以在运行时刻通过ReportListenerEvaluateContents事件修改域控件的画笔颜色,如果使用了一个非彩色打印机,则可能希望关闭EvaluateContents事件。下面的代码根据复选框的值来决定是否关闭EvaluateContents事件的处理。

oReport = CREATEOBJECT("myReportlistener")

IF THISFORM.chkColorPrinter.Value = .F.

oReport.CallEvaluateContents = 1

ENDIF

REPORT FORM (myreportfile) OBJECT oReport PREVIEW

3PrintCachedPages方法

SP2之前,在将报表输出到预览窗口后,如果希望打印缓冲区中的报表,只能在关闭预览窗口的情况下执行ReportListenerOnPreviewClose(.T.)方法(参考<chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on"><span lang="EN-US"><font face="Times New Roman">12.13.2</font></span></chsdate>节的示例代码)。在SP2中提供了PrintCachedPages方法,如果在预览窗口打开的情况下调用该方法,执行结果OnPreviewClose(.T.)相同。

由于ReportPreview应用程序中已经包含了PrintCachedPages方法,所以可以控制报表预览工具栏中打印按钮的行为。例如,如果希望在用户单击打印后打印预览窗口保持为打开状态,可以在REPORT FORM命令中包含NOWAIT子句。

REPORT FORM (filename) OBJECT oReportListener PREVIEW NOWAIT

4.可以在LoadReport方法中读写CommandClauses.File属性

SP2开始,可以在LoadReport方法中读写CommandClauses.File属性,从而提供了在装载报表时修改要打印报表文件的能力。

<chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on"><span style="mso-bookmark: _Toc158391400"><span style="mso-bookmark: _Toc158391486"><span lang="EN-US">12.17.2 P</span></span></span></chsdate>roperties对话框的增强

SP2包含新增的FXGFX Handlers,以及添加到Properties对话框的新增选项卡,用来配合这些Handlers。这实际上是为用户提供了一个这些Handlers的设计时刻接口。

1Document Properties选项卡

SP2添加了一个叫做Document Properties的选项卡到Report Properties对话框中,其中显示了一个自定义属性列表,可以从中存储有关文档的附加信息或控制报表的绘制,如图12-100所示。

<?xml:namespace prefix = v /><shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 240pt; HEIGHT: 176.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Czhj%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.jpg" o:title="12-100"></imagedata></shape>

12-100 Document Properties选项卡

列表中以HTML开始的属性名称特定于HTML输出,并且当前仅被HTMLListener(包含在_ReportListener.vcx类库中)支持。而所有能够生成文档的ReportListener可以使用其他的属性名称。

例如,如果设置如图12-100中所示的自定义文档属性,则在使用HTML Report Listener绘制报表的情况下,下面的文本将包含在生成的HTML文件中。

<title>My Report</title>

<<place w:st="on">META</place> name="description" content="My description text">

<<place w:st="on">META</place> name="author" content="Hong Ju">

尽管这些数据并不显示Web页上,但是在为搜索引擎创建文档索引时这却是有用的信息。在SP2之前,没有一种更有效的方法可以在HTML报表文档中包含这些信息。表12-52列出了对这些扩展属性的简要说明。

可以添加自定义属性到属性列表中,但是它们不能被标准的ReportListener识别,任何新增的自定义属性应当由新的ReportListener或自定义FXGFX Handler进行处理。

12-52 内置在新报表设计器中的报表属性

属性

说明

Document.Title

为报表文档指定一个标题。对于HTML输出,这会作为一个TITLE标签在所绘制的文档中出现

Document.Author

为报表文档指定作者信息。对于HTML输出,这将以一个META标签出现

Document.Description

为报表文档指定一个说明。对于HTML输出,这将以一个META标签出现

Document.Keywords

指定包含在报表文档中的关键词。对于HTML输出,这将以一个META标签出现

Document.Copyright

为报表文档指定版本信息。对于HTML输出,这将以一个META标签出现

Document.Date

为报表文档指定一个日期

HTML.CSSFile

仅用于HTML输出。为生成的文档指定要使用的外部CSS文件名称

HTML.Metatag.HTTP-EQUIV

仅用于HTML输出。指定一个包含在HTML输出中的HTTP-EQUIV标签

HTML.TextAreasOff

仅用于HTML输出。对溢出伸展字段取消使用TEXTAREA标签

2Advanced Properties选项卡

SP2向每个控件属性对话框(包括标签、字段、矩形、线条和图片)添加了一个新增的Advanced选项卡,该选项卡提供了一个属性列表,开发者可以自定义报表上的每个对象。如图12-101所示。

<shape id="_x0000_i1026" style="WIDTH: 237pt; HEIGHT: 184.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Czhj%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.jpg" o:title="12-101"></imagedata></shape>

12-101 Advanced选项卡

注意列表中以HTML作为前缀的属性名称在默认情况下仅用于HTMLListenerAdvanced选项卡也包含一个Object Rotation控件,使用该控件可以为当前对象指定一个旋转角度。旋转仅在绘制期间发生,因此在报表设计器中并不可见。需要注意的是,HTMLListener不支持旋转,在输出为HTML时,旋转角度会被忽略。

通常情况下,在Advanced选项卡中列出的是与报表控件相关的默认属性。此外,也可以为报表控件设置、新增或删除自定义属性。表12-53列出了对这些默认属性的简要说明。

12-53 Advanced选项卡中报表控件的默认属性

属性

说明

HTML.Link

当以HTML输出运行报表时,该表达式作为控件超级链接的HREF属性

HTML.Anchor

当以HTML输出运行报表时,该表达式作为控件超级链接的name属性

HTML.Alt-Title

当以HTML输出运行报表时,该表达式作为控件<div>元素中的title属性

HTML.CSSClass.OverrideFRX

当以HTML输出运行报表时,ReportOutput应用程序为每个报表元素创建具有格式定义的CSS类。如果在Document Properties选项卡中设置了HTML.CSSFile报表属性,在Report Builder Properties对话框的Report Properties对话框(Report Builder)指定了一个CSS文件,则可以使用HTML.CSSClass.OverrideFRX属性在文件中指定一个CSS类,这会替换由Report Builder创建的格式

HTML.CSSClass.ExtendFRX

如果设置了HTML.CSSFile报表属性到一个CSS文件,则可以使用该属性指定一个类来添加格式特征到由Report Builder创建的格式中

HTML.PrintablePageLink

HTML报表中,系统为每页创建一个位图文件。对于实际页面,打印位图比HTML更加紧凑。如果将控件的该属性设置为“真”,则该控件则会转换为到该图像的一个超级链接

ListenerRef.NoRenderWhen

当表达式计算为“真”时,所打印页面中将不包含指定对象。ListenerRef是在报表运行时对Report Listener的引用

ListenerRef.Preprocess.NoRenderWhen

当表达式计算为“真”时,在一个多次运行的报表的第一次运行时,所打印页面中将不包含指定对象

1)控件旋转和输出到HTML示例

现有一个如图12-102所示的报表,其中第二列的标题(This is a long column title)超长,为了使其显示的更加完整,可以对该标签控件旋转一定的角度。双击该标签控件,打开其Properties对话框,可以在Advanced选项卡的Object Rotation中单击鼠标左键指定角度,也可以通过下方的Angle微调按钮进行调整。单击OK按钮关闭对话框,并执行下面的命令在预览窗口中打开报表。可以看到第二列的标题发生了旋转,如图12-104所示。

SET REPORTBEHAVIOR 90

REPORT FORM report1.frx PREVIEW NOWAIT

<shape id="_x0000_i1027" style="WIDTH: 4in; HEIGHT: 142.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Czhj%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_image005.jpg" o:title="12-102"><font style="BACKGROUND-COLOR: #d9d9d9" face="Times New Roman" size="1"></font></imagedata></shape>

12-102 示例报表

<shape id="_x0000_i1028" style="WIDTH: 159.75pt; HEIGHT: 183.75pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Czhj%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_image007.jpg" o:title="12-103"></imagedata></shape> <shape id="_x0000_i1029" style="WIDTH: 3in; HEIGHT: 138pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Czhj%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_image009.jpg" o:title="12-104"></imagedata></shape>

12-103 指定标签的旋转角度

12-104 报表预览效果

但是,在输出到HTML时控件无法进行旋转,第二列的标题仍旧会显示不完整,如图12-105所示。在这种情况下,可以设置在输出到HTML时不输出该标题,而是为下方的域控件添加提示信息,当鼠标指针移动域控件上方时,显示提示信息。

<shape id="_x0000_i1030" style="WIDTH: 263.25pt; HEIGHT: 126.75pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Czhj%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_image011.jpg" o:title="12-105"></imagedata></shape>

12-105 将报表输出到HTML时的效果

双击报表中的This is a long column title标签,打开其Properties对话框。选择Advanced选项卡并编辑ListenerRef.NoRenderWhen属性的值为“This.Listener.OutputType=<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="5" unitname="”"><font face="Times New Roman">5</font><span lang="EN-US" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span lang="EN-US">”</span></span></chmetcnv>,指定在输出HTML时不输出该控件,如图12-106所示。

双击报表中的contact域控件,打开其Properties对话框。选择Advanced选项卡并编辑HTML.Alt-Title属性的值为“"This column is contact name of customer."”,指定当鼠标指针移动到该控件上时将显示该提示信息,如图12-107所示。

设置完成后,选择File菜单中的Save As HTML菜单项或执行下面的命令输出报表到HTML,执行结果如图12-108所示。

SET REPORTBEHAVIOR 90

oListener = CREATEOBJECT('ReportListener')

oListener.ListenerType = 5

REPORT FORM report1.frx TO FILE report1.htm OBJECT oListener

RUN report1.htm

<shape id="_x0000_i1031" style="WIDTH: 194.25pt; HEIGHT: 211.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Czhj%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_image013.jpg" o:title="12-106"></imagedata></shape> <shape id="_x0000_i1032" style="WIDTH: 195pt; HEIGHT: 195.75pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Czhj%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_image015.jpg" o:title="12-107"></imagedata></shape>

12-106 设置This is a long column title标签不输出到HTML

12-107 设置控件输出到HTML时的提示信息

<shape id="_x0000_i1033" style="WIDTH: 249.75pt; HEIGHT: 131.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Czhj%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_image017.jpg" o:title="12-108"><font size="1"></font></imagedata></shape>

12-108 在输出到HTML时未输出第二列的标题,并且为第二列中的控件添加了提示

2)建立报表控件到当前页面的图像链接示例

如果为报表中的某个控件设置了HTML.PrintablePageLink属性,则将报表输出到HTML的同时会为每页生成一个GIF文件,并且每页上的该控件会链接到相应的GIF文件。例如,在上面所设计报表的基础上添加一个标签控件,并双击该控件打开其Properties对话框,在Advanced选项卡中双击HTML.PrintablePageLink属性,将属性值改变为Yes,如图12-109所示。

设置完成后,按照前面介绍的方法将报表输出到HTML中,可以看到所添加的标签变成了一个指向当前页面GIF文件的超级链接,如图12-110所示。

<shape id="_x0000_i1034" style="WIDTH: 4in; HEIGHT: 167.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Czhj%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_image019.jpg" o:title="12-109"></imagedata></shape>

12-109 将控件设置为到GIF图像文件的链接

<shape id="_x0000_i1035" style="WIDTH: 272.25pt; HEIGHT: 145.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CUsers%5Czhj%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_image021.jpg" o:title="12-110"><font size="1"></font></imagedata></shape>

12-110 可以链接到GIF文件的报表

3Dynamics Properties选项卡

SP2FieldRectanglePicture控件的Properties对话框添加了一个Dynamics选项卡,该选项卡为在报表运行期间动态改变报表对象的属性提供了一个Conditions(条件)列表。仍旧以前面建立的report1.frx报表为例,我们将使用该功能动态改变控件的背景,以实现报表中的奇偶行使用不同颜色显示。

双击报表中的company域控件,打开其Properties对话框。单击Dynamics选项卡中的Add按钮,在打开的对话框输入新条件的名称并单击OK按钮,将打开Configure Dynamic Properties对话框,可以从中设置一个条件表达式和一系列控制属性。对于域控件,可以改变字段的文本、字体、颜色、背景类型和透明层级,但是注意这些属性可以被ReportListener中的EvaluateContents事件覆盖。对于形状和图片控件,Dynamics选项卡允许覆盖控件的宽度和高度,但是注意这些属性会被ReportListener中的AdjustObjectSize事件覆盖。

该示例的详细设置步骤如图12-111所示

分享到:
评论

相关推荐

    Microsoft Visual FoxPro 9.0 SP2

    Microsoft Visual FoxPro 9.0 SP2 是从完整安装盘里抽取出来的,安装时是带索列号安装的,打了全部的补丁,经实验把这几个文件单独弄出来,COPY到其它机器可以直接用,希望对有兴趣的人有所帮助。现在玩这玩意的人...

    Microsoft OLE DB Provider for Visual FoxPro 9.0

    Microsoft OLE DB Provider for Visual FoxPro 9.0

    Visual FoxPro 9.0 SP2汉化补丁(VFP9.0_SP2汉化补丁)

    Visual FoxPro 9.0 SP2汉化补丁(VFP9.0_SP2汉化补丁)

    Microsoft Visual FoxPro 9.0 SP2 HELP

    Microsoft Visual FoxPro 9.0 SP2 英文版帮助文件。需要迷你版执行程序可以在这里下载:http://download.csdn.net/detail/boyla/3881590,此帮助下载后直接解压到迷你版的执行目录下就可了,只可惜不能在IDE里直接...

    Visual FoxPro 9.0 sp2 Lite (Only 5Mgyts)

    Visual FoxPro 9.0 sp2 Lite (Only 5Mgyts) 不到5M,放在这里,大家方便

    VFP9_SP2(7423)汉化补丁最终版(2010.05更新)

    Visual FoxPro 9.0 SP2(7423)汉化补丁最终版(2010.05更新)

    Microsoft Visual FoxPro运行库集合(6.0、7.0、8.0、9.0、9.0SP2)

    Microsoft Visual FoxPro运行库集合(6.0、7.0、8.0、9.0、9.0SP2),提供Visual FoxPro编译之后的可执行文件运行环境。

    FoxPro9.0 sp2 7423补丁

    Visual Foxpro 9.0简称vfp9.0,由微软公司推出的一款可视化桌面关系数据库开发软件,主要用于数据管理与运算等方便,提供了完备的工具,友好的界面,简单的数据存储方式,跨平台技术,是数据管理提供了新的解决方案...

    VFP9 SP2中文精简版

    1.此Visual FoxPro 9.0 (SP2)简体中文安装版是在原英文版基础上经过汉化重新1.打包制作而成,已集成SP2补丁,安装时不需输入序列号,不需再汉化,一次性安装成功后即为简体中文版。 2.此版本保留了Visual FoxPro ...

    vfp9sp2 5815 1 4

    visual foxpro 9.0 sp2 安装光盘 因上传文件尺寸限制,只能分卷压缩,这是 1/4 卷

    vfp9sp2 5815 2 4

    visual foxpro 9.0 sp2 安装光盘 因上传文件尺寸限制,只能分卷压缩,这是 2/4 卷

    vfp9sp2 5815 4 4

    visual foxpro 9.0 sp2 安装光盘 因上传文件尺寸限制,只能分卷压缩,这是 4/4 卷

    vfp9sp2 5815 3 4

    visual foxpro 9.0 sp2 安装光盘 因上传文件尺寸限制,只能分卷压缩,这是 3/4 卷

    vfp收发邮件控件的说明书

    MyFll是专为Microsoft Visual FoxPro设计的扩展库,部分函数来自任明汉(RMH myF1论坛)前辈提供的myDll代码翻译而成,由于很多功能利用VFP处理比较烦锁,或无法实现,使用此库可有效解决VFP的弱项。部分与Win32Api...

    VFP可用的发送接收邮件控件

    MyFll是专为Microsoft Visual FoxPro设计的扩展库,部分函数来自任明汉(RMH myF1论坛)前辈提供的myDll代码翻译而成,由于很多功能利用VFP处理比较烦锁,或无法实现,使用此库可有效解决VFP的弱项。部分与Win32Api...

Global site tag (gtag.js) - Google Analytics