请教大家一个问题(关于supermap二次小开发的)
[ 2008-5-10 9:46:00 | By: coolwater ]
 

在实际操作的时候,我碰到的问题是,在supermap控件上无法画任何东西,希望有缘人路过,能给予指点,小弟在此谢过。我的想法是应该最后一块的编码有问题吧!

 

以下是具体的代码:

 

'操作说明:

'        1、新建数据源:默认创建名为TempDataSource的数据源

'        2、新建数据集:新建点、线、面、文本、CAD类型的数据集

'        3、绘制对象:绘制点、线、折线、面、文本、圆和圆弧对象

Dim objError As New soError

 

Private Sub Form_Load()

'LoadResStrings Me  '用以从资源 (.res) 文件装载字符串

    SuperMap1.Connect SuperWorkspace1.Handle

    SuperLegend1.Connect SuperMap1.Handle

    SuperWkspManager1.Connect SuperWorkspace1.Handle

End Sub

 

Private Sub Form_Unload(Cancel As Integer)

Set objError = Nothing

    SuperLegend1.Disconnect

    SuperWkspManager1.Disconnect

    SuperMap1.Close

    SuperMap1.Disconnect

    SuperWorkspace1.Close

End Sub

 

 

 

Private Sub mnuCreateCircle_Click()

SuperMap1.Action = scaEditCreateCircle

End Sub

 

Private Sub mnuCreateDataset_CAD_Click()

    Dim objDataset As soDataset

    Dim objDataSource As soDataSource

   

    Set objDataSource = SuperWorkspace1.Datasources(1)

    '创建复合数据集

    'Create CAD dataset

    Set objDataset = objDataSource.CreateDataset("Dataset_CAD", scdCAD, scoDefault)

    SuperWkspManager1.Refresh

   

    Set objDataset = Nothing

    Set objDataSource = Nothing

End Sub

 

Private Sub mnuCreateDataset_Line_Click()

    Dim objDataset As soDataset

    Dim objDataSource As soDataSource

   

    Set objDataSource = SuperWorkspace1.Datasources(1)

    '创建线数据集

    'Create line dataset

    Set objDataset = objDataSource.CreateDataset("Dataset_Line", scdLine, scoDefault)

    SuperWkspManager1.Refresh

   

    Set objDataset = Nothing

    Set objDataSource = Nothing

End Sub

 

Private Sub mnuCreateDataset_point_Click()

    Dim objDataset As soDataset

    Dim objDataSource As soDataSource

   

    Set objDataSource = SuperWorkspace1.Datasources(1)

    '创建点数据集

    'Create point dataset

    Set objDataset = objDataSource.CreateDataset("Dataset_Point", scdPoint, scoDefault)

    SuperWkspManager1.Refresh

   

    Set objDataset = Nothing

    Set objDataSource = Nothing

End Sub

 

 

Private Sub mnuCreateDataset_Region_Click()

    Dim objDataset As soDataset

    Dim objDataSource As soDataSource

   

    Set objDataSource = SuperWorkspace1.Datasources(1)

    '创建面数据集

    'Create region dataset

    Set objDataset = objDataSource.CreateDataset("Dataset_Region", scdRegion, scoDefault)

    SuperWkspManager1.Refresh

   

    Set objDataset = Nothing

    Set objDataSource = Nothing

End Sub

 

Private Sub mnuCreateDataset_Text_Click()

    Dim objDataset As soDataset

    Dim objDataSource As soDataSource

   

    Set objDataSource = SuperWorkspace1.Datasources(1)

    '创建文本数据集

    'Create text dataset

    Set objDataset = objDataSource.CreateDataset("Dataset_Text", scdText, scoDefault)

    SuperWkspManager1.Refresh

   

    Set objDataset = Nothing

    Set objDataSource = Nothing

End Sub

 

Private Sub mnuCreateDataSource_Click()

    Dim objDataSource As soDataSource

    Dim strDsName As String

 

    On Error GoTo ErrorHandle

   

    With dlgFileSave

        .FileName = "TempDataSource"

        .DialogTitle = "创建数据源"

        .Filter = "(*.sdb)|*.sdb"

        .InitDir = "F:\专业课题\supermap课题\vbsupermap"

        .CancelError = True

        .ShowSave

 

 

        If .FileName <> "" Then

            strDsName = .FileName

        Else

            Exit Sub

        End If

       

    End With

    '创建数据源

    'Create datasource

    Set objDataSource = SuperWorkspace1.CreateDataSource(strDsName, "TempDataSource", sceSDBPlus, False, False, False, "")

   

    If objDataSource Is Nothing Then

        MsgBox objError.LastErrorMsg, vbInformation

        Exit Sub

    End If

   

    SuperWkspManager1.Refresh

    mnuCreateDataSource.Enabled = False

   

    Set objDataSource = Nothing

   

    Exit Sub

ErrorHandle:

    'exit sub

End Sub

 

Private Sub mnuCreateEllipticArc_Click()

    '创建弧段

    'Create elliptic arc

    SuperMap1.Action = scaEditCreateEllipticArc

End Sub

 

Private Sub mnuCreateLinesect_Click()

    '创建直线

    'Create linesect

    SuperMap1.Action = scaEditCreateLinesect

End Sub

 

Private Sub mnuCreatePoint_Click()

SuperMap1.Action = scaEditCreatePoint

End Sub

 

 

 

Private Sub mnuCreatePolygan_Click()

    '创建多边形

    'Create Polygon

    SuperMap1.Action = scaEditCreatePolygon

End Sub

 

Private Sub mnuCreatePolyLine_Click()

    '创建折线

    SuperMap1.Action = scaEditCreatePolyline

End Sub

 

Private Sub mnuCreateText_Click()

    '创建注记

    'Create text

    SuperMap1.Action = scaEditCreateText

   

End Sub

 

Private Sub SuperLegend1_Modified()

SuperMap1.Refresh

End Sub

 

Private Sub SuperWkspManager1_LDbClick(ByVal nFlag As SuperWkspManagerLib.seSelectedItemFlag, ByVal strSelected As String, ByVal strParent As String)

    Dim objDataSource As soDataSource

    Dim objDataset As soDataset

    If nFlag = scsDataset Then

        Set objDataSource = SuperWorkspace1.Datasources(strParent)

        Set objDataset = objDataSource.Datasets(strSelected)

        SuperMap1.Layers.AddDataset objDataset, True '添加数据集到地图图层集合中

        SuperLegend1.Refresh

        SuperMap1.Refresh

    End If

    Set objDataset = Nothing

    Set objDataSource = Nothing

End Sub

 
 
  • 标签:专业学习 
  •  
    Re:请教大家一个问题(关于supermap二次小开发的)
    [ 2008-5-16 17:59:00 | By: coolwater ]
     
    coolwater通过几天耐心的研究,终于算是弄出能绘制图形的程序
    以下为我自己的解法:
    只需在最后一个模块增加如下几行代码
    Dim objLayers As soLayers
    Set objLayers = SuperMap1.Layers
    objLayers.SetEditableLayer 1
    Set objLayers = Nothing
     
     
    发表评论:
    正在读取数据,请稍侯
    正在读取数据,请稍侯

    时 间 记 忆
    正在读取数据,请稍侯

    专 题 分 类
    正在读取数据,请稍侯
    用 户 登 录
    正在读取数据,请稍侯

    最 新 评 论
    正在读取数据,请稍侯

    最 新 日 志
    正在读取数据,请稍侯

    最 新 留 言
    正在读取数据,请稍侯

    搜 索

    友 情 连 接
    博 客 信 息
    正在读取数据,请稍侯


     
         
       
    Powered by Oblog.