⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmain.frm

📁 都是基于VB所做的程序集合,值得大家作为实践的参考资料.
💻 FRM
字号:
VERSION 5.00
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "Comdlg32.ocx"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Object = "{03ED3B1E-ED1B-4A2E-8FE3-D8D1A673F5D4}#5.2#0"; "SuperMap.ocx"
Begin VB.Form frmMain 
   BorderStyle     =   3  'Fixed Dialog
   Caption         =   "属性查询"
   ClientHeight    =   6225
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   9135
   Icon            =   "frmMain.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   6225
   ScaleWidth      =   9135
   StartUpPosition =   2  'CenterScreen
   Begin SuperMapLib.SuperMap SuperMap1 
      Height          =   5625
      Left            =   60
      TabIndex        =   11
      Top             =   555
      Width           =   6315
      _Version        =   327682
      _ExtentX        =   11139
      _ExtentY        =   9922
      _StockProps     =   160
      Appearance      =   1
   End
   Begin SuperMapLib.SuperWorkspace SuperWorkspace1 
      Left            =   4740
      Top             =   1500
      _Version        =   327682
      _ExtentX        =   847
      _ExtentY        =   847
      _StockProps     =   0
   End
   Begin MSComDlg.CommonDialog CommonDialog1 
      Left            =   6135
      Top             =   5640
      _ExtentX        =   847
      _ExtentY        =   847
      _Version        =   393216
   End
   Begin VB.ComboBox cmbLayer 
      Height          =   315
      Left            =   7320
      Style           =   2  'Dropdown List
      TabIndex        =   9
      Top             =   555
      Width           =   1755
   End
   Begin VB.CommandButton btnViwEntire 
      Caption         =   "全幅显示"
      Height          =   465
      Left            =   6795
      TabIndex        =   8
      Top             =   30
      Width           =   1125
   End
   Begin VB.CommandButton btnZoomFree 
      Caption         =   "自由缩放"
      Height          =   465
      Left            =   5670
      TabIndex        =   7
      Top             =   30
      Width           =   1125
   End
   Begin VB.CommandButton btnSelect 
      Caption         =   "选择"
      Height          =   465
      Left            =   45
      TabIndex        =   6
      Top             =   30
      Width           =   1125
   End
   Begin MSComctlLib.ListView lvwPro 
      Height          =   5205
      Left            =   6405
      TabIndex        =   5
      Top             =   975
      Width           =   2685
      _ExtentX        =   4736
      _ExtentY        =   9181
      View            =   3
      LabelEdit       =   1
      LabelWrap       =   -1  'True
      HideSelection   =   0   'False
      GridLines       =   -1  'True
      _Version        =   393217
      ForeColor       =   -2147483640
      BackColor       =   -2147483643
      BorderStyle     =   1
      Appearance      =   1
      NumItems        =   2
      BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
         Text            =   "字段名"
         Object.Width           =   2117
      EndProperty
      BeginProperty ColumnHeader(2) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
         SubItemIndex    =   1
         Text            =   "字段值"
         Object.Width           =   2540
      EndProperty
   End
   Begin VB.CommandButton cmdOption 
      Caption         =   "最后一个"
      Height          =   465
      Index           =   4
      Left            =   4545
      TabIndex        =   4
      Top             =   30
      Width           =   1125
   End
   Begin VB.CommandButton cmdOption 
      Caption         =   "下一个"
      Height          =   465
      Index           =   3
      Left            =   3420
      TabIndex        =   3
      Top             =   30
      Width           =   1125
   End
   Begin VB.CommandButton cmdOption 
      Caption         =   "上一个"
      Height          =   465
      Index           =   2
      Left            =   2310
      TabIndex        =   2
      Top             =   30
      Width           =   1125
   End
   Begin VB.CommandButton cmdOption 
      Caption         =   "第一个"
      Height          =   465
      Index           =   1
      Left            =   1170
      TabIndex        =   1
      Top             =   30
      Width           =   1125
   End
   Begin VB.CommandButton cmdOption 
      Caption         =   "关闭"
      Height          =   465
      Index           =   0
      Left            =   7920
      TabIndex        =   0
      Top             =   30
      Width           =   1125
   End
   Begin VB.Label Label1 
      Caption         =   "当前图层"
      Height          =   240
      Left            =   6435
      TabIndex        =   10
      Top             =   615
      Width           =   870
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'=====================================SuperMap Objects示范工程说明=======================================
'
'功能简介:点选查询对象的属性和查询指定图层每个对象的属性
'所用控件:SuperMap控件和SuperWorkspace控件
'所用数据:..\Data\World\下的World.sdb和World.sdd
'操作说明:
'         1、单击"选择"按钮,在地图窗口中选择一个对象,可以查询它的所有属性。
'         2、单击"第一个"、"上一个"、"下一个"、"最后一个"等按钮,可以依次浏览"当前图层"中的每一个对象的属性。
'
'===================================SuperMap Objects 示范工程说明结束=====================================

Dim objLayerMove As soLayer
Dim objDataMove As soDatasetVector
Dim objRecMove As soRecordset
Dim iRec As Integer
 
Private Sub RecChange(objdata As soDatasetVector, objRechage As soRecordset)
    If objRechage Is Nothing Or objRechage.RecordCount < 1 Then
        Exit Sub
    End If
    
    lvwPro.ListItems.Clear
    Dim fldNumber As Integer
    For fldNumber = 1 To objRechage.FieldCount
        lvwPro.ListItems.Add , , objRechage.GetFieldInfo(fldNumber).Name
        If IsNull(objRechage.GetFieldValue(fldNumber)) = False Then
            lvwPro.ListItems(lvwPro.ListItems.Count).SubItems(1) = objRechage.GetFieldValue(fldNumber)
        End If
    Next fldNumber
End Sub

Private Sub btnSelect_Click()
    SuperMap1.Action = scaSelect
End Sub

Private Sub btnViwEntire_Click()
    SuperMap1.ViewEntire
End Sub

Private Sub btnZoomFree_Click()
    SuperMap1.Action = scaZoomFree
End Sub

Private Sub cmbLayer_Click()
    Dim objdata As soDatasetVector
    Set objLayerMove = SuperMap1.Layers(cmbLayer.Text)
    If objLayerMove Is Nothing Then Exit Sub
    Set objdata = objLayerMove.Dataset
    Set objRecMove = objdata.Query("", True)
    objRecMove.MoveFirst
    cmdOption(2).Enabled = False
    If objRecMove.RecordCount <= 1 Then
        cmdOption(3).Enabled = False
    Else
        cmdOption(3).Enabled = True
    End If
    iRec = 1
End Sub

'切换当前所选择图层数据集的记录
Private Sub cmdOption_Click(Index As Integer)
    Dim objlayer As soLayer
    Dim objDataset As soDatasetVector
     
    If Index = 0 Then
        Unload Me
    End If
      
    If objRecMove Is Nothing Then Exit Sub
    
    If iRec <= 1 Then
        cmdOption(2).Enabled = False     '不可以movepreview操作
    Else
        cmdOption(2).Enabled = True      '可以Movepreview操作
    End If
    If iRec >= objRecMove.RecordCount Then
        cmdOption(3).Enabled = False        '不可以Movenext操作
    Else
        cmdOption(3).Enabled = True         '可以MoveNext操作
    End If
      
      
    '移动记录
    Select Case Index
        Case 1
            objRecMove.MoveFirst            '第一条记录
            iRec = 1
        Case 2
            objRecMove.MovePrev             '上一条记录
            iRec = iRec - 1
        Case 3
            objRecMove.MoveNext             '下一条记录
            iRec = iRec + 1
        Case 4
             objRecMove.MoveLast            '最后一条记录
             iRec = objRecMove.RecordCount
    End Select
      
    '让当前记录高亮显示在SuperMap窗口
    
    Set objlayer = SuperMap1.Layers(cmbLayer.List(cmbLayer.ListIndex))
    If objlayer Is Nothing Then Exit Sub
    
    Set objDataset = objlayer.Dataset
    
    Set SuperMap1.selection.Dataset = objDataset
    SuperMap1.selection.RemoveAll
    SuperMap1.selection.Add objRecMove.GetID

    '居中显示当前记录的对象
    Dim Obj As soGeometry
    Set Obj = objRecMove.GetGeometry()
    If Not Obj Is Nothing Then
        SuperMap1.EnsureVisibleGeometry Obj, 1
    End If
    SuperMap1.Refresh
    
  
    If iRec <= 1 Then
        cmdOption(2).Enabled = False
    Else
        cmdOption(2).Enabled = True
    End If
    If iRec >= objRecMove.RecordCount Then
        cmdOption(3).Enabled = False
    Else
        cmdOption(3).Enabled = True
    End If
    
    RecChange objDataMove, objRecMove
      
End Sub

Private Sub Form_Load()
    Dim strAlias As String            '数据源别名
    Dim nEngineType As seEngineType   '数据引擎类型
    Dim strDataSourceName As String   '数据源绝对路径名
    Dim objDataSource As soDataSource '数据源对象,指向打开的数据源
    Dim objDataset As soDataset
    Dim bReadOnly As Boolean          '数据源里的数据是否只读
    Dim objlayer As soLayer           '图层对象变量,指向将要打开的图层
    Dim bAddToHead As Boolean         '是否加到最上面
    Dim i As Integer                  '循环变量
    
    SuperMap1.Connect SuperWorkspace1.Object
    SuperMap1.MarginPanEnable = False
    
    strAlias = "World"                '原则上别名可以任意给,建议取成和数据源文件主名
    nEngineType = sceSDBPlus          'SuperMap支持多种类型,此处为SDBPlus类型
    
    strDataSourceName = App.Path & "\..\Data\World\World.sdb"
    strAlias = "world"
    bReadOnly = True
    
    '打开数据源
    Set objDataSource = SuperWorkspace1.OpenDataSource(strDataSourceName, strAlias, nEngineType, bReadOnly)
    If objDataSource Is Nothing Then
        MsgBox "打开数据源失败!", vbInformation
    Else
        '把数据源中的所有图层加入到SuperMap中
        bAddToHead = True
        Set objDataset = objDataSource.Datasets.Item("ocean")
        If Not objDataset Is Nothing Then
            Set objlayer = SuperMap1.Layers.AddDataset(objDataset, bAddToHead)
            cmbLayer.AddItem objlayer.Name
        End If
        Set objDataset = objDataSource.Datasets.Item("grid")
        If Not objDataset Is Nothing Then
            Set objlayer = SuperMap1.Layers.AddDataset(objDataset, bAddToHead)
            cmbLayer.AddItem objlayer.Name
        End If
        Set objDataset = objDataSource.Datasets.Item("world")
        If Not objDataset Is Nothing Then
            Set objlayer = SuperMap1.Layers.AddDataset(objDataset, bAddToHead)
            cmbLayer.AddItem objlayer.Name
        End If
    End If
    
    If SuperMap1.Layers.Count <= 0 Then Exit Sub
    cmbLayer.ListIndex = 0
    
    '刷新地图窗口
    SuperMap1.Refresh
    '释放内存
    Set objDataSource = Nothing
    Set objlayer = Nothing
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set objRecMove = Nothing
    Set objLayerMove = Nothing
    Set objDataMove = Nothing
    SuperMap1.Close
    SuperMap1.Disconnect
    SuperWorkspace1.Close
End Sub
  
Private Sub SuperMap1_GeometrySelected(ByVal nSelectedGeometryCount As Long)
    Dim objRec As soRecordset
    
    Set objRec = SuperMap1.selection.ToRecordset(False)    '将选择集转换为记录集
    If objRec Is Nothing Then
        lvwPro.ListItems.Clear
        cmbLayer.ListIndex = -1
        Exit Sub
    End If
      
    objRec.MoveFirst
    lvwPro.ListItems.Clear
    cmbLayer.ListIndex = -1
    cmbLayer.Text = SuperMap1.selection.Dataset.Name + "@" + SuperMap1.selection.Dataset.DataSourceAlias
    
    Dim recFieldN As Integer
    
    For recFieldN = 1 To objRec.FieldCount
        lvwPro.ListItems.Add , , objRec.GetFieldInfo(recFieldN).Name
        If Not IsNull(objRec.GetFieldValue(recFieldN)) Then
            lvwPro.ListItems(lvwPro.ListItems.Count).SubItems(1) = objRec.GetFieldValue(recFieldN)
        End If
    Next recFieldN
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -