對表操作
(1) 新建表
Option Explicit
Dim FileSpec As String
Dim csys As MapXLib.CoordSys
Private Sub Command1_Click()
On Error Resume Next
CM1.DialogTitle = "保存表文件"
CM1.DefaultExt = "表文件|*.tab"
CM1.Filter = "表(*.tab)|*.tab"
CM1.CancelError = True
CM1.Action = 2
If Err.Number = 32755 Then Exit Sub
FileSpec = CM1.filename
End Sub
Private Sub Command2_Click()
Dim ctype As Integer
Dim cunits As Integer
Formmain.Map1.NumericCoordSys.PickCoordSys
Set csys = Formmain.Map1.NumericCoordSys
ctype = csys.Type
cunits = csys.Units
'Set Formmain.Map1.Bounds = rect
' If csys.Type = 0 Then
'FrmRange.Show 1
'rect的左下角不能為(0,0)
'csys.Set ctype, , cunits, , , , , , , , , , rect
'End If
End Sub
Private Sub Command3_Click()
Dim LayerName As String
Dim FeatureNameLen As Integer
Dim LayerPos As Integer
Dim LayerInfo As MapXLib.LayerInfo
Dim retn As Integer
On Error GoTo ErrorHand
LayerName = Text1.Text
FeatureNameLen = Val(Text2.Text)
LayerPos = Val(Text3.Text)
If FeatureNameLen <= 0 Then MsgBox "請輸入大于0的數(shù)字!", , "警告"
If LayerPos <= 0 Then MsgBox "請輸入大于0的數(shù)字!", , "警告"
Formmain.Map1.Layers.CreateLayer LayerName, FileSpec, LayerPos, FeatureNameLen, csys
'將新建圖層加入到數(shù)據(jù)字典和數(shù)據(jù)集
'If Option_AddToGeoDict = True Then
'LayerInfo.Type = miLayerInfoTypeGeodictUserName
'LayerInfo.AddParameter "Name", Text1.Text
'If Option_AddToDataset = True Then
'LayerInfo.AddParameter "AutoCreate", 1
'LayerInfo.AddParameter "DatasetName", Text1.Text
'End If
'Formmain.Map1.Layers.Add LayerInfo
'End If
'ChangeCombo
Unload Me
ErrorHand:
Select Case Err.Number
Case 1230
retn = MsgBox("是否覆蓋?", 4, "錯誤提示")
If retn = 6 Then
Kill FileSpec
Resume
ElseIf retn = 7 Then
End If
End Select
End Sub
Private Sub Command4_Click()
Unload Me
End Sub
Private Sub Form_Load()
FileSpec = ""
End Sub
控件解釋:
text1 新建圖層的名稱
text2 圖元名稱長度
text3 圖層位置
command1 保存
command2 投影
command3 確定
command4 取消
(2) 打開表
Dim filename As String
Dim filepath As String
Dim LayerName As String
Dim lyr As MapXLib.Layer
Dim LayerInfo As New MapXLib.LayerInfo
Dim FilterIndex As Integer
Dim ftrs As New MapXLib.Features
Dim csys As New MapXLib.CoordSys
On Error Resume Next
CM2.DialogTitle = "打開文件"
CM2.DefaultExt = "Tab|*.tab"
CM2.Filter = "表(*.tab)|*.tab|GeoTiff file(*.tif)|*.tif|shapefile(*.tab)|*.tab|ServerLayer(spatialware)"
CM2.CancelError = True
CM2.Action = 1
If Err.Number = 32755 Then Exit Sub
filename = CM2.FileTitle
filepath = CM2.filename
filepath = Left(filepath, InStr(filepath, filename) - 1)
LayerName = Left(filename, InStr(filename, ".") - 1)
FilterIndex = CM2.FilterIndex
Select Case FilterIndex
Case 1:
LayerInfo.Type = miLayerInfoTypeTab
LayerInfo.AddParameter "FileSpec", filepath + filename
LayerInfo.AddParameter "Name", LayerName
Case 2:
LayerInfo.Type = miLayerInfoTypeRaster
LayerInfo.AddParameter "FileSpec", filepath + filename
LayerInfo.AddParameter "Name", LayerName
Case 3:
csys.Set 1, 0
LayerInfo.Type = miLayerInfoTypeShape
LayerInfo.AddParameter "FileSpec", filepath + filename
LayerInfo.AddParameter "CoordSys", csys
End Select
Set lyr = Formmain.Map1.Layers.Add(LayerInfo, 1)
(3) 關閉表
Private Sub Command1_Click()
Dim lyr As MapXLib.Layer
Dim i As Integer
If Trim(Combo1.Text) <> "" Then Set lyr = Formmain.Map1.Layers(Combo1.Text)
lyr.Datasets.RemoveAll
Formmain.Map1.Layers.Remove lyr
Set lyr = Nothing
Unload Me
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Dim lyr As MapXLib.Layer
For Each lyr In Formmain.Map1.Layers
Combo1.AddItem lyr.Name
Next
If Combo1.ListCount > 0 Then Combo1.ListIndex = 0
Set lyr = Nothing
End Sub
控件解釋:
combo1 tab表的列表
command1 確定關閉
command2 取消