Skip to content

Report 类

Report是一个顶级Win32窗口——类似于Form——专门用于渲染带状报表的打印预览。在IDE中设计的每个报表都成为派生自Report的类:其节(报表头/页头/明细/页脚/报表尾)和放置在其中的控件成为该类的成员。在运行时,代码将记录集赋值给Recordset,调用Show,框架遍历记录集,计算控件上的表达式,并将结果页面绘制到内置预览窗口(底部带有导航工具栏)。PrintReport将相同页面发送到打印机。默认属性为Controls,默认事件为Load

vb
' 在报表的代码隐藏文件中 (rptSales):
Private Sub Report_Load()
    Set Me.Recordset = OpenSalesRecordset()
    Me.Caption = "Sales for " & FormatDateTime(Now, vbLongDate)
End Sub

' 在启动模块中:
Sub Main()
    rptSales.Show vbModal       ' 打开预览窗口
End Sub

报表由最多五个节组成,在每个页面上垂直排列:

绘制时机
ReportHeader仅一次,在第一页的顶部。
PageHeader在报表头之后的每个页面的顶部。
DetailRecordset中的每条记录一次。
PageFooter每个页面的底部。
ReportFooter仅一次,在最后一页的最后一个明细行之后。

节在IDE中设计——每个节是一个容器,持有LabelImageQRCode等控件。节的KeepTogether属性防止它在分页符处被拆分;其BackStyle和背景色控制节的背景;当节请求时,框架会自动为明细节选择交替行颜色。

记录集绑定

Recordset接受任何暴露经典ADO/DAO接口的对象——EOFMoveNext和一个可按名称索引的Fields集合。框架透明地包装非tB记录集。Recordset也可以保持Nothing,在这种情况下明细节仅渲染一次且没有字段数据。

节中的控件通过将其DataField设置为记录集字段名来选择绑定;框架为每个明细行读取该字段并将其写回控件的值(或LabelCaptionQRCodePayload)。对于更复杂的情况,在DataField前加=使其成为表达式——任何混合记录集字段、报表自身的Page / Pages / Caption和标准库调用的twinBASIC表达式。一个DataField="Page " & Report.Page & " of " & Report.Pages的标签会在每个页面渲染时更新自身。

DataField为空且LabelCaption包含%占位符时,这些占位符会自动转换为表达式——参见下面的标题占位符。在标签上设置DataFieldAggregate还可以跨行累加表达式的值以获得运行总计。

标题占位符

在没有DataField的标签内部,Caption中的以下%占位符在渲染时被识别并替换:

占位符替换为
%p当前Page页码。
%PPages数。
%d当前日期,格式为vbShortDate
%D当前日期,格式为vbLongDate
%t当前时间,格式为vbShortTime
%T当前时间,格式为vbLongTime
%i报表的Caption

使用%%嵌入字面%。没有识别占位符的标题保持不变。

内置预览工具栏

报表窗口的底部条是一个固定工具栏,包含三组控件:

  • 记录选择器——首页/上一页/下一页/末页按钮,中间是页码显示。
  • 缩放控件——减/加按钮,中间是百分比显示。
  • 打印按钮——将报表发送到默认打印机(以ShowDialog := False调用PrintReport)。

工具栏始终显示,无法隐藏。加号和减号按钮以ZoomStep(默认10)步进ZoomPercent,并将ZoomAutoFit切换为vbZoomAutoFitNever。当缩放后的页面超出可用区域时自动出现滚动条;鼠标滚轮垂直滚动,Shift+滚轮水平滚动。

缩放和页面大小

PixelsReportWidthPixelsReportHeight定义页边距之间的页面大小;PixelsLeftMarginPixelsRightMarginPixelsTopMarginPixelsBottomMargin定义页边距。所有五个值以缩放像素为单位(1 px ≈ 100% DPI下的1/96英寸)。默认值——页面为300 × 900,每个页边距为96/2.54(≈ 1厘米)——是占位值而非真正的纸张大小;IDE设计器的ChangePageSize辅助工具会写入标准纸张大小的值。

ZoomAutoFitConstants

ZoomPercent是渲染缩放(100 = 1个逻辑像素对应1个屏幕像素)。ZoomAutoFitZoomAutoFitConstants)选择框架是否还在每次绘制时重新计算ZoomPercent以适应当前窗口:

常量含义
vbZoomAutoFit0每次绘制时重新计算缩放以在窗口中最大化页面。
vbZoomAutoFitOnce1在首次绘制时重新计算一次,然后不再修改ZoomPercent
vbZoomAutoFitNever2遵循ZoomPercent的当前设置。

点击工具栏的加号或减号按钮会自动将ZoomAutoFit切换为vbZoomAutoFitNever,以保留用户的手动缩放。

在节内绘制

每个节的重绘都会在报表上触发BeforePaintSection,以正在绘制的Section作为参数。在此事件期间,hDC返回正在记录的节的图元文件设备上下文——绘图原语(LineCirclePSetPaintPicturePrint和通过hDC的直接GDI调用)直接写入该节的图像。在事件之外,hDC返回报表窗口自身的DC,仅适用于屏幕绘制。

vb
Private Sub Report_BeforePaintSection(Section As ControlsSection)
    If Section.SectionType = PageHeader Then
        Me.Line (0, 0)-(Me.PixelsReportWidth, 0), vbBlack
    End If
End Sub

坐标单位

报表混合三种坐标系:

继承自窗体式绘图表面的图形原语(ClsCircleLinePSetPrint等)使用报表自身的ScaleModeScale*属性作为其坐标输入。

打印

PrintReport从第1页到最后一页遍历Printer对象,将每个缓存的图元文件作为一页打印页发送。

vb
rptSales.PrintReport ShowDialog:=False

此测试版尚不支持打印对话框;以ShowDialog := True调用PrintReport会引发运行时错误5。纸张大小目前锁定为A4——每次打印作业会有消息框提醒用户。

属性

Appearance

决定操作系统如何绘制报表的边框。AppearanceConstants的成员:vbAppearFlatvbAppear3d(默认)。

INFO

保留用于VB6兼容性;此属性对报表窗口没有可观察效果。

AutoRedraw

在报表窗口上执行的绘制是否在失效之间持久保存。Boolean,默认False。报表通常依赖通过BeforePaintSection的逐节绘制,因此此属性很少有用;它是为了与Form保持一致而提供的。

BackColor

报表窗口绘图表面的背景颜色,作为OLE_COLOR。默认为系统3-D表面颜色。窗口大部分被页面预览(使用PaperColor)和工具栏占据,因此此颜色仅在绘制期间短暂可见。

BorderStyle

窗口框架样式。FormBorderStyleConstants的成员:vbBSNonevbFixedSinglevbSizable(默认)、vbFixedDialogvbFixedToolWindowvbSizableToolWindowvbSizableNoTitleBarvbSizableToolWindowNoTitleBar

Caption

标题栏文本。String。也由%i标题占位符返回,并可从标签DataField中的=Report.Caption表达式访问。

ChangePageSize

INFO

设计时辅助工具。从IDE属性网格中选择一个值会将PixelsReportWidthPixelsReportHeight设置为相应的纸张大小;此属性本身没有运行时效果,并且始终读回为空。

ReportSizeConstants的成员:空(默认)、A4 PortraitA4 LandscapeA3 PortraitA3 LandscapeA5 PortraitA5 LandscapeLetter PortraitLetter LandscapeTabloid PortraitTabloid LandscapeLegal PortraitLegal LandscapeStatement PortraitStatement LandscapeExecutive PortraitExecutive Landscape

ClipControls

在绘制期间是否将子控件从报表窗口的绘图区域中裁剪出来。Boolean,默认True。运行时只读——在设计时设置。

ControlBox

标题栏是否显示系统菜单(以及其上的关闭按钮)。Boolean,默认True

Controls

此报表节承载的每个控件的集合,可通过控件名或从零开始的索引访问。**默认属性。**只读——控件由运行时添加到集合中,而非用户代码。

ControlType

标识此对象为报表的只读ControlTypeConstants值。始终为vbReport

Count

Controls中的控件数量,作为Long。只读。等同于Me.Controls.Count

CurrentX

省略起始坐标的绘图原语使用的水平画笔位置,以ScaleMode单位。Double

CurrentY

省略起始坐标的绘图原语使用的垂直画笔位置,以ScaleMode单位。Double

DpiScaleFactorX

报表窗口当前所在显示器的水平DPI缩放因子,作为Double。96 DPI时为1.0,120 DPI时为1.25,依此类推。只读。

DpiScaleFactorY

报表窗口当前所在显示器的垂直DPI缩放因子。当前始终等于DpiScaleFactorX。只读。

DrawMode

绘图原语在将画笔与目标组合时应用的光栅操作。DrawModeConstants的成员:vbCopyPen(默认)为普通 opacity 绘制。

DrawStyle

绘图原语使用的画笔线型。DrawStyleConstants的成员:vbSolid(默认)、vbDashvbDotvbDashDotvbDashDotDotvbInvisiblevbInsideSolid

DrawWidth

绘图原语的画笔宽度(以像素为单位)。Long,默认1。宽度大于1时强制DrawStyle回到vbSolid(Win32 GDI限制)。

Enabled

决定报表窗口是否接受用户输入。禁用的报表忽略键盘和鼠标输入——包括工具栏按钮。Boolean,默认True

FillColor

CircleLine的矩形形式绘制的闭合形状的填充颜色。OLE_COLOR,默认0(黑色)。仅在FillStyle不为vbFSTransparent时使用。

FillStyle

闭合形状的填充图案。FillStyleConstants的成员:vbFSSolidvbFSTransparent(默认)、vbHorizontalLinevbVerticalLinevbUpwardDiagonalvbDownwardDiagonalvbCrossvbDiagonalCross

Font

此报表上Print语句和其他文本绘制使用的StdFont。便捷属性FontNameFontSizeFontBoldFontItalicFontStrikethruFontUnderline读写此对象的相应成员。

FontTransparent

True(默认)时,报表上绘制的文本具有透明背景,使底层绘制在文本后面可见。当False时,文本绘制在由BackColor填充的 opaque 矩形上。Boolean

ForeColor

CircleLinePSet以及Print绘制的文本使用的画笔颜色。OLE_COLOR

hDC

当前与绘制相关的Win32设备上下文句柄,作为LongPtr。只读。在BeforePaintSection处理程序内部,返回正在记录的节的图元文件DC;在事件之外,返回报表窗口自身的DC。当底层窗口尚未创建时返回0

HasDC

报表窗口是否为其绘图表面保持私有设备上下文(CS_OWNDC)。Boolean,默认True。运行时只读——在设计时设置。

Height

报表窗口的外部高度,以缇为单位。Double。设置它会调整窗口大小。运行时受MinHeightMaxHeight约束(当它们非零时)。

HelpContextID

标识应用程序帮助文件中主题的Long,当用户在报表具有焦点时按F1时检索。

hWnd

报表的Win32窗口句柄,作为LongPtr。只读。适用于传递给API函数。

Icon

在标题栏、任务栏和Alt-Tab中显示的图标。类型为vbPicTypeIconStdPicture

Image

将渲染的绘图表面作为StdPicture返回。只读。当AutoRedrawTrue时最有用。

KeyPreview

True时,报表的KeyDownKeyUpKeyPress事件在焦点控件收到相同按键之前触发。Boolean,默认False

Left

报表窗口外部矩形的水平位置,以缇为单位,从屏幕左边缘测量——对于MDI子窗口,从MDI父级客户区的左边缘测量。Double

MaxButton

标题栏是否显示最大化按钮。Boolean,默认True,运行时只读。在设计时设置。

MaxHeight

报表窗口客户区的最大高度,以缇为单位。Double,默认0(无限制)。在交互式调整大小时遵守。

MaxWidth

报表窗口客户区的最大宽度,以缇为单位。Double,默认0(无限制)。在交互式调整大小时遵守。

MDIChild

True时,报表作为MDIForm的子窗口承载。Boolean,只读——在设计时设置。MDI子报表不能以模态方式显示。

MinButton

标题栏是否显示最小化按钮。Boolean,默认True,运行时只读。在设计时设置。

MinHeight

报表窗口客户区的最小高度,以缇为单位。Double,默认0(无限制)。在交互式调整大小时遵守。

MinWidth

报表窗口客户区的最小宽度,以缇为单位。Double,默认0(无限制)。在交互式调整大小时遵守。

MouseIcon

MousePointervbCustom且指针位于报表上时用作鼠标光标的StdPicture

MousePointer

当指针位于报表上时显示的鼠标光标。MousePointerConstants的成员。

Moveable

用户是否可以通过标题栏拖动报表窗口。Boolean,默认True

Name

报表的唯一设计时名称。运行时只读。也是生成的报表类的类名。

Opacity

报表窗口的 opacity 百分比(0--100,默认100)。超出范围的值在Initialize时被钳制。低于100的值会使窗口成为分层窗口。

Page

当前正在预览的页码(从1开始)。Long。设置Page会将预览滚动到该页。赋值-1跳到最后一页(首先渲染并缓存所有中间页面)。可从标签DataField中的=Report.Page表达式访问,或通过%p标题占位符访问。

Pages

报表的总页数。Long。初始化为999,在框架渲染了足够多的页面以知道实际计数后向下修正。可从标签DataField中的=Report.Pages表达式访问,或通过%P标题占位符访问。

PaperColor

预览中渲染页面后面的模拟纸张颜色。OLE_COLOR,默认vbWhite

INFO

此属性仅影响预览——它不会更改发送到打印机的颜色。

Picture

作为报表窗口背景绘制的StdPicture。在任何绘图原语或子控件之前绘制。赋值Nothing移除背景。

PictureDpiScaling

True时,Picture在绘制前按当前DPI因子缩放。Boolean,默认False

PixelsBottomMargin

底部页边距,以缩放像素为单位。Double,默认96 / 2.54(≈ 1厘米)。在窗体文件中存储为BottomMargin

PixelsLeftMargin

左侧页边距,以缩放像素为单位。Double,默认96 / 2.54(≈ 1厘米)。在窗体文件中存储为LeftMargin

PixelsReportHeight

页面内容高度(上下页边距之间),以缩放像素为单位。Double,默认900。在窗体文件中存储为ReportHeight

PixelsReportWidth

页面内容宽度(左右页边距之间),以缩放像素为单位。Double,默认300。在窗体文件中存储为ReportWidth

PixelsRightMargin

右侧页边距,以缩放像素为单位。Double,默认96 / 2.54(≈ 1厘米)。在窗体文件中存储为RightMargin

PixelsTopMargin

顶部页边距,以缩放像素为单位。Double,默认96 / 2.54(≈ 1厘米)。在窗体文件中存储为TopMargin

Recordset

为明细节迭代的数据源。使用Set设置。

语法:Set object.Recordset = value

value
任何具有EOFMoveNextFields集合的对象(tB ITbRecordset直接使用;其他记录集被透明包装)。可以为Nothing,在这种情况下明细节仅渲染一次且没有字段数据。

赋值Recordset本身不会重置分页——调用Page = 1(或Refresh)以从新的第一页开始预览。

RecordNum

明细节当前正在处理的记录的从1开始的序号。Long。由框架在遍历记录集时更新;在表达式和BeforePaintSection处理程序中很有用。

RightToLeft

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

ScaleHeight

逻辑绘图矩形的高度,以ScaleMode单位。Double。设置它(或ScaleWidthScaleLeftScaleTop)会隐式将ScaleMode切换为vbUser

ScaleLeft

报表窗口客户区左边缘的逻辑水平坐标,以ScaleMode单位。Double,默认0

ScaleMode

CurrentXCurrentY、绘图原语、TextWidthTextHeight使用的度量单位。ScaleModeConstants的成员:vbTwips(默认)、vbPointsvbPixelsvbCharactersvbInchesvbMillimetersvbCentimetersvbUser

ScaleTop

报表窗口客户区顶边缘的逻辑垂直坐标,以ScaleMode单位。Double,默认0

ScaleWidth

逻辑绘图矩形的宽度,以ScaleMode单位。Double

ShowInTaskbar

报表窗口是否出现在Windows任务栏和Alt-Tab列表中。Boolean,默认True。运行时只读——在设计时设置。

StartUpPosition

首次显示时报表窗口的初始位置如何确定。StartUpPositionConstants的成员:vbStartUpManualvbStartUpOwnervbStartUpScreenvbStartUpWindowsDefault(默认)。运行时只读——在设计时设置。

Tag

应用程序可用于将自定义数据与报表关联的自由格式String。框架忽略此属性。

Top

报表窗口外部矩形的垂直位置,以缇为单位,从屏幕顶边缘测量——对于MDI子窗口,从MDI父级客户区的顶边缘测量。Double

TopMost

报表窗口是否位于始终置顶的z序层。Boolean,只读。

TransparencyKey

设置后变为完全透明的OLE_COLOR——点击穿透到下面的内容,相应的像素不绘制。默认-1禁用此效果。

Visible

报表窗口是否显示。Boolean,默认True。在报表隐藏时将Visible设置为True等同于调用Show vbModeless;设置为False等同于调用Hide

Width

报表窗口的外部宽度,以缇为单位。Double。设置它会调整窗口大小。运行时受MinWidthMaxWidth约束(当它们非零时)。

WindowState

窗口的正常/最小化/最大化状态。FormWindowStateConstants的成员:vbNormal (0, 默认)、vbMinimized (1)或vbMaximized (2)。在运行时设置时,如果报表可见,会立即更新窗口位置。

ZoomAutoFit

选择ZoomPercent如何自动更新。ZoomAutoFitConstants的成员(参见缩放和页面大小):vbZoomAutoFit (0, 默认)、vbZoomAutoFitOnce (1)或vbZoomAutoFitNever (2)。工具栏的加号和减号按钮将其切换为vbZoomAutoFitNever

ZoomPercent

当前渲染缩放,以百分比表示。Double,默认100。当ZoomAutoFitvbZoomAutoFitvbZoomAutoFitOnce时,框架在绘制前重新计算此值;工具栏的加号和减号按钮增减ZoomStep

ZoomStep

每次点击工具栏加号或减号按钮时ZoomPercent的变化量。Long,默认10

方法

Circle

使用ForeColor绘制轮廓,FillColor/FillStyle填充内部,在当前绘图表面上绘制圆、椭圆或弧(参见hDC)。

语法:object.Circle [ Step ] ( X, Y ), Radius [, [ Color ] [, [ Start ] [, [ End ] [, Aspect ] ] ] ]

X, Y
必需 圆心,以ScaleMode单位。Step使圆心相对于(CurrentX, CurrentY)。
Radius
必需ScaleMode单位给出半径的Single
Color
可选 轮廓的OLE_COLOR;默认为ForeColor
Start, End
可选 以弧度为单位的角,用于绘制弧而非完整圆。
Aspect
可选 垂直半径与水平半径的比率。1.0为圆形;偏离1.0的值产生椭圆。

Close

启动报表窗口的卸载序列——QueryUnload,然后是Unload,然后是Terminate。前两个事件中的任何一个都可以通过将Cancel设置为非零来取消关闭。

语法:object.Close

Cls

清除在当前绘图表面上由CircleLinePSetPaintPicturePrint执行的任何绘制,重新绘制BackColor,并将CurrentX / CurrentY重置为0

语法:object.Cls

Hide

隐藏报表窗口而不卸载它。类实例及其节被保留;调用Show(或赋值Visible = True)将其带回。等同于赋值Visible = False

语法:object.Hide

Line

使用ForeColor(或显式颜色)和DrawWidth/DrawStyle在当前绘图表面上绘制直线或矩形(参见hDC)。

语法:object.Line [ [ Step ] ( X1, Y1 ) ] -[ Step ] ( X2, Y2 ) [, [ Color ] [, B [ F ] ] ]

X1, Y1
可选 起始点,以ScaleMode单位。省略时,从当前画笔位置开始绘制。
X2, Y2
必需 终止点,以ScaleMode单位。Step使点相对于(X1, Y1)。
Color
可选 线条的OLE_COLOR;默认为ForeColor
B
可选 绘制一个以(X1, Y1)和(X2, Y2)为对角的矩形。
F
可选B组合时,用ForeColor而非FillColor/FillStyle填充矩形。

Move

通过一次调用重新定位并可选地调整报表窗口大小。

语法:object.Move Left [, Top [, Width [, Height ] ] ]

Left
必需 给出新水平位置的Single
Top, Width, Height
可选 相应属性的新值。省略的值保持不变。

PaintPicture

StdPicture绘制到当前绘图表面上,支持可选的缩放和光栅操作。

语法:object.PaintPicture Picture, X1, Y1 [, Width1 [, Height1 [, X2 [, Y2 [, Width2 [, Height2 [, Opcode [, StretchQuality ] ] ] ] ] ] ] ]

Picture
必需 要绘制的StdPicture
X1, Y1
必需 目标左上角,以ScaleMode单位。
Width1, Height1
可选 目标大小;默认为图片的自然大小。
X2, Y2, Width2, Height2
可选 图片内的源矩形;默认为整个图片。
Opcode
可选 光栅操作代码(RasterOpConstants的成员)。默认为vbSrcCopy
StretchQuality
可选 缩放时的插值方法。默认为普通质量。

Print

使用Font将文本写入当前绘图表面,从CurrentX / CurrentY开始并随之推进。在BeforePaintSection处理程序内部,文本出现在正在绘制的节上;在处理程序之外,文本直接绘制在报表窗口上。

语法:object.Print [ expressionlist ] [ ; | , ]

末尾的;,抑制换行,使下一次Print调用在同一行继续。Print是语言级语句,不是函数调用——多个表达式可以用;(无间距)或,(跳到下一个打印区域)分隔,Spc(n) / **Tab(n)**插入空格或移到列。

INFO

要将报表发送到打印机,请使用PrintReport——而非Print

PrintReport

将报表的每一页发送到Printer对象。从第1页遍历到最后一页,依次生成每个缓存的图元文件。

语法:object.PrintReport [ ShowDialog [, Range [, PageFrom [, PageTo ] ] ] ]

ShowDialog
可选True(默认)时,在打印前显示标准打印对话框。尚不支持——以ShowDialog := True调用PrintReport会引发运行时错误5。
Range
可选 PageRangeConstants的成员:rptRangeAllPages (0, 默认)或rptRangeFromTo (1)。
PageFrom, PageTo
可选RangerptRangeFromTo时,要打印的包含范围。

INFO

此测试版中打印机纸张大小目前锁定为A4。

PSet

将当前绘图表面上的单个像素设置为指定颜色。

语法:object.PSet [ Step ] ( X, Y ) [, Color ]

X, Y
必需 像素位置,以ScaleMode单位。Step使位置相对于(CurrentX, CurrentY)。
Color
可选 OLE_COLOR;默认为ForeColor

Refresh

强制报表窗口立即重绘。

语法:object.Refresh

Scale

通过一次调用设置报表窗口的逻辑绘图矩形——赋值ScaleLeftScaleTopScaleWidthScaleHeight。将ScaleMode切换为vbUser。不带参数调用Scale会将矩形重置为与客户区1:1映射(以像素为单位)。

语法:object.Scale [ ( X1, Y1 )-( X2, Y2 ) ]

X1, Y1
可选 左上角的逻辑坐标。
X2, Y2
可选 右下角的逻辑坐标。

ScaleX

将水平长度从一种ScaleMode转换为另一种。

语法:object.ScaleX( Width [, FromScale [, ToScale ] ] )

Width
必需 给出源长度的Single
FromScale, ToScale
可选 ScaleModeConstants的成员。省略时默认为当前ScaleMode

ScaleY

将垂直长度从一种ScaleMode转换为另一种。

语法:object.ScaleY( Height [, FromScale [, ToScale ] ] )

Height
必需 给出源长度的Single
FromScale, ToScale
可选 ScaleModeConstants的成员。省略时默认为当前ScaleMode

SetFocus

激活报表窗口并将输入焦点给予TabIndex0的控件(或最后持有焦点的控件)。

语法:object.SetFocus

Show

使报表窗口可见。首次调用时触发Load

语法:object.Show [ Modal [, OwnerForm ] ]

Modal
可选 FormShowConstants的成员:vbModeless (0, 默认——调用立即返回)或vbModal (1——调用阻塞直到报表关闭)。
OwnerForm
可选 对于模态显示,在报表打开期间被禁用的窗体;默认为当前活动窗体。

TextHeight

返回给定字符串使用报表当前Font绘制时将占用的 height,以ScaleMode单位。

语法:object.TextHeight( Str )

Str
必需 要测量的String

TextWidth

返回给定字符串使用报表当前Font绘制时将占用的 width,以ScaleMode单位。

语法:object.TextWidth( Str )

Str
必需 要测量的String

ZOrder

将报表窗口带到顶级z序的前面或后面。

语法:object.ZOrder [ Position ]

Position
可选 ZOrderConstants的成员:vbBringToFront (0, 默认)或vbSendToBack (1)。

事件

Activate

当报表窗口成为应用程序中的活动窗口时引发——要么是在Load之后的首次显示,要么是它从另一个窗口重新获得激活时。

语法:object_Activate( )

BeforePaintSection

每个节在渲染时引发一次,在框架绘制该节中的控件之前。在处理程序内部,hDC返回正在记录该节的图元文件设备上下文,因此任何绘图原语(LineCirclePrint等)或直接GDI调用直接写入该节。

语法:object_BeforePaintSection( Section As ControlsSection )

Section
当前正在绘制的节。检查Section.SectionTypeReportHeaderPageHeaderDetailPageFooterReportFooter)来区分。

Click

当用户单击报表窗口的客户区时引发(即不在工具栏或任何子控件上)。

语法:object_Click( )

DblClick

当用户双击报表窗口的客户区时引发。

语法:object_DblClick( )

Deactivate

当应用程序中的另一个窗口从此报表夺走激活时引发。当激活移到不同应用程序的窗口时不引发。

语法:object_Deactivate( )

DPIChange

当报表窗口移动到具有不同DPI缩放的显示器时引发,但仅当应用程序是按显示器DPI感知的(PROCESS_PER_MONITOR_DPI_AWARE)。事件的NewDPI参数给出新的有效DPI。

语法:object_DPIChange( NewDPI As Long )

GotFocus

当报表窗口获得输入焦点且报表没有启用的子控件可以代替获取焦点时引发。

语法:object_GotFocus( )

Initialize

引发一次,在底层窗口创建之前且报表的任何控件存在之前。适用于设置报表级字段的初始值。

语法:object_Initialize( )

KeyDown

当用户按下任意键时引发。默认在焦点控件上触发;KeyPreviewTrue时,首先在报表上触发。

语法:object_KeyDown( KeyCode As Integer, Shift As Integer )

KeyPress

当用户输入产生ANSI按键的字符时引发。默认在焦点控件上触发;KeyPreviewTrue时,首先在报表上触发。

语法:object_KeyPress( KeyAscii As Integer )

KeyUp

当用户释放键时引发。默认在焦点控件上触发;KeyPreviewTrue时,首先在报表上触发。

语法:object_KeyUp( KeyCode As Integer, Shift As Integer )

Load

在报表的窗口和所有节控件创建之后,报表首次出现在屏幕之前引发。这是分配Recordset和执行需要控件存在的任何初始化的经典位置。默认事件。

语法:object_Load( )

LostFocus

当报表窗口失去输入焦点时引发。

语法:object_LostFocus( )

MouseDown

当用户在报表窗口的客户区按下任意鼠标按钮时引发。

语法:object_MouseDown( Button As Integer, Shift As Integer, X As Single, Y As Single )

MouseMove

当光标在报表窗口的客户区上移动时引发。

语法:object_MouseMove( Button As Integer, Shift As Integer, X As Single, Y As Single )

MouseUp

当用户在报表窗口的客户区释放鼠标按钮时引发。

语法:object_MouseUp( Button As Integer, Shift As Integer, X As Single, Y As Single )

QueryUnload

在报表卸载之前引发,给应用程序确认或取消关闭的机会。将Cancel设置为非零保持报表打开。始终在Unload之前引发。

语法:object_QueryUnload( Cancel As Integer, UnloadMode As Integer )

Cancel
设置为非零(任何非零值,约定为1)以取消关闭。
UnloadMode
标识触发关闭原因的QueryUnloadConstants成员。

Resize

当报表窗口被调整大小时引发——由用户、代码、操作系统在WindowState更改后、或首次显示时的初始布局。

语法:object_Resize( )

Terminate

在报表窗口已销毁且类实例即将被释放之后引发。此时控件不再可访问。

语法:object_Terminate( )

Unload

QueryUnload批准之后且报表窗口被销毁之前引发。将Cancel设置为非零保持报表打开并阻止卸载。

语法:object_Unload( Cancel As Integer )

Cancel
设置为非零(任何非零值,约定为1)以取消卸载。

twinBASIC及其LOGO版权为作者"韦恩"所有