|
DataChanged:
返回或设置一个值,它指出被绑定的控件中的数据已被某进程改变,这个进程不是从当前记录中检索数据的进程。该在设计时不可用。
语法:
object.DataChanged [= value]
value 如“设置值”中所述,一个用于指示数据是否被改变的布尔表达式。
value 的设置值为:
True 当前在控件中的数据与当前记录中的数据不同。
False (缺省设置)如果当前控件中有数据的话,则与当前记录中的数据相同。
说明:
当 data
控件从一个记录移动到另一个记录时,它将数据从当前记录中的字段传递到连结在特定字段上或整个记录上的控件。当数据在被绑定的控件中显示时,DataChanged
属性设置为 False。如果用户或其它操作改变了被绑定的控件中的值,则 DataChanged 属性被设置为
True。只移动到另一个记录并不影响 DataChanged 属性的值。
当 data 控件开始移动到一个不同记录时,Validate 事件将发生。如果任何被绑定的控件的 DataChanged
属性均为 True,则 data 控件自动地调用 Edit 和 Update 方法将改变内容发送到数据库中。
如果不希望被绑定的控件将改变的内容保存在数据库中,则可以在 Validate 事件中将 DataChanged 属性设置为
False。
检查控件的 Change 事件代码中 DataChanged
属性的值,以避免层叠事件发生。将这一点应用到被连结的和未被绑定的控件上。
数据类型 Integer (Boolean)
DataField:
返回或设置数据使用者将被绑定到的字段名。
语法:
object.DataField [= string]
string 对Recordset对象中某字段名称进行计算的字符串表达式,该 Recordset 对象由 data source指定。
说明:
被绑定的控件提供了对数据库中特定数据的访问功能。管理单个字段的被绑定的控件一般显示当前记录中某特定字段的值。被绑定的控件的 DataSource
属性指定一个合法的数据源,DataField 属性则指定一个在数据源所创建的 Recordset
对象中的合法的字段名称。这些属性一起说明哪些数据出现在该被绑定的控件中。
当使用 QueryDef 对象或返回表达式结果的 SQL 语句时,该字段名称由 Microsoft Jet 数据库引擎自动产生。例如,当编为 SQL 集合函数或
SQL 查询中表达式的代码时,该字段被自动产生,除非使用了 AS 子句为集合字段指定别名。一般来说,此表达式字段名称为 Expr1,后跟一个从 000
开始的三个字符的数字。第一个返回的表达式将被命名为 Expr1000。
建议按照以下所示来编制 SQL 查询的代码,指定表达式列的别名:
Adodc1.RecordSource = "Select AVG(Sales) " _
& " AS AverageSales From SalesTable"
Text1.DataField = "AverageSales"
Adodc1.Refresh
注意 请保证设置的 DataField 属性对每个被绑定的控件都是合法的。如果改变 data 控件的 RecordSource 属性的设置,然后再使用
Refresh,则 Recordset 将标识该新对象。这可能会使被绑定的控件的 DataField 设置失效,并产生一个可以捕获的错误。
DataFormat:
设置或返回StdDataFormat对象,一个绑定对象将附加到它。在设计时或运行时都可读写。
语法:
object.DataFormat = formatobject
formatobject 必需的。一个StdDataFormat对象。
说明:
DataFormat属性也能通过属性窗口的属性页设置。如果代码中的设置值与属性页的设置值不一样,那么属性页的设置值将应用于第一个取到的记录,之后,将使用代码中的设置值。
DataCombo
DataCombo 控件的 DataFormat 属性是 Extender 属性。因此在属性单上它总是可见的并且能在代码中设置。然而 DataCombo
控件仅仅格式化列表顶部的项。对于看到一个顶端项格式化、而仅给出一个未格式化项的列表供选择的终端用户来说,这可能是令人不安的。格式化的项也可能误导用户,使他认为项要以格式化的形式输入数据库。由于这些原因,建议在使用
DataCombo 控件时不要设置DataFormat 属性。
DataMember
DataMember:
从数据供应程序提供的几个数据成员中返回或设置一个特定的数据成员。
语法:
object.DataMember [= string]
object 必需的。一个对象表达式,其值为“应用于”列表中的一个对象。
string 数据成员名。
说明:
数据供应程序可以有多组数据供数据使用者选择以绑定到其上。每组数据都称作“数据成员”,并且用一个唯一的字符串标识。
例如,当使用包含多个Command对象的Data Environment作为一个DataSource时,DataMember将指定使用哪一个Command对象。
当使用一个类模块或一个用户控件作为数据源时,编程GetDataMember事件返回一个合适的数据成员。该事件的DataMember参数包含DataMember属性的值。通过查询该参数,可以决定需要什么数据成员,并且通过Data参数传回合适的数据。
例:
本例使用一个类模块作为数据源。当有关设置两个Binding对象的DataSource和DataMember属性的代码执行时,该类模块的Initialize事件发生;两个ADO记录集将在该事件中被创建,并且记录集的名称被添加到DataMembers集合中。GetDataMember事件和它的参数用来返回数据给数据使用者。
要试验本例,在“工程”菜单中单击“引用...”,并设置对Microsoft Data Binding Collection和Microsoft ActiveX
Data Objects的引用。在“工程”菜单上单击Add Class Module。把类名更改为MyDataClass,并且设置DataSourceBehavior属性为vbDataSource。然后,在窗体上绘制两个TextBox控件,将下列代码粘贴到Form对象的代码模块中。
Option Explicit
' 声明对象变量,一个是名为MyDataClass的类模块,
' 另外两个是BindingCollection对象,
' 每个记录集一个。
Private clsData As New MyDataClass ' 类模块。
Private bndColProducts As New BindingCollection ' 绑定集合。
Private bndColSuppliers As New BindingCollection ' 绑定集合。
Private Sub Form_Load()
' 为每个绑定集合对象设置DataSource和DataMember属性。
With bndColProducts
.DataMember = "Products"
Set .DataSource = clsData
.Add Text1, "Text", "ProductName" ' 绑定到一个TextBox。
End With
With bndColSuppliers
.DataMember = "Suppliers"
Set .DataSource = clsData
.Add Text2, "Text", "CompanyName" ' 绑定到一个TextBox。
End With
' 更改Command1的标题
Command1.Caption = "MoveNext"
End Sub
Private Sub Command1_Click()
clsData.MoveNext
End Sub
把下面的代码粘贴到MyDataClass模块。为了看到GetDataMember事件,必须把DataSourceBehavior属性设置为vbDataSource。运行该工程。
Option Explicit
' 为ADO Recordset和Connection对象声明对象变量。
Private WithEvents rsProducts As ADODB.Recordset
Private WithEvents rsSuppliers As ADODB.Recordset
Private cnNwind As ADODB.Connection
Private Sub Class_Initialize()
' 添加字符串到DataMembers集合。
With DataMembers
.Add "Products"
.Add "Suppliers"
End With
' 设置Recordset对象。
Set rsProducts = New ADODB.Recordset
Set rsSuppliers = New ADODB.Recordset
Set cnNwind = New ADODB.Connection
' 设置Connection对象的参数。
With cnNwind
' 随Visual Basic发行的Nwind.mdb必须安装到
' 计算机上,否则本代码将失败。另外,改变路径
' 以找到计算机中的该文件。
.Provider = "Microsoft.Jet.OLEDB.3.51"
.Open "C:\Program Files\DevStudio\VB\Nwind.mdb"
End With
' 打开recordset对象。
rsSuppliers.Open "SELECT * FROM Suppliers", cnNwind, _
adOpenStatic, adLockOptimistic
rsProducts.Open "SELECT * FROM Products", cnNwind, _
adOpenStatic, adLockOptimistic
End Sub
' 当一个数据使用者的DataSource属性设置时,GetDataMember发生。
' 在这种情况下,绑定的集合对象是该使用者。
Private Sub Class_GetDataMember(DataMember As String, Data As Object)
Select Case DataMember
Case "Products"
Set Data = rsProducts
Case "Suppliers"
Set Data = rsSuppliers
Case ""
' 当没有指定数据成员时提供一个缺省的记录源。
Set Data = rsProducts
End Select
End Sub
Public Function MoveNext()
If rsProducts.EOF Then
rsProducts.MoveFirst
Else
rsProducts.MoveNext
End If
End Function
Private Sub rsProducts_MoveComplete(ByVal adReason As _
ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As _
ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
' 保持两个记录集同步。第一个文本框显示
' 该产品的供货商。如果两个记录集的SupplierID
' 是相等的,则不需要更改。否则,
' 移到第一条记录,并且测试SupplierID。
' 本例只供演示,因为它并不是最有效的。
If rsSuppliers("SupplierID").Value = _
pRecordset("SupplierID").Value Then Exit Sub
rsSuppliers.MoveFirst
Do While Not rsSuppliers.EOF
If rsSuppliers("SupplierID").Value = _
pRecordset("SupplierID").Value Then
Exit Sub
Else
rsSuppliers.MoveNext
End If
Loop
End Sub
DisabledPicture
返回或设置一个对图片的引用,该图片在控件无效时显示在控件中。(也就是说,当控件 Enabled 属性被设置为 False 时。)
语法:
object.DisabledPicture [= picture]
picture 一个包含图形的 Picture 对象,“设置值”中有详细的描述。
picture 的设置值为:
(None) (缺省) 没有图片。
(Bitmap, icon, metafile) 指定一个图形。在设计时可以从
属性窗口加载该图形。在运行时,也可以通过在一个位图、图标 或元文件上使用LoadPicture
函数,或通过将其设置到另一个控件的 Picture 属性上来设置这个属性。
说明:
DisabledPicture 属性指定一个图片对象在控件(如CommandButton)无效时显示。除非控件的 Style
属性设置为 1(图形的),否则 DisabledPicture 属性将被忽略。
图片在控件上位于水平和垂直位置的中央。如果与图片一起使用标题,那么图片将位于标题上面的中央处。如果图片对象太大而与控件不相适合,那么将被裁剪一部分。
如果没有图片赋值给 DisabledPicture 属性,而有一个图片赋值给 Picture
属性,那么在控件无效时将显示该图片的灰色形式。
DownPicture
返回或设置一个对图片的引用,该图片在控件被单击并处于压下状态时显示在控件中。
语法:
object.DownPicture [= picture]
picture 一个包含图形的 Picture 对象,“设置值”中有详细的描述。
picture 的设置值为:
(None) (缺省)没有图片。
(Bitmap, icon, metafile) 指定一个图形。在设计时可以从
属性窗口加载该图形。在运行时,也可以通过在位图、图标或元文件上使用LoadPicture 函数,或通过将其设置到别的
Picture 属性上来设置这个属性。
说明:
DownPicture 属性指的是按钮处于被压下状态时显示的一个图片对象。除非控件的 Style 属性设置为 1(图形的),否则
DownPicture 属性将被忽略。值得注意的是,当 OptionButton 或 CheckBox 控件的 Style
属性被设置为图形方式并且其按钮被压下时,该按钮的背景将是抖动的,但按钮上的图片却不这样。
图片在控件上位于水平和垂直位置的中央。如果与图片一起使用标题,那么图片将位于标题上面的中央处。如果在按钮被压下时没有图片赋值给
DownPicture 属性,那么将显示当前被赋值给 Picture 属性的图片。如果既没有图片赋值给 Picture
属性也没有图片赋值给 DownPicture 属性,则只显示标题。如果图片对象太大而超出按钮边框,那么它将被裁剪一部分。
DataSource:
返回或设置一个数据源,通过该数据源,数据使用者被绑定到一个数据库。
语法:
object.DataSource [=datasource]
datasource 一个对象引用,作为一个数据源限定。包括ADO Recordset 对象,以及定义为类或用户控件(DataSourceBehavior 属性
= vbDataSource)。
说明:
使用 Set 语句设置 DataSource,如下所示:
Set Text1.DataSource = ADODC1
注意 两个旧的控件,Data 控件和 RemoteData 控件,可以作为数据源使用,然而,您不能在运行时将另一个控件或对象的DataSource
属性设置为这两个控件之一。例如,下列代码将会失败:
Set Text1.DataSource = Data1 ' 将会失败!您不能在运行时将DataSource
' 设置为一个内部 Data 控件。
要将 Data 控件或 RemoteData 控件之一作为数据源使用,您只能在设计时设置绑定控件的 DataSource 属性。
DragIcon:
返回或设置图标,它将在拖放操作中作为指针显示。
语法:
object.DragIcon [= icon]
Icon 任何返回图标的程序引用,例如引用窗体图标 (Form1.Icon),引用另外控件的 DragIcon 属性 (Text1.DragIcon),或是
LoadPicture 函数。
icon 的设置值如下:
(none) (缺省值)矩形框内的箭头指针。
Icon 自定义的鼠标指针。在设计时用属性窗口设置图标。运行时可以用 LoadPicture 函数。所加载的文件必须有 .ico 文件扩展名和格式。
说明:
在拖放操作中,用 DragIcon 属性可以提供可见的信息反馈─例如,它可以指定原控件在一个适当的目标之上。DragIcon
属性在用户开始拖放操作时起作用。典型做法是把 DragIcon 设置为 MouseDown 或 DragOver 事件过程的一部分。
注意 运行时,DragIcon 属性可以设置为任何对象的 DragIcon 或 Icon 属性,或者可以用 LoadPicture 函数返回的图标给它赋值。
在运行中,把一个控件的 Picture 属性值赋给另一个控件的 DragIcon 属性时, Picture 属性必须包含一个 .ico 文件,而不是 .bmp
文件。
DragMode:
返回或设置一个值,确定在拖放操作中所用的是手动还是自动拖动方式。
语法:
object.DragMode [= number]
object 对象表达式,其值是“应用于”列表中的一个对象。
Number 整数,指定拖动方式,“设置值”中有详细描述。
number 的设置值如下:
VbManual 0 (缺省值)手动方式- 需要在源控件中用 Drag 方法来启动拖放操作。
VbAutomatic 1 自动方式 - 单击源控件自动启动拖放操作。 只有在 OLE 容器控件没有焦点时,它才能自动地被拖动。
说明:
当 DragMode 属性设置为 1(自动方式)时,控件不能正常响应鼠标事件。可以用方式
0(手动方式)来确定拖放操作何时开始或何时结束;用该设置值可以启动一个拖放操作以响应键盘或菜单命令,或允许源控件在拖放操作之前识别 MouseDown 事件。
在拖放操作过程中,当鼠标器指针在一个目标对象或窗体上时,单击鼠标会对目标对象产生 DragDrop 事件。这将终止拖放操作。拖放操作也可能产生 DragOver
事件。
注意 当拖动控件时,该控件不能识别用户发出的其它鼠标或键盘事件(KeyDown、KeyPress 或 KeyUp,MouseDown、MouseMove 或
MouseUp)。但是,控件可以接收程序或 DDE 链接启动的事件。
|