热情软件屋

 

ActiveX控件的对象属性为什么没有出现在属性窗口中


编号:QA001782
建立日期: 1999年9月27日 最后修改日期:1999年9月27日
所属类别:

stupid_bird:
    vb6
    我在控件代码窗口中加入如下代码:
     Dim m_Connection As ADODB.Connection
     Public Property Get Connection() As ADODB.Connection
     Set Connection = m_Connection
     End Property
    
     Public Property Set Connection(ByVal New_Connection As ADODB.Connection)
     Set m_Connection = New_Connection
     PropertyChanged "Connection"
     End Property
    
     'Load property values from storage
     Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    
     Set m_Connection = PropBag.ReadProperty("Connection", Nothing)
     End Sub
    
     'Write property values to storage
     Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    
     Call PropBag.WriteProperty("Connection", m_Connection, Nothing)
     End Sub
    即:加入Connection属性,但在使用该控件时,该属性却没有显示在属性页中。我在procedure attribute中并没有将don't show in property browser选中。

回答:

    ADODB.Connection类型并不是ActiveX控件的标准类型,而属于对象类型, 如果一个对象属性出现在属性窗口中,则 Property Get函数在设计时必须返回一个字符串,这个字符串将出现在Visual Basic的属性窗口中。例如Picture属性可以返回"(None)"、"(Bitmap)"等字符串表示其状态。如:
    Public Property Get Connection() As Variant
     If Ambient.UserMode Then
     ' 按对象处理
     Else
     Connection = "......."
     End If
     .........
    End Property
    由于无法调用VB默认的Connection属性设置属性页,所以必须自行编写有关代码,这当然比较麻烦,所以建议实现ConnectionString属性。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio