等待回答
Grid1.DataSource = PropBag.ReadProperty("DataSource",null)
--- 此句error
set Grid1.DataSource = PropBag.ReadProperty("DataSource",null)'------------------------ DataSource SET BEGIN  -------------------------
'DataSource
Public Property Get DataSource() As Database
'一个限定为数据源的对象索引,
'包括 ADO Recordset 对象,以及类或定义为数据源的用户控件(DataSourceBehavior 属性 = vbDataSource).
'您不能在运行时将另一个控件或对象的 DataSource 属性设置为这两个控件之一。
    Set DataSource = Grid1.DataSource
End PropertyPublic Property Let DataSource(ByVal vNewDataSource As Database)
    Set Grid1.DataSource() = vNewDataSource
    PropertyChanged "DataSource"
End Property'-------------------------DataSource SET END  -------------------------
对象变量或with块变量未设置

解决方案 »

  1.   

    Object对象在VB的Ocx中无法作为属性。
    我以前也碰到过这个问题。
      

  2.   

    请转到 自制表格控件的问题
    http://www.csdn.net/expert/topic/898/898553.xml?temp=3.414333E-03
    开了新贴总分达209分
      

  3.   

    对于对象型的变量,要使用 Set 语句设置其属性,如下所示:Set Control.DataSource = ADODC1MSDN中提到:
        Data 控件和 RemoteData 控件,可以用做数据源,但不能在运行时将另一个控件或对象的 DataSource 属性设置为这两个控件之一。
        要将 Data 控件或 RemoteData 控件作为一个数据源使用,只能在设计时设置绑定控件的 DataSource 属性。因此,要完成你的功能就必须使用ADODC控件,与此相关的问题是,msFlexGrid不能绑定到ADODC,这又决定了你的控件中网格无法使用msFlexGrid,可以用MSHFlexGrid来替代。新建一个UserControl,填加一个MSHFlexGrid,并把下列代码拷贝到控件代码窗口中:
    Option ExplicitPrivate Sub UserControl_Resize()
        grd.Move 0, 0, UserControl.Width, UserControl.Height
    End SubPublic Property Get DataSource() As Variant
        Set DataSource = grd.DataSource
    End PropertyPublic Property Set DataSource(ByVal vNewValue As Variant)
        Set grd.DataSource = vNewValue
    End Property新建一个窗体,填加前面建立的控件和一个ADODC,以及一个按钮。
    在按钮中用Set给DataSource属性赋值。Private Sub Command1_Click()
        Set UserControl1.DataSource = Adodc1
    End Sub设置好ADODC的各项属性后,运行程序,点击按钮就可以见到控件已通过DataSource属性绑定到了ADODC。