使用GxDialog载入一个要素类或要素数据集

Posted by 蒋波涛 28 August,2006 Views (2)Comment

我书中提供的例子仅仅是载入一个要素类到一个地图中,这个函数可以载入一个单独要素类或一个数据集中的全部要素类,包括AnnotationClass。

代码如下:
Public Function openDataSet(ByVal pMap As IMap) As Boolean
    'On Error GoTo errH
    Dim pGxDialog As IGxDialog
    Set pGxDialog = New GxDialog
    pGxDialog.AllowMultiSelect = True
    pGxDialog.Title = "选择要素数据集"
    pGxDialog.ButtonCaption = "添加"
   
    Dim pGxFilter As IGxObjectFilter
    Set pGxFilter = New GxFilterFeatureDatasetsAndFeatureClasses
    Set pGxDialog.ObjectFilter = pGxFilter
   
    Dim pGxObjects As IEnumGxObject
    pGxDialog.DoModalOpen 0, pGxObjects
   
    If pGxObjects Is Nothing Then
        MsgBox "没有添加数据"
        Exit Function
    End If
    pGxObjects.Reset

    Dim pFeatLyr As IFeatureLayer
    Dim pGxDataset As IGxDataset
    Set pGxDataset = pGxObjects.Next
   
    Do Until pGxDataset Is Nothing
        If TypeOf pGxDataset.Dataset Is IFeatureClass Then
            Dim pFC As IFeatureClass
            Set pFC = pGxDataset.Dataset
           
            If pFC.FeatureType = esriFTAnnotation Then
                Set pFeatLyr = New FDOGraphicsLayer
            Else
               Set pFeatLyr = New FeatureLayer
            End If
           
            Set pFeatLyr.FeatureClass = pGxDataset.Dataset
            pFeatLyr.Name = pFeatLyr.FeatureClass.AliasName
           
            pMap.AddLayer pFeatLyr
        ElseIf TypeOf pGxDataset.Dataset Is IFeatureDataset Then
            Dim pEnumDataset As IEnumDataset
            Set pEnumDataset = pGxDataset.Dataset.Subsets
            pEnumDataset.Reset

            Dim pDataSet As IDataset
            Set pDataSet = pEnumDataset.Next
            Do While Not pDataSet Is Nothing
                Set pFC = pDataSet
                '如果载入的要素类为标注要素类,则产生特殊图层
                If pFC.FeatureType = esriFTAnnotation Then
                    Set pFeatLyr = New FDOGraphicsLayer
                Else
                    Set pFeatLyr = New FeatureLayer
                End If
               
                Set pFeatLyr.FeatureClass = pFC
                pFeatLyr.Name = pFC.AliasName
               
                Debug.Print pFeatLyr.Name
                pMap.AddLayer pFeatLyr
               
                Set pFeatLyr = Nothing
                Set pDataSet = pEnumDataset.Next
            Loop
        End If

        Set pGxDataset = pGxObjects.Next
    Loop
   
    openDataSet = True
errh:
    'openDataSet = False
    'MsgBox "打开图层发生错误,错误原因:" & vbCrLf & Err.Description
End Function

Related Items

Categories : ArcObjects Tags : ArcObjects  
Comments
2008-6-28 10:54:15

请问在AE中想要实现gxdialog相似的功能,比如选择性的读取access里的feature class,有什么思路吗?

Posted by ae Gravatar Icon

2008-6-28 23:38:06

如果你使用的是AE,你无需自己编写了,直接使用ControlsAddDataCommandClass类即可。我在新书中有详细的介绍。

Posted by 蒋波涛 Gravatar Icon

Leave a comment

Or, take a look at Archives and Categories

目录

存档