DataCombo 控件

DataCombo 控件是一个数据绑定组合框，它自动地由一个附加数据源中的一个字段充填；并且可选择地更新另一个数据源的一个相关表中的一个字段。

语法

DataCombo

说明

DataCombo 控件与 DBCombo 控件代码兼容。但是，DataCombo 控件被优化来同 ActiveX Data Objects (ADO)一起工作。

发行注意 DataCombo 控件和 DataList 控件一起可以在文件 Msdatlst.ocx 中找到。要在应用程序中使用这一控件，必须把 .OCX 文件添加到工程中。当发行您的应用程序时，要把文件 Msdatlst.ocx 安装到用户的 Microsoft Windows System 或 System32 目录下。关于如何向一个 Visual Basic 工程添加 ActiveX 控件的详细信息，请参阅“标准 ActiveX 控件”。


DataList 控件

DataList 控件是一个数据绑定列表框，它自动地由一个附加数据源中的一个字段充填，并且可选择地更新另一个数据源中一个相关表的一个字段。

语法

DataList

说明

DataList 控件与 DBList 控件代码兼容，但是，DataList 控件被优化来同 ActiveX Data Objects (ADO) 一起工作。

发行注意 DataList 控件和 DataCombo 控件一起可以在文件 Msdatlst.ocx 中找到。要在应用程序中使用这一控件，必须把 .OCX 文件添加到工程中。当发行您的应用程序时，要把文件 Msdatlst.ocx 安装到用户的 Microsoft Windows System 或 System32 目录下。关于如何向一个 Visual Basic 工程添加 ActiveX 控件的详细信息，请参阅“标准 ActiveX 控件”。


Topic Not Found

未找到该主题

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

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

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

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

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

  • MSDN Library CD 不在 CD-ROM 中。

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


Refill 方法

再次创建 DataList 或DBCombo 控件的列表并强制刷新。

语法

object.Refill

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

说明

Refill 方法和标准的 Refresh 方法不同，它仅仅强制一个 Repaint 事件。


DBCombo 控件

DBCombo 控件是带有下拉列表框的与数据相连的组合框，它能自动从与它相连的 Data 控件的字段中移居，也可以有选择地更新其它 Data 控件中相关表的字段。DBCombo 的文本框部分能用来编辑选定的字段。

语法

DBCombo

说明

DBCombo 控件和标准 ComboBox 控件不同。ComboBox 控件的列表用 AddItem 方法填加数据项，而 DBCombo 控件由和它相连的 Data 控件的 Recordset 对象中的字段中的数据自动填加数据项。标准 ComboBox 控件必须用 AddItem 方法手工移居。另外，DBCombo 控件有能力更新驻留在不同的 Data 控件中的相关的 Recordset 对象的字段。

DBCombo 控件支持自动查找模式，不用附加代码能迅速在列表中定位数据项。

下面是一系列属性，用于填充、管理 DBCombo 控件以及绑定选定数据和 Data 控件。

属性 | 特性
DataSource | 作出选择后更新的 Data 控件名。
DataField | 由 DataSource 属性指定的在 Recordset 中更新的字段名。
RowSource | 控件列表区字段的作为项目源使用的 Data 控件名。
ListField | 由 RowSource 指定的在 Recordset 中的字段名以填充下拉列表。DBCombo 不支持 Listfield 属性的 LongBinary 型的字段。
BoundColumn | 由 RowSource 指定的在 Recordset 中的 Field 名，当选择确定后回传到 DataField。DBCombo 不支持 BoundColumn 的 LongBinary 型的字段。
BoundText | BoundColumn 字段的文本值。当选择确定后，该值被回传以更新由 DataSource 和 DataField 属性指定的 Recordset 对象。
Text | 在列表框中选定项目的文本值。
MatchEntry | 在运行时当用户键入字符时如何查找列表。
SelectedItem | 由 RowSource 属性指定的记录集中选定项目的书签。
VisibleCount | 在列表中可见的项目数目（全部或部分）。
VisibleItems | 一组书签，具有和 VisibleCount 属性相等的项目的最大数。

用户能通过在控件的文本框部分键入值查找 DBCombo 控件。一旦键入，该值被放入列表，当前列表项目设置成该项。如果没有找到项目，BoundText 属性设成 null。

注意 如果未使控件的边界大到至少是以答的下拉式列表的一行，在运行时列表不会显示出来。


DBList 控件

DBList 控件是和数据相连的列表框，它能自动从与之相连的 Data 控件的字段中移居，并有选择地更新其它 Data 控件中相关表的字段。

语法

DBList

说明

DBList 控件和标准 ListBox 控件不同。ListBox 控件的列表用 AddItem 方法填加数据项，而 DBList 控件由和它相连的 Data 控件的 Recordset 对象中的字段中的数据自动填加数据项。标准 ListBox 控件用 AddItem 方法手工移居。另外，DBList 控件有能力更新在不同的 Data 控件的相关的 Recordset 对象中的字段。

DBList 控件支持自动查找模式，不用附加代码能迅速在列表中定位数据项。

下面是一系列属性，用于填充、管理列表和把选定数据和 Data 控件绑定。

属性 | 特性
DataSource | 当选择确定时的被更新的 Data 控件名。
DataField | 由 DataSource 属性指定的在 Recordset 中更新的字段名。
RowSource | 作为控件列表区段的项目源使用的 Data 控件名。
ListField | 由 RowSource 指定的在 Recordset 中的字段名，用于填充列表。DBList 不支持 Listfield 属性的 LongBinary 型的字段。
BoundColumn | 由 RowSource 指定的在 Recordset 中的字段名，当选择确定后传回到 DataField。DBList 不支持 BoundColumn 属性的 LongBinary 型的字段。
BoundText | BoundColumn 字段的文本值。当选择确定后，该值被回传以更新由 DataSource 和 DataField 属性指定的 Recordset 对象。
Text | 在列表中选定项目的文本值。
MatchEntry | 在运行时当用户键入字符时如何查找列表。
SelectedItem | 由 RowSource 属性指定的在 Recordset 中的选定项目的书签。
VisibleCount | 在列表中可见的项目数目（全部或部分）。
VisibleItems | 一组书签，具有和 VisibleCount 属性相等的项目的最大数。

和用 Data 控件改变当前记录一样，如果 BoundText 属性和由 DataSource 和 DataField 属性指定的字段的值相等，那么 DBList 控件会自动强调显示列表中的某一项。


BoundColumn 属性

返回或设置一个 Recordset 对象的源字段的名称，该 Recordset 对象用来为另一个 Recordset 提供数据值。

语法

object.BoundColumn [= value]

BoundColumn 属性的语法包含以下部分：

部件 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
value | 一个字符串表达式，它指定了由 RowSource 属性指定的 Data 控件创建的 Recordset 中的一个字段的名称。

说明

通常，在使用 DataList 控件和 DataCombo 控件时，要用两个 Data 控件；一个用来填充由 Listfield 和 RowSource 属性指定的列表，另一个用来更新由 DataSource 和 DataField 属性指定的数据库中的字段。

ListField 属性指定用于填充列表的字段。由 DataSource 属性指定的第二个 Data 控件管理一个包含待更新字段的 Recordset。一旦用户选定了列表中的一项，由 BoundColumn 属性指定的字段就被送到由 DataSource 和 DataField 属性指定的第二个 Date 控件的字段中。这样，当选中一项时，就可以指定一个字段来填充列表，而使用另一个字段（同一 Recordset 中）来将数据传送到由 DataSource 和 DataField 属性指定的 Recordset 中。

如果在 Recordset 中找不到由 BoundColumn 属性指定的字段，就会产生一个可以捕获的错误。

数据类型

String


ListField 属性

返回或设置 Recordset 对象中的字段名，这个对象由 RowSource 属性指定，用于填充 DataCombo 控件或 DataList 控件的列表部分。

语法

object.ListField [= value]

ListField 属性的语法包含以下部分：

部件 | 描述
对象 | 对象表达式，其值是“应用于”列表中的对象。
value | 一个字符串表达式，指定了由 RowSource 属性指定的 Recordset中的一个字段的名称，这个 Data 控件由。

说明

ListField 属性允许选择 Recordset 中的字段来填充控件的列表部分。这个属性和 RowSource 属性结合使用，后者指出用哪个 Data 控件创建用来填充列表的 Recordset。

一般要使用两个数据觉察的 Recordset 对象。一个 Recordset 包含合法选定内容的一个只读列表，而另一个 Recordset 则由列表中选中的内容更新。例如，DataList 控件可以由一个返回合法部件数列表及其描述的查询产生。ListField 属性指向 Recordset 的描述字段使用户看不到实际的部件数。BoundColumn 属性指向部件数字段，因为这是 Recordset 中需要更新的字段。

如果在 Recordset 中找不到由 ListField 属性指定的字段，就会产生一个可以捕获的错误。

数据类型

String


MatchedWithList 属性

如果当前的 BoundText 属性的内容与控件列表部分中的一个记录匹配，则返回 True。

语法

object.MatchedWithList

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

返回值

MatchedWithList 属性的返回值如下：

值 | 描述
True | BoundText 属性中的内容与列表中的一个记录匹配。
False | BoundText 属性中的内容与列表中记录都不匹配。

说明

在 DataCombo 控件的文本部分输入一个数值时，如果输入的数值是列表中显示的一项，那么 MatchedWithList 属性被设置为 True。在移动由 DataCombo 控件或 DataList 控件的 DataSource 属性指定的 Data 控件时，如果 BoundText 的值与列表中的一个记录匹配，那么 MatchedWithList 属性也会被设置为 True。在这种情况下，这个记录被强调表示。

数据类型

Boolean


MatchEntry 属性

返回或设置一个值，它指示 DataCombo 控件或 DataList 控件如何在用户输入的基础上执行查找。

语法

object.MatchEntry [= value ]

MatchEntry 属性的语法包含以下部分：

部件 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
value | 一个常量或值，当控件获得焦点且用户输入一个或多个字符时这个值定义控件的行为，这点正如设置中所述。

设置

value 的设置情况如下：

设置 | 数值 | 描述
dblBasicMatching | 0 | 基本匹配：（缺省）对于使用列表输入项的第一个字母输入字符，该控件查找下一个匹配。重复键入相同的字母可以循环浏览列表中所有以那个字母开头的输入项。
dblExtendedMatching | 1 | 扩展匹配：控件查找与输入的所有字符相匹配的项。键入字符后，查找就完成了，键入更多的字符可以使查找更准确。

说明

当 MatchEntry 属性被设置为 dblExtendedMatching 且用户输入了一个 backspace 键或等待数秒钟之后，匹配的字符串被重新设置。

数据类型

Integer


RowSource 属性

设置一个指定 Data 控件的值，DataList 控件和 DataCombo 控件的列表由这个 Data 控件填充。运行时不可用。

语法

object.RowSource [ = value]

RowSource 属性的语法包含以下部分：

部件 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
value | 指定 Data 控件名称的字符串表达式。

说明

要填充 DataCombo 控件或 DataList 控件中的列表，必须在设计时使用 Properties 窗口在 RowSource 属性中指定一个 Data 控件。

要与 Data 控件管理的 Recordset 对象中的字段相结合，必须在 ListField 属性中提供 Field 对象的名称。

数据类型

String


SelectedItem 属性

返回一个值，包含 DataCombo 控件或 DataList 控件中选中的记录的书签。

语法

object.SelectedItem

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

说明

当选定控件列表部分中的一项时，SelectedItem 属性包含一个可以用来重新定位到由 RowSource 属性指定的 Data 控件的 Recordset 中的选定记录的书签。

数据类型

Varaint


VisibleCount 属性

返回一个值，它表示 DataCombo 控件或 DataList 控件的列表部分中可见项的数目。

语法

object.VisibleCount

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

说明

VisibleCount 属性返回一个范围在0到控件中可见项数之间的整数。当 IntegralHeight 属性被设置为 False 时，即使一项中的文本只是部分可见，这一项也被看作是可见的。

注意 在第一次显示 DataCombo 控件的列表部分之前，VisibleCount 属性可能被设置为 0。

数据类型

Integer


VisibleItems 属性

返回书签数组，每个书签对应 DataCombo 控件或 DataList 控件的列表中的一个可见项。

语法

object.VisibleItems(Index)

VisibleItems 属性的语法包含以下部分：

部件 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
Index | 指定数组元素的整型表达式。这个值在 0 到 VisibleCount - 1 之间。

说明

这些书签可以用来在用于填充列表的 recordset 中获取个别记录。

数据类型

Varaint


DataList 和 DBCombo 控件常数

Appearance 常数

常数 | 值 | 描述
dblFlat | 0 | DataList 或 DBCombo 控件的平的外观。
dbl3D | 1 | DataList 或 DBCombo 控件的三维外观。

Area 常数（仅对 Dbcombo）

常数 | 值 | 描述
dbcAreaButton | 0 | 当单击或双击发生时，返回 DBCombo 控件的按钮的位置。
dbcAreaEdit | 1 | 当单击或双击发生时，返回 DBCombo 控件的文本框的位置。
dbcAreaList | 2 | 当单击或双击发生时，返回 DBCombo 控件的列表框的位置。

Match Entry 常数

常数 | 值 | 描述
dblBasicMatching | 0 | 基本匹配。
dblExtendedMatching | 1 | 扩展匹配。

Mousepointer 常数

常数 | 值 | 描述
dblDefault | 0 | （缺省）由对象决定形状。
dblArrow | 1 | 箭头。
dblCross | 2 | 十字叉（十字线）。
dblIBeam | 3 | I-型。
dblIcon | 4 | 图标（方形区字段里的小区字段）。
dblSize | 5 | Size（指向东，南，西，北的四个箭头）。
dblSizeNESW | 6 | Size NE SW（指向东北和西南的双箭头）。
dblSizeNS | 7 | Size N S（指向北和南的双箭头）。
dblSizeNWSE | 8 | Size NW SE（指向东南和西北的双箭头）。
dblSizeEW | 9 | Size E W（指向东和西的双箭头）。
dblUpArrow | 10 | 上箭头。
dblHourglass | 11 | 沙漏（等待）。
dblNoDrop | 12 | 不放手。
dblArrowHourglass | 13 | 箭头和沙漏。
dblArrowQuestion | 14 | 箭头和疑问标志。
dblSizeAll | 15 | 所有的 Size
dblCustom | 99 | 由 MouseIcon 属性指定的用户图标。

Style 常数

常数 | 值 | 描述
dbcDropdownCombo | 0 | 下拉组合框。
dbcSimpleCombo | 1 | 简单组合框。
dbcDropdownList | 2 | 下拉列表。

OLE Drag 常数

常数 | 值 | 描述
dblOLEDragNone | 0 | 不许拖动。
dblOLEDragManual | 1 | 手工拖动。
dblOLEDragAutomatic | 2 | 自动。

OLE Drop Effect 常数

常数 | 值 | 描述
dblOLEDropEffectNone | 0 | 放下不能接收数据的目标。
dblOLEDropEffectCopy | 1 | 放下导致复制。原始数据未被拖动源触动。
dblOLEDropEffectMove | 2 | 拖动源移动数据。
dblOLEDropEffectLink | 3 | 拖动源和原始数据建立连接。
dblOLEDropEffectScroll | -2147483648 | 滚动要开始或在目标中正在发生滚动。该值和其它值一起使用。

OLE Drop 常数

常数 | 值 | 描述
dblOLEDropManual | 0 | 手工。
dblOLEDropNone | 1 | 不允许放下。

Drag Over 常数

常数 | 值 | 描述
dblEnter | 0 | OLE 对象被拖入目的范围内。
dblLeave | 1 | OLE 对象被拖出目的范围。
dblOver | 2 | OLE 对象由一个目的位置移动到另一个位置。

Clipboard 常数

常数 | 值 | 描述
dblCFText | 1 | 文本
dblCFBitmap | 2 | 位图（.bmp 文件）
dblCFMetafile | 3 | 元文件（.wmf 文件）
dblCFDIB | 8 | 设备无关位图 (DIB)
dblCFPalette | 9 | 调色板
dblCFEMetafile | 14 | 增强元文件（EMF 文件）
dblCFFiles | 15 | 文件列表
dblCFRTF | 16639 | RTF 文本格式（.rtf 文件)


Click 事件（DBCombo 控件）

当用户在DBCombo 控件上按下并释放鼠标键时发生。该事件也可以通过在键盘上按上下箭头键选择项目触发。

语法

Private Sub object_Click( [index As Integer ,] Area As Integer )

Click 事件的语法包括这些部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
index | 在控件数组中唯一标识一个控件的整数。
Area | 整数表达式，如下所示，它指明了定在何处单击控件。

Area 参数可包含如下值：

常数 | 值 | 描述
dbcAreaButton | 0 | 用户单击DBCombo 控件上的按钮。
dbcAreaEdit | 1 | 用户单击DBCombo 控件上的文本框部分。
dbcAreaList | 2 | 用户单击DBCombo 控件上的下拉列表框部分。

说明

DBCombo 控件不象标准组合框那样有 DropDown 事件，在用户下拉 DBCombo 控件的下拉列表框部分时发出信号。用户能在 Click 事件的 Area 参数中得知它单击了 DBCombo 控件的哪个部分。

一般地，把 Click 事件的过程和一个控件联系起来以执行命令或类似命令的动作。

单击控件产生除 Click 事件外的 MouseDown 和 MouseUp 事件。当把处理事件的过程和相关的事件联系起来时，要确保这些动作不冲突。如果事件的顺序对应用程序重要，测试控件以确定事件顺序。

注意 使用 MouseDown 和 MouseUp 事件来区分用户按下的是鼠标的左，右还是中键。


DblClick 事件（DBCombo 控件）

当用户在 DBCombo 控件上双击鼠标键时发生。

语法

Private Sub object_DblClick ( [index As Integer,] Area As Integer)

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
index | 在控件数组中唯一标识一个控件的整数。
Area | 整数表达式，如下所示，它指明在何处双击控件。

Area 参数可包含如下值：

常数 | 值 | 描述
dbcAreaButton | 0 | 用户双击 DBCombo 控件上的按钮。
dbcAreaEdit | 1 | 用户双击 DBCombo 控件上的文本框部分。
dbcAreaList | 2 | 用户双击 DBCombo 控件上的下拉列表部分。(只发生在 Style 属性设置成 1 时)

说明

可以对一个隐含的操作使用 DblClick 事件过程或用它执行具有单一操作的一系列步骤。

如果 DblClick 没有发生在系统的双击时间限制内，对象将识别第二次 Click 事件。双击时间限制可能会有不同，因为用户能通过“控制面板”设置双击速度。

注意 为了区别鼠标的左，右和中键，用 MouseDown 和 MouseUp 事件。


AboutBox 方法

显示控件的“关于”对话框。

语法

object.AboutBox

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

说明

这与在属性窗口单击“关于”相同。


BoundText 属性

返回或设置由 BoundColumn 属性指定的字段的值。

语法

object.BoundText [= value]

BoundText 属性的语法包含以下部分：

部件 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
value | 一个指定数据值的字符串表达式。

说明

在用 DataList 控件或 DataCombo 控件进行选择后，BoundText 属性包含 BoundColumn 属性的字段值。如果选定列表中的一项，则对于由 DataSource 属性所指定的 Data 控件，该项是可用的。被选定的内容也显示在 DataCombo 控件的文本框部分中，在那里可以对它进行编辑。如果在文本框部分输入一个值，列表部分将试图定位到某个匹配项目。如果匹配成功，则在 BoundColumn 属性的字段值的基础上设置 BoundText 属性。如果匹配失败，BoundText 则被设置为 Null。

可以使用 BoundText 属性值创建一个可以用来找到指定记录的查询：

Dim strQ As String
StrQ = "Select * From Products Where SupplierID = " & DataList1.BoundText
' 使用带有 ADO Data 控件的新查询返回一个新的记录集。
Adodc1.RecordSource = strQ

把 DataSource 属性所指定的 Data 控件定位到一个新的记录将会把 BoundText 属性设置为由 DataField 指定的值。然后，DataList 控件或 DataCombo 控件在列表中查找记录，查看 BoundText 的值是否和 BoundColumn 属性中的字段值相匹配。如果匹配成功，列表中的记录被强调表示或者被放入 DataCombo 控件的文本框部分。

数据类型

String


Locked 属性（DataCombo、DataList 控件）

返回或设置一个值，指示对象中的任何数据是否可以被修改。

语法

object.Locked [= boolean]

Locked 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
boolean | 可选的。一个布尔表达式，指示数据是否可以更改。如设置值中所述。

设置值

boolean 的设置值如下：

设置值 | 描述
False | （缺省值）数据可以被更改。
True | 数据不能被更改。


RowMember 属性

返回或设置用于显示列表文本的数据成员。

语法

object.RowMember [= string]

RowMember 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
string | 可选的。数据成员名。

说明

RowMember 属性等价于 DataMember 属性，并且用于完全限定绑定到哪个数据集合。当一个数据源提供多于一个数据成员时，在设置 DataField 属性之前必须指定要使用哪一个数据成员。


Style 属性（DataCombo 控件）

返回或设置一个值，指定控件的行为和/或外观。

语法

object.Style [= integer]

Style 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
integer | 可选的。一个数值表达式，决定控件的风格。如设置值中所示。

设置值

integer 的设置值如下：

常数 | 值 | 描述
dbcDropdownCombo | 0 | （缺省的）下拉式组合框。包括一个下拉列表和一个文本框。用户可以从列表中选择或是在文本框中输入。
dbcSimpleCombo | 1 | 简单组合框。包括一个文本框和一个列表，列表不能下拉。用户可以从列表中选择或在文本框中输入。增加 Height 属性来显示列表的更多内容。
dbcDropdownList | 2 | 下拉列表。这一风格只允许从下拉列表中选择。


VisibleCount 和 VisibleItems 属性示例

下面的示例代码使用 VisibleCount 和 VisibleItems 属性显示 DataList 控件中所有可见记录中的字段：

Private Sub Command1_Click()
Dim I As Integer, fld As Field, msg As Variant

For I = 0 To DataList1.VisibleCount - 1
    Data1.Recordset.Bookmark = DataList1.VisibleItems(I)
    msg = ""
    For Each fld In Data1.Recordset.Fields
        msg = msg & fld.Value & "-"
    Next
    MsgBox msg
Next I

End Sub