我在这里学编程 索引篇共55页[1 2 >3< 4 5 6 7 »... 最后一页]

控件简介(D-D)

Data:
使用三种类型的 Recordset 对象中的任何一种来提供对存储在数据库中数据的访问。Data 控件允许从一个记录移动到另一个记录,并显示和操纵来自被连结的控件的记录的数据。如果没有 Data 控件或等价的数据源控件,比如 RemoteData 控件,窗体上的被连结数据觉察控件不能自动访问数据。

语法:Data

说明:
可以使用 Data 控件来执行大部分数据访问操作,而根本不用编写代码。与 Data 控件相连结的数据觉察控件自动显示来自当前记录的一个或多个字段的数据,或者,在某些情况下,显示来自当前记录旁边的一个记录集合中的一个或者多个字段中的数据。Data 控件在当前记录上执行所有操作。

如果 Data 控件被指示移动到一个不同的记录,则所有被连结的控件自动把当前记录的任何改变传递给 Data 控件以保存在数据库中。Data 控件移动到被指定的记录,同时把当前记录中的数据传回被连结的控件,并在那里显示。

Data 控件自动处理一些意外事件包括空记录集,添加新记录,编辑和更新现有记录,处理某些类型的错误。然而,在更复杂的应用程序里,则需要捕获 Data 控件不能处理的某些错误类型。例如,当 Microsoft Jet 数据库引擎访问数据文件有问题、没有权限或不能按照代码执行查询时,会导致可捕获的错误。如果错误发生在应用过程开始之前或由于某些内部错误,Error 事件被触发。

被连结的控件
当与 Data 控件相连结时,DataList、 DataCombo、 DataGrid,和 MSHFlexGrid 控件都能管理记录集合。所有这些控件都允许一次显示或操作几个记录。

内部的 Picture、Label、TextBox、CheckBox、Image、OLE、ListBox 和 ComboBox 控件也是数据觉察的,能和由 Data 控件管理的 Recordset 的一个字段相连结。其它的数据觉察控件,如 MaskedEdit 和 RichTextBox 控件,可以在专业版和企业版中得到,也可以由第三方提供。

操作
一旦应用程序开始,Visual Basic 就用 Data 控件属性打开选定的数据库,创建 Database 对象和创建 Recorset 对象。Data 控件的 Database 和 Recordset 属性引用新创建的,可独立于 Data 控件操作的 Database 和 Recorset 对象— 带有或没有被连结的控件。Data 控件在其所在窗体的初始化 Form_Load 事件之前被初始化。在初始化阶段中发生任何错误都将导致一个不可捕获的错误。

当 Visual Basic 用 Jet Database 引擎创建一个 Recordset 时,其它的 Visual Basic 操作或事件只能等到该操作完成后才能发生。然而,在 Recordset 创建过程中允许其它基于 Windows 的应用程序继续执行。当 Jet 引擎创建 Recordset 时,按 CTRL+BREAK 键,操作将被终止,导致一个可捕获的错误,而 Data 控件的 Recordset 属性被设置成 Nothing。在设计时内,第二次按 CTRL+BREAK 键会使 Visual Basic 显示 Debug 窗口。

当使用 Data 控件创建 Recordset 对象或用代码创建 Recordset 对象并把它赋值给 Data 控件时,Microsoft Jet 数据库引擎会自动移居到 Recordset 对象上。其结果为,书签(对于快照类型的 Recordset 对象,记录集数据)被保存在局部内存中,用户不必操纵 Data 控件,也不必在代码中调用 MoveLast 方法。用于创建 Recordset 的页面锁也被释放得更快,以使其它的 Recordset 对象能访问相同的数据。在代码中创建但是没有赋值给 Data 控件的 Recordset 对象不能自动被 Jet 引擎移居。请通过代码移居这些对象。由于 Data 控件以后台方式移居它的 Recordset,所以附加的 Recordset 可能被创建。

可以用鼠标操纵 Data 控件,由一个记录移动到另一个记录或移动到 Recordset 的开始或结尾。EOFAction 和 BOFAction 属性决定了当用户使用鼠标移动到 Recordset 的开始或结尾时将发生的事情。不能将焦点置于 Data 控件上。

有效性检查
使用 Validate 事件和 DataChanged 属性对写入数据库的记录执行合法性检查。

数据访问对象
在过程中可以使用由 Data 控件创建的 Database 和 Recordset 数据访问对象。每个 Database 和 Recorset 对象都有自己的属性和方法,可以编写使用这些属性和方法的过程来操纵数据。

例如,Recorset 对象的 MoveNext 方法把当前记录移动到 Recordset 中的下一个记录。要调用这个方法,可以使用此代码:

Data1.Recordset.MoveNext

Data 控件能访问 Jet 引擎 3.0 版中三种 Recorset 对象的任何一种。如果不选择记录集类型,则 dynaset 型的 Recordset 被创建。

在许多情况下,创建的 Recorset 对象的缺省类型和配置效率不是很高。也就是说,可能不需要一个具有可更新的,支持全屏滚动的,keyset 类型的光标访问数据。例如,一个只读的,只能向前的,快照类型的 Recordset 创建起来可能比缺省光标快得多。就现有情况尽可能选择最有效的类型、Exclusive、Options 和 ReadOnly 属性。

注意 使用 Data 控件时用于决定 Recordset 类型的常数不同于用于确定的已创建的 Recorset 类型的或者用来以 OpenRecordset 方法创建 Recorset 对象的常数。

为选择特定的 Recordset 类型,把 Data 控件的 V 属性设成:
Recordset 类型 |值 |常数
表 0 vbRSTypeTable
Dynaset 1 (缺省)vbRSTypeDynaset
快照 2 vbRSTypeSnapshot

重点 Data 控件不能用于访问通过 dbForwardOnly 选项位设置创建的 Recorset 对象。

专业版和企业版
就数据访问而言,Visual Basic 的学习版、专业版和企业版间的主要差别是创建新数据访问对象的能力。在学习版中,不能在代码中声明(带有 Dim 关键字的)变量为数据访问对象。这意味着只有 Data 控件能创建 Database 和 Recorset 对象。

在专业版和企业版中,可以创建新的 Recordset 对象并把它赋值给 Data 控件的 Recordset 属性。任何和 Data 控件相连的被连结的控件允许在创建的 Recordset 中操纵记录。要保证被连结的控件的 DataField 属性赋值给在新的 Recordset 中合法的字段名。

存储的查询
当使用 Data 控件时,另外一个重要选项是执行存储的查询的能力。如果事先创建 QueryDef 对象,Data 控件能执行它并用 QueryDef 对象保存的 SQL、Connect 和其它属性创建 Recordset。为了执行 QueryDef,请把 Data 控件的 RecordSource 属性设置成 QueryDef 的名字并使用 Refresh 方法。

如果所保存的 QueryDef 包含参数,则需要建立 Recordset 并把它传递给 Data 控件。

BOF/EOF 处理
当遇到无记录的 Recordset 时,Data 控件也能处理所发生的情况。通过改变 EOFAction 属性,可以通过对 Data 控件编程以自动进入 AddNew 模式。

通过使用 Align 属性,能对 Data 控件编程以使它自动移动到它父窗体的顶部或底部。在任何一种情况下,当父窗体改变大小时,Data 控件水平地改变以大小适应父窗体的宽度。该属性允许 Data 控件放在 MDI 窗体中而不必包含 Picture 控件。

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

语法:DataCombo

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

发行注意 DataCombo 控件和 DataList 控件一起可以在文件 Msdatlst.ocx 中找到。要在应用程序中使用这一控件,必须把 .OCX 文件添加到工程中。当发行您的应用程序时,要把文件 Msdatlst.ocx 安装到用户的 Microsoft Windows System 或 System32 目录下。

DataGrid

显示并允许对Recordset对象中代表记录和字段的一系列行和列进行数据操纵。

语法:DataGrid

说明:
该数据识别的DataGrid控件看起来与Grid控件类似。但是,您可以设置DataGrid控件的DataSource属性为一个Data控件,以自动填充该控件并且从Data控件的Recordset对象自动设置其列标头。这个DataGrid控件实际上是一个固定的列集合,每一列的行数都是不确定的。

DataGrid 控件的每一个单元格都可以包含文本值,但不能链接或内嵌对象。可以在代码中指定当前单元格,或者用户可以使用鼠标或箭头键在运行时改变它。通过在单元格中键入或编程的方式,单元格可以交互地编辑。单元格能够被单独地选定或按照行来选定。

如果一个单元格的文本太长,以致于不能在单元格中全部显示,则文本将在同一单元格内折行到下一行。要显示折行的文本,必须增加单元格的Column对象的Width属性和/或DataGrid控件的RowHeight属性。在设计时,可以通过调节列来交互地改变列宽度,或在Column对象的属性页中改变列宽度。

使用DataGrid控件的Columns集合的Count属性和Recordset对象的RecordCount属性,可以决定控件中行和列的数目。DataGrid控件的可包含的行数取决于系统的资源,而列数最多可达32,767列。

选择一个单元格,则ColIndex属性被设置,也就是选择了DataGrid对象的Columns集合中的一个Column对象。Column对象的Text和Value属性引用当前单元格的内容。使用Bookmark属性能够访问当前行的数据,它能够提供对下一级Recordset对象中记录的访问。DataGrid控件中的每一列都有自己的字体、边框、自动换行、和另外一些与其他列无关的能够被设置的属性。在设计时,您可以设置列宽和行高,并且建立对用户不可见的列。您还能阻止用户在运行时改变格式。

注意 如果您在设计时设置了任何一个DataGrid列属性,就必须设置它的所有属性以保持当前的设置值。

注意 如果使用Move方法定位DataGrid控件,就必须使用Refresh方法强迫控件重画。

除了不能支持解除绑定模式以外,DataGrid控件的功能与DBGrid控件类似。

注意 该控件支持Unicode。当使用一个例如Microsoft Windows NT这样的支持Unicode的系统时,控件传递Unicode数据而无需转换。但是,在其他系统中,数据则被从ANSI转换到Unicode并转换回来。
 

DataList

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

语法:DataList

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

发行注意 DataList 控件和 DataCombo 控件一起可以在文件 Msdatlst.ocx 中找到。要在应用程序中使用这一控件,必须把 .OCX 文件添加到工程中。当发行您的应用程序时,要把文件 Msdatlst.ocx 安装到用户的 Microsoft Windows System 或 System32 目录下。

DataRepeater

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

语法:DataRepeater

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

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


在Properties 窗口中单击RepeatedControlName,然后在下拉列表中选择用户控件。
将数据源(例如 ADO Data Control)添加到窗体并同数据提供者连接。

将 DataRepeater 控件的 DataSource 属性设置为数据源。
在 DataRepeater 控件上单击右键,然后单击 DataRepeater Properties。
单击 RepeaterBindings 选项卡。

DateTimePicker

DateTimePicker控件使您可以提供格式化的日期字段,使得进行日期选择很容易。另外,用户还可以从类似于MonthView控件的下拉式日历界面中选择日期。

语法:DTPicker

说明:
DateTimePicker控件,有两种操作模式:
1:下拉式日历模式(缺省)—允许用户显示一种能够用来选择日期的下拉式日历。
2:时间格式模式—允许用户在日期显示中选择一个字段(例如:月、日、年等等),按下控件右边的上下箭头来设置它的值。
可以自定义控件的下拉式日历的外观。使用各种颜色属性,例如CalendarBackColor、CalendarForeColor、CalendarTitleBackColor、CalendarTitleForeColor和CalendarTrailingForeColor,允许创建属于您自己的颜色方案。

可以使用键盘或鼠标对控件进行浏览。下拉式日历有两个按钮使您能够滚动月份数据出入视图。

注意 DateTimePicker控件是ActiveX控件组的一部分,包含在 MSCOMCT2.OCX 文件中。要在应用程序中使用DateTimePicker控件,必须将 MSCOMCT2.OCX 文件加入到工程之中。发布您的应用程序时,要将 MSCOMCT2.OCX 文件装入到用户的Microsoft Windows System或System32目录下。

将 PropertyName 设置为适当的DataField,然后单击 Add 按钮。
DataRepeater 控件一次只显示一个用户控件(活动控件),从而节约了计算机资源。所显示的其他控件只是简单的图象,并不保持同数据源的个别连接,如同一个窗体中包含多个用户控件所发生的情况一样。

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

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 控件会自动强调显示列表中的某一项。

DirListBox:
在运行时,DirListBox 控件显示目录和路径。这个控件可以显示分层的目录列表。例如,可以创建对话框,在所有可用目录中,从文件列表打开一个文件。

语法:DirListBox

说明:
设置 List、ListCount 和 ListIndex 属性,就可以访问列表中的项目。如果需要显示 DriveListBox 和 FileListBox 控件,那么可以编写代码,使它们与 DirListBox 同步,并使它们之间彼此同步。

DirListBox:
在运行时,由于有 DriveListBox 控件,所以可选择一个有效的磁盘驱动器。该控件用来显示用户系统中所有有效磁盘驱动器的列表。可以创建对话框,通过它从任一可用驱动器的磁盘文件列表中打开文件。

语法:DriveListBox

说明:
设置 List、ListCount、和 ListIndex 属性,就可以访问列表中的项目。如果需要显示 DirListBox 和 FileListBox 控件,那么可以编写代码,使它们与 DriveListBox 控件同步,并使它们之间彼此同步。
 

 

我在这里学编程 索引篇共55页[1 2 >3< 4 5 6 7 »... 最后一页]