龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

ActiveX控件的创建(5)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
WriteProperty方法有三个参数:第一个字符串标识需要保存的属性,第二个参数是需要保存的值,最后的参数是属性的缺省值。 ReadProperty 方法需要两个参数:

   WriteProperty方法有三个参数:第一个字符串标识需要保存的属性,第二个参数是需要保存的值,最后的参数是属性的缺省值。

   ReadProperty 方法需要两个参数:一个字符串用来保存属性的名称,另一个为缺省值。

   在窗体上绘制ActiveX控件的那一刻,就会开始执行ActiveX控件的代码。在控件设计过程中,将DataServername、DataBaseName、AdministratorName、PasseordName属性的默认值设置为:

Const m_def_DataServerName = "lyc"
Const m_def_DataBaseName = "pubs"
Const m_def_AdministratorName = "sa"
Const m_def_PasswordName = ""

   当然,也可以在程序运行时多次修改它。控件的正常行为是当程序终止时恢复其默认值,这样增加了保持属性的两种独立状态的要求。

   简言之,如果在设计阶段改变了一个属性值,那么控件必须得到这个新值,而不是使用默认值。相反,如果在程序运行时改变属性值,那么当返回设计状态时,控件必须检索此属性值。

   PropertyBag对象允许ActiveX控件存贮有关它自己的属性值,使它能执行这个动作。PropertyChanged 方法会通知用户已经改变了一个属性。通过了解程序的状态以及是否调用了PropertyChanged方法,VB 就可以激发WriteProperties和ReadProperties事件。

◆为ShowDataBase方法编写代码

  ShowDataBase方法实现在ListView控件中显示Select命令所执行的数据库操作结果。在其具体实现过程中采用了 ADO(ActiveX Data Objects)的数据存取方法。ADO的主要特点是使用更加容易,访问速度更快,而对磁盘和存储容量的要求更小,ADO支持建立各种客户/服务器模式与基于Web的应用程序,具有远程数据服务RDS(Remote Data Service)的特性,通过RDS能够在一次往返中将服务器端的数据传送到客户端的应用程序或Web页面中,并在客户端对数据进行处理后,立即更新服务器端的数据。采用ADO所基于的OLE DB技术,可以对电子邮件、文本文件、数据表格等各类数据通过统一的接口API接口进行存取,是远程数据存取的一个主要发展方向。ShowDataBase方法具有一个字符串参数,但无任何返回值,具体代码如下所示:

Public Sub showdatabase(ssql As String)
Dim AdoDatabase As New ADODB.Connection
Dim AdoTable As New ADODB.Recordset
Dim scnn As String
Dim response As String
Dim I As Integer
On Error GoTo errorhandle
scnn = "Provider=SQLOLEDB;Data Source="
& Trim(m_DataServerName) & ";
Initial Catalog=" & Trim(m_DataBaseName) & ";
User Id=" & Trim(m_AdministratorName) & ";
Password=" & Trim(m_PasswordName) & ";"
AdoDatabase.Open scnn
AdoTable.CursorType = adOpenKeyset
AdoTable.LockType = adLockOptimistic
AdoTable.CursorLocation = adUseClient
AdoTable.Open ssql, AdoDatabase, , , adCmdText
If AdoTable.BOF And AdoTable.EOF Then
response = MsgBox("没有符合条件的记录!!",
vbOKOnly + vbInformation, "数据库控件")
AdoTable.Close
Set Adotable=Nothing
AdoDatabase.Close
Set AdoDataBase=Nothing
Exit Sub
End If
ListView1.ColumnHeaders.Clear
ListView1.ListItems.Clear
Dim clmX As ColumnHeader
For I = 0 To AdoTable.Fields.Count - 1
Set clmX = ListView1.ColumnHeaders.Add()

精彩图集

赞助商链接