以下是frmedit的代码:
Option Explicit
Dim strMarkerStyle(3) As String
Dim strLineStyle(4) As String
Dim strFillStyle(10) As String
Dim lyr As MapObjects2.MapLayer
Dim a As Integer
Private Sub cmdApply_Click()
Call ApplySymbol
lyr.Name = txtLayerName.text
Form1.legend1.LoadLegend
Form1.Map1.Refresh
End Sub
Private Sub cmdCancel_Click()
Unload Form5
End Sub
Private Sub cmdOk_Click()
Call cmdApply_Click
Unload Form5
End Sub
Private Sub Form_Load()
Set lyr = Form1.ActiveLayer
txtLayerName = lyr.Name
strMarkerStyle(0) = "圆形"
strMarkerStyle(1) = "正方形"
strMarkerStyle(2) = "三角形"
strMarkerStyle(3) = "十字"
strLineStyle(0) = "长线"
strLineStyle(1) = "短线"
strLineStyle(2) = "点线"
strLineStyle(3) = "点划线1"
strLineStyle(4) = "点划线2"
strFillStyle(0) = "充实"
strFillStyle(1) = "透明"
strFillStyle(2) = "横线"
strFillStyle(3) = "竖线"
strFillStyle(4) = "上斜线"
strFillStyle(5) = "下斜线"
strFillStyle(6) = "正十字"
strFillStyle(7) = "斜十字"
strFillStyle(8) = "亮格网"
strFillStyle(9) = "格网"
strFillStyle(10) = "暗格网"
Call LoadSingleSymbol
End Sub
Private Sub ApplySymbol()
Dim sym As MapObjects2.Symbol
Set sym = lyr.Symbol
lyr.Name = txtLayerName.text
Set lyr.Renderer = Nothing
Select Case lyr.shapeType
Case moShapeTypePoint
sym.Color = picSSP(0).BackColor
sym.Style = cboSSP.ListIndex
If IsNumeric(txtSSP.text) Then
sym.Size = txtSSP.text
Else
sym.Size = 5
End If
Case moShapeTypeMultipoint
sym.Color = picSSP(0).BackColor
sym.Style = cboSSP.ListIndex
If IsNumeric(txtSSP.text) Then
sym.Size = txtSSP.text
Else
sym.Size = 5
End If
Case moLine
sym.Color = picSSP(0).BackColor
sym.Style = cboSSP.ListIndex
If IsNumeric(txtSSP.text) Then
sym.Size = txtSSP.text
Else
sym.Size = 1
End If
Case moPolygon
sym.Color = picSSP(0).BackColor
sym.OutlineColor = picSSP(1).BackColor
sym.Style = cboSSP.ListIndex
If IsNumeric(txtSSP.text) Then
sym.Size = txtSSP.text
Else
sym.Size = 1
End If
Select Case chkSSP.Value
Case 1
lyr.Symbol.Outline = True
Case 0
lyr.Symbol.OutlineColor = lyr.Symbol.Color
lyr.Symbol.Outline = False
End Select
End Select
End Sub
Private Sub LoadSingleSymbol()
Dim i As Integer
Dim fnt As New StdFont
cboSSP.Clear
Select Case lyr.shapeType
Case moShapeTypePoint
chkSSP.Visible = False
picSSP(1).Visible = False
lblSSP(2).Visible = False
txtSSP.text = lyr.Symbol.Size
lblSSP(3).Caption = "颜色:"
lblSSP(1).Caption = "大小:"
For i = 0 To 3
cboSSP.AddItem strMarkerStyle(i)
Next
picSSP(0).BackColor = lyr.Symbol.Color
cboSSP.text = strMarkerStyle(lyr.Symbol.Style)
cboSSP.ListIndex = lyr.Symbol.Style
Case moShapeTypeMultipoint
chkSSP.Visible = False
picSSP(1).Visible = False
lblSSP(2).Visible = False
txtSSP.text = lyr.Symbol.Size
lblSSP(1).Caption = "大小:"
For i = 0 To 4
cboSSP.AddItem strMarkerStyle(i)
Next
picSSP(0).BackColor = lyr.Symbol.Color
cboSSP.text = strMarkerStyle(lyr.Symbol.Style)
cboSSP.ListIndex = lyr.Symbol.Style
Case moShapeTypeLine
chkSSP.Visible = False
picSSP(1).Visible = False
lblSSP(2).Visible = False
txtSSP.text = lyr.Symbol.Size
lblSSP(1).Caption = "线宽:"
For i = 0 To 4
cboSSP.AddItem strLineStyle(i)
Next
picSSP(0).BackColor = lyr.Symbol.Color
cboSSP.text = strLineStyle(lyr.Symbol.Style)
cboSSP.ListIndex = lyr.Symbol.Style
Case moShapeTypePolygon
chkSSP.Visible = True
picSSP(1).Visible = True
lblSSP(2).Visible = True
If lyr.Symbol.Size = 0 Then
txtSSP.text = 1
Else
txtSSP.text = lyr.Symbol.Size
End If
For i = 0 To 10
cboSSP.AddItem strFillStyle(i)
Next
picSSP(0).BackColor = lyr.Symbol.Color
picSSP(1).BackColor = lyr.Symbol.OutlineColor
cboSSP.text = strFillStyle(lyr.Symbol.Style)
cboSSP.ListIndex = lyr.Symbol.Style
Select Case lyr.Symbol.Outline
Case True: chkSSP.Value = 1
Case False: chkSSP.Value = 0
End Select
End Select
End Sub
Private Sub picSSP_Click(Index As Integer)
dlgColor.ShowColor
picSSP(Index).BackColor = dlgColor.Color
End Sub