DataRepeater 控件

DataRepeater 控件的功能是作为数据绑定用户控件的可滚动的容器。每一个控件都作为“重复的”控件出现在自己所在的行里，使用户能够一次浏览多个数据绑定用户控件。

语法

DataRepeater

说明

要使用 DataRepeater 控件，必须首先创建一个数据绑定用户控件，然后将其编译为 .ocx 文件。创建用户控件后，必须按照下面的基本步骤进行：

  1. 用 Components 对话框将用户控件添加到工程。这样就确保 Visual Basic 打包和展开向导里包括了正确的文件，而且也允许对控件的公共属性、事件和方法进行访问。

  2. 在Properties 窗口中单击RepeatedControlName，然后在下拉列表中选择用户控件。

  3. 将数据源（例如 ADO Data Control）添加到窗体并同数据提供者连接。

  4. 将 DataRepeater 控件的 DataSource 属性设置为数据源。

  5. 在 DataRepeater 控件上单击右键，然后单击 DataRepeater Properties。

  6. 单击 RepeaterBindings 选项卡。

  7. 将 PropertyName 设置为适当的DataField，然后单击 Add 按钮。

DataRepeater 控件一次只显示一个用户控件（活动控件），从而节约了计算机资源。所显示的其他控件只是简单的图象，并不保持同数据源的个别连接，如同一个窗体中包含多个用户控件所发生的情况一样。

发行注意 当使用 DataRepeater 控件创建并发布您的应用程序时，应当在用户的 Microsoft Windows System 或 System32 子目录中安装 MSDatRep.ocx 文件。Visual Basic附带的安装工具 提供了一些工具，能够帮助您编写安装程序，从而正确地安装应用程序。


Topic Not Found

未找到该主题

未找到相匹配的主题。可能的原因和解决方法如下：

  • 包含目标主题的文件 (.chm) 没有位于指定的位置。

    解决方法：重新运行 MSDN Library的安装。

  • 包含当前主题或目标主题的文件 (.chm) 已经过时，并且链接不再有效。

    解决方法：安装最新版本的 MSDN Library。

  • MSDN Library CD 不在 CD-ROM 中。

    解决方法：将 MSDN Library CD 装入 CD-ROM 中。


RepeaterBindings 集合

语法

RepeaterBindings

说明

使用 RepeaterBindings 属性返回对集合的引用。


DataRepeater 控件常数

外观常数

常数 | 值 | 描述
drpflat | 0 | 控件为平面外观。
drp3D | 1 | 控件具有3D特性。

边框样式常数

常数 | 值 | 描述
drpNoBorder | 0 | 控件无边框。
drpFixedSingle | 1 | 控件具有单线边框。

标题样式常数

常数 | 值 | 描述
drpNoCaption | 0 | 标题隐藏。
drpLeftAligned | 1 | 标题左对齐。
drpRightAligned | 2 | 标题右对齐。
drpCentered | 3 | 标题居中。

错误常数

常数 | 值 | 描述
drpOutOfMemory | 7 | 内存不足。
drpTypeMismatch | 13 | 类型不匹配。
drpObjVarNotSet | 91 (&H5B) | 对象变量或With块变量未设置。
drpInvalidPropertyValue | 380 (&H17C) | 无效属性值。
drpInvalidPropertyArrayIndex | 381 (&H17D) | 无效属性数组索引。
drpSetNotSupportedAtRuntime | 382 (&H17E) | 运行时不能设置属性。。
drpSetNotSupported | 383 (&H17F) | 属性为只读。
drpSetNotPermitted | 387 (&H183) | 在此控件上不能设置属性。
drpGetNotSupported | 394 (&H18A) | 属性是只写的。
drpObjectDoesntSupportProp | 438 (&H1B6) | 对象不支持该属性或方法。
drpCreateRepeaterControl | 32000 (&H7D00) | 不能创建 RepeatedControl
drpInvalidProgID | 32001 (&H7D01) | 无效编程 ID 或不支持类对象。
drpInvalidBookmark | 32002 (&H7D02) | 无效书签。
drpNoDataSource | 32003 (&H7D03) | 无数据源或数据源为空。
drpNoVisibleRows | 32004 (&H7D04) | 无可见行。
drpCantSetActiveRow | 32005 (&H7D05) | 不能在不影响当前记录位置的情况下设置活动行。
drpBadVisibleRecordIndex | 32006 (&H7D06) | VisibleRecord 索引值必须在 0 和 VisibleRows-1 之间。
drpInvalidRecordBookmark | 32007 (&H7D07) | 书签无效或相应记录不再存在。
drpIndexOutOfBounds | 35600 (&H8B10) | 索引越界。
drpElemNotFound | 35601 (&H8B11) | 元素未找到。
drpNonUniqueKey | 35602 (&H8B12) | 集合中关键字不唯一。
drpInvalidKey | 35603 (&H8B13) | 无效关键字。
drpElemNotPartOfCollection | 35605 (&H8B15) | 对象不再是集合成员。
drpCollectionChangedDuringEnum | 35606 (&H8B16) | 控件的集合已经修改。
drpBadObjectReference | 35610 (&H8B1A) | 无效对象。
drpWouldIntroduceCycle | 35614 (&H8B1E) | 操作将引起循环。
drpCircularReference | 35700 (&H8B74) | 不允许循环对象引用。
drpPropertyNotBindable | 35701 (&H8B75) | 属性不是可绑定的。
drpInvalidIndexOrKey | 35702 (&H8B76) | 无效索引或关键字。
drpAlreadyBound | 35703 (&H8B77) | PropertyName 已经绑定。
drpInvalidPropertyName | 35704 (&H8B78) | 无效PropertyName。
drpInvalidDataField | 35705 (&H8B79) | 无效DataField。

鼠标指针常数

常数 | 值 | 描述
drpDefault | 0 | 缺省。
drpArrow | 1 | 箭头鼠标指针。
drpCross | 2 | 十字线鼠标指针。
drpIBeam | 3 | I-型鼠标指针。
drpIcon | 4 | 图标鼠标指针。
drpSize | 5 | 尺寸线鼠标指针。
drpSizeNESW | 6 | 右上-左下尺寸线鼠标指针。
drpSizeNS | 7 | 垂直尺寸线鼠标指针。
drpSizeNWSE | 8 | 左上-右下尺寸线鼠标指针。
drpSizeEW | 9 | 水平尺寸线鼠标指针。
drpUpArrow | 10 | 上箭头鼠标指针。
drpHourglass | 11 | 沙漏鼠标指针。
drpNoDrop | 12 | 不允许放下鼠标指针。
drpArrowHourglass | 13 | 箭头和沙漏鼠标指针。
drpArrowQuestion | 14 | 箭头和问号鼠标指针。
drpSizeAll | 15 | 四向尺寸线鼠标指针。
drpCustom | 99 (&H63) | 由 MouseIco 属性指定的自定义鼠标指针图标。

行分隔符样式常数

常数 | 值 | 描述
drpNoDivider | 0 | 行间无分隔线。
drpFlatLine | 1 | 行间有平面线。
drpInset | 2 | 行间有 3D线。
drpRaised | 3 | 行间有3D凸起线。

滚动条常数

常数 | 值 | 描述
drpNoScrollBars | 0 | 无滚动条。
drpHorizontal | 1 | 只有水平滚动条。
drpVertical | 2 | 只有垂直滚动条。
drpBoth | 3 | 水平和垂直滚动条均出现。
drpAuto | 4 | 按需绘制滚动条。


ActiveRowChanged 事件

当设置 ActiveRow 属性时发生。

语法

object_ActiveRowChanged( )

object 所在处是一个对象表达式，其值是“应用于”列表中的对象。


CurrentRecordChanged 事件

当当前记录更改为另一个不同的记录时发生。

语法

Private Sub object_CurrentRecordChanged()

object 所在处是一个对象表达式，其值是“应用于”列表中的一个对象。

说明

用户能够通过单击控件中的任何记录、或在数据控件中使用向后、向前、移到第一和移到最后按钮来更改当前记录。


CurrentRecordChanged 事件示例

该示例使用 CurrentRecord 属性存储当前记录的书签。

Option Explicit
Option Base 1
Private mRecords(10) As Variant ' 书签数组。
                                ' 只储存后 10 条记录。

Private Sub DataRepeater1_CurrentRecordChanged()
    If intC = 10 Then intC = 1
    mRecords(intC) = DataRepeater1.CurrentRecord
    intC = intC + 1
End Sub


DataUpdate 事件

当通过程序编辑、或由用户编辑字段时发生。

语法

Private Sub object_DataUpdate(cancel As boolean, ByVal Record As Variant, ByVal field As String)

DataUpdate 事件的语法包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
cancel | 一个布尔表达式，指定是否取消操作。
record | 一个变体型，包含当前记录的书签。
field | 一个字符串，指示将要更改的字段名。

说明

field 参数不一定是个绑定字段。如果记录集中的任何字段发生改变，则该事件发生。


RepeatedControlLoaded、RepeatedControlUnloaded 事件

RepeatedControlLoaded — 在 RepeatedControl 完成创建和初始化后发生。

RepeatedControlUnLoaded — 在 RepeatedControl 将要卸载时发生。

语法

Private Sub object_RepeatedControlLoaded()

Private Sub object_RepeatedControlUnloaded()

object 所在处是一个对象表达式，其值是“应用于”列表中的一个对象。

说明

运行时您可以通过将 RepeatedControlName 属性设置为一个新的程序 ID 来更改RepeatedControl。在进行该操作时，使用 RepeatedControlLoaded 事件初始化用户控件的值。


VisibleRecordChanged 事件

当 VisibleRecords 属性改变时发生。

语法

object_VisibleRecordChanged()

object 所在处是一个对象表达式，其值是“应用于”列表中的一个对象。


Add 方法 （RepeaterBindings 集合）

添加一个 RepeaterBinding 对象到 RepeaterBindings 集合中，并返回对新对象的引用。

语法

object.Add(PropertyName, DataField, DataFormat, key)

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的对象。
PropertyName | 必需的。设置用户控件数据绑定属性的一个字符串。
DataField | 必需的。一个字符串，设置要绑定到 PropertyName中指定属性的数据源字段。
DataFormat | 可选的。设置要使用的 DataFormat 对象。
key | 可选的。一个唯一的字符串，用来标识对象。使用该值可以检索集合中的指定成员。


RepeaterBinding 对象

RepeaterBinding 对象表示部件的一个可绑定属性。

语法

RepeaterBinding

说明

运行时使用 RepeaterBinding 对象通过改变字段绑定方式改变控件 DataRepeater 的内容。


RepeaterBinding 对象示例

下列示例首先打印 RepeaterBindings 集合的当前属性名称，然后将 DataBinding 对象添加到集合中，最后改变对象 DataBinding 的格式。

Private Sub DataRepeater1_RepeatedControlLoaded()
   Dim rb As RepeaterBinding

   For Each rb In DataRepeater1.RepeaterBindings
      Debug.Print rb.PropertyName ' 打印所有属性名。
   Next

   With DataRepeater1
      ' 添加一个新的 RepeaterBinding 对象。
      .RepeaterBindings.Add "cleared", "cleared"
      ' 将格式改为全部大写。
      .RepeaterBindings(2).DataFormat.Format = ">"
   End With
End Sub


ActiveRow 属性

返回或设置定位当前记录的行索引。当设置该属性时，ActiveRowChanged 事件将发生。

语法

object.ActiveRow [=integer]

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的对象。
integer | 一个数字表达式，指出当前记录所在的行。

说明

该属性的值必须在 1 和 VisibleRows 属性值之间。

行索引是基于1的，且不允许将属性设置为 0。然而，当返回 0 时，表明当前的记录已滚动为不可见的了。

当 DataRepeater 控件显示一个记录集的开头或结尾时，有可能 ActiveRow 没有逻辑设置值。例如，如果当前的记录是记录集中的最后一条时，当 VisibleRows 是 3 时，将 ActiveRow 设置为2 或 1 就是无效设置。


CaptionStyle 属性

返回或设置一个值，决定标题的样式，包括对齐和可见性。

语法

object.CaptionStyle [=integer]

CaptionStyle 属性的语法包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的对象。
integer | 一个数字表达式，决定标题的对齐形式，如下面的“设置值”所示。

设置值

常数 | 值 | 描述
drpNoCaption | 0 | 标题隐藏。
drpLeftAligned | 1 | （缺省）标题左对齐。
drpRightAligned | 2 | 标题右对齐。
drpCentered | 3 | 标题居中。


CurrentRecord 属性

返回当前记录的书签。

语法

object.CurrentRecord

object 所在处是一个对象表达式，其值是“应用于”列表中的一个对象。

返回类型

Variant


CurrentRecord, VisibleRecords Properties Example

The example causes the current record to become the first record visible. If the user scrolls the DataRepeater control so that the current record is hidden, invoking the procedure causes the current record to reappear.

Private Sub MakeFirstVisibleRecord()
   DataRepeater1.VisibleRecords(1)=DataRepeater1.CurrentRecord
End Sub


CurrentRecord、VisibleRecords 属性示例

该示例使当前记录成为第一个可见记录。如果用户滚动 DataRepeater 控件，以使当前记录隐藏，则调用过程将会使当前记录重新出现。

Private Sub MakeFirstVisibleRecord()
   DataRepeater1.VisibleRecords(1)=DataRepeater1.CurrentRecord
End Sub


DataField 属性 （RepeaterBinding 对象）

返回或设置要绑定到一个属性的 DataField。

语法

object.DataField [=string]

DataField 属性的语法包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
string | 要绑定到的属性名。


DataFields 属性

返回 DataSource 的 DataField 名的数组。

语法

object.DataFields(index)

DataFields 属性的语法包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
index | 数组中一个元素的索引。该数组是基于 0 的。

返回类型

String

说明

DataFields 数组包含重复控件的所有可绑定属性名。（请参阅 RepeatedControlName）。

使用 Ubound 方法来决定数组中有多少元素。因为数组是基于 0 的，所以使用下面的代码：

Debug.Print Ubound(DataRepeater1.DataFields) + 1


DataFormat 属性 （RepeaterBinding 对象）

返回或设置对 DataFormat 对象的一个引用。

语法

object.DataFormat [=dataformat]

DataFormat 属性的语法包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
dataformat | 可选的。一个对DataFormat 对象的引用。


IntegralHeight 属性 （DataRepeater 控件）

返回或设置一个值，决定控件是否显示部分行。

语法

object.IntegralHeight [=boolean]

IntegralHeight 属性的语法包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
boolean | 一个布尔表达式，表明控件是否显示部分行，详见下面的“设置值”。

设置值

boolean的设置值为：

常数 | 描述
False | 显示部分行。
True | （缺省）控件只显示全部行。


PropertyName 属性 （RepeaterBinding 对象）

返回或设置用户控件的一个可绑定属性的名称。

语法

object.PropertyName [=string]

PropertyName 属性的语法包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
string | RepeatedControl 的一个可绑定属性。


PropertyNames 属性

返回重复控件属性名的数组。

语法

object.PropertyNames(index)

PropertyNames 属性的语法包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
index | 数组中一个元素的索引。该数组是基于 0 的。

说明

使用 Ubound 方法来决定数组中有多少元素。因为数组是基于 0 的，故使用下列的代码：

Debug.Print Ubound(DataRepeater1.DataFields) + 1


RecordCount 属性

返回记录集中的记录数。

语法

object.RecordCount

object所在处是一个对象表达式，其值是“应用于”列表中的对象。

返回类型

长整型。


RepeatedControlName 属性

返回或设置重复控件的程序ID。

object.RepeatedControl [=string]

RepeatedControl 属性包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的对象。
string | 用户控件的程序ID。

说明

重复控件不是 Visual Basic的内部控件。

控件的程序ID以 projectname.classname的形式由其工程名和类名组成。 Visual Basic对象浏览器在工程/库对话框中显示工程名称，在类列表框中显示类名称。


RepeatedControl 属性

返回对重复控件的一个引用。

语法

object.RepeatedControl

object 所在处表示一个对象表达式，其值是“应用于”列表中的一个对象。

说明

使用该引用设置公共属性或调用用户控件的公共函数。例如，下面的代码检索名称为 "Value"的重复控件的公共属性。

MsgBox DataRepeater1.RepeatedControl.Value


RepeaterBindings 属性

返回对 RepeaterBinding 对象的 RepeaterBindings 集合的引用。

语法

object.RepeaterBindings

object.RepeaterBindings(index)

RepeaterBindings 属性的语法包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
index | Index 或Key，指定集合中的一个成员 。


RowDividerStyle 属性 （DataRepeater 控件）

返回或设置一个值，决定行分隔线的外观。

语法

object.RowDividerStyle [=integer]

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的对象。
integer | 一个数字表达式，决定行分隔线的外观，如下面的“设置值”所示。

设置值

常数 | 值 | 描述
drpNoDivider | 0 | 行间无分隔线。
drpFlatLine | 1 | （缺省）行间有分隔线。
drpInset | 2 | 行间有插入线。
drpRaised | 3 | 行间有凸起线。


RowIndicator 属性

返回或设置一个值，决定是否在控件上绘制行指示器（一个实心的黑三角）。指示器标明了活动记录。

语法

object.RowIndicator [=boolean]

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的对象。
boolean | 一个布尔表达式，指出是否绘制行分隔线，如下面的“设置值”所示。

设置值

boolean的设置值为：

常数 | 描述
False | 不绘制行指示器。
True | （缺省）绘制行指示器。


Scrollbars 属性 （DataRepeater 控件）

返回或设置一个值，决定滚动条的样式。

语法

object.Scrollbars [= integer]

Scrollbars 属性的语法包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
integer | 一个数字表达式，决定滚动条的外观，详见下面的“设置值”。

设置值

常数 | 值 | 描述
vbSBNone | 0 | 无。
vbHoriz | 1 | 只有水平滚动条。
vbVert | 2 | （缺省）只有垂直滚动条。
vbBoth | 3 | 垂直和水平滚动条。
vbAuto | 4 | 当需要时出现滚动条。


VisibleRecords 属性

返回或设置要显示在指定行索引处记录的书签。

语法

object.VisibleRecords(rowindex) [=bookmark]

VisibleRecords 属性的语法包含下面几部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
rowindex | 必需的。一个长整型，其值指定在哪一行中显示记录。
bookmark | 可选的。设置将在 rowindex 行显示记录的标签。

返回类型

Variant

说明

rowindex的值不能超出记录集 EOF 或 BOF 的范围。

rowindex 值必须在 1 （顶端行）和 VisibleRows 属性值之间。


VisibleRows 属性 （DataRepeater 控件）

返回控件中的完全可见行数。

语法

object.VisibleRows

object 所在处是一个对象表达式，其值是“应用于”列表中的一个对象。

返回类型

长整型

说明

与 VisibleRecords 属性一起使用 VisibleRow 属性指定当前记录显示的位置。例如，要在最下行显示当前记录，使用下列代码：

DataRepeater1.VisibleRecords(DataRepeater1.VisibleRows) = _
DataRepeater1.CurrentRecord