阅读:2148回复:3
[请教]VB+MO怎样用legend1的MouseDown事件来在Combo1控件中显示相应图层的字段
<P>我在做毕业设计,我是MO 新手</P>
<P>本来我在我手头有一个同学在网上收来的源码</P> <P align=left>Private Sub legend1_LayerDblClick(Index As Integer) '图例 双击将图层的的字段名加到列表框list1中 <p></p></P> <P align=left>Dim ofiled As MapObjects2.Field <p></p></P> <P align=left>Combo1.Clear <p></p></P> <P align=left>For Each ofiled In Map1.Layers(Index).Records.Fields <p></p></P> <P align=left>Combo1.AddItem ofiled.Name <p></p></P> <P align=left>Next <p></p></P> <P align=left> <p></p></P> <P align=left>'begin with id num <p></p></P> <P align=left>Combo1.ListIndex = 0 <p></p></P> <P align=left> <p></p></P> <P align=left>End Sub <p></p></P> <P>是双击事件,可我早已设定了双击legend1控件显示设计图层颜色对话框,就矛盾了!</P> <P>我把上面得代码加入legend1_MouseDown事件中想碰碰运气,但开始还真管用,单击激活图层就在Combo1中显示了各层相应字段,但点击空白处就出现了错误!!!!!!!!有哪位高手能解决这个问题,能告诉我怎样改进,或把代码贴上来,先谢谢各位了!</P> |
|
1楼#
发布于:2009-04-24 17:19
<P>太谢谢楼上!你的代码对我来说绝对是意外的惊喜,本来我以用CommonDialog1做出了双击Legend1弹出颜色对话框的功能但我也不太满意,你的代码我会试试的!谢谢了!但我想要能单击激活图层在Combo1中显示相应激活图层字段的功能!如果有谁能解决这个问题的话我同样感激不尽!</P>
|
|
2楼#
发布于:2009-04-24 15:23
<P>以下是frmedit的代码:</P>
<P>Option Explicit</P> <P>Dim strMarkerStyle(3) As String<BR>Dim strLineStyle(4) As String<BR>Dim strFillStyle(10) As String<BR>Dim lyr As MapObjects2.MapLayer<BR>Dim a As Integer</P> <P>Private Sub cmdApply_Click()<BR>Call ApplySymbol<BR>lyr.Name = txtLayerName.text<BR>Form1.legend1.LoadLegend<BR>Form1.Map1.Refresh<BR>End Sub</P> <P>Private Sub cmdCancel_Click()<BR>Unload Form5<BR>End Sub</P> <P>Private Sub cmdOk_Click()<BR>Call cmdApply_Click<BR>Unload Form5<BR>End Sub</P> <P>Private Sub Form_Load()<BR> Set lyr = Form1.ActiveLayer<BR> txtLayerName = lyr.Name<BR> strMarkerStyle(0) = "圆形"<BR> strMarkerStyle(1) = "正方形"<BR> strMarkerStyle(2) = "三角形"<BR> strMarkerStyle(3) = "十字"<BR> strLineStyle(0) = "长线"<BR> strLineStyle(1) = "短线"<BR> strLineStyle(2) = "点线"<BR> strLineStyle(3) = "点划线1"<BR> strLineStyle(4) = "点划线2"<BR> strFillStyle(0) = "充实"<BR> strFillStyle(1) = "透明"<BR> strFillStyle(2) = "横线"<BR> strFillStyle(3) = "竖线"<BR> strFillStyle(4) = "上斜线"<BR> strFillStyle(5) = "下斜线"<BR> strFillStyle(6) = "正十字"<BR> strFillStyle(7) = "斜十字"<BR> strFillStyle(8) = "亮格网"<BR> strFillStyle(9) = "格网"<BR> strFillStyle(10) = "暗格网"<BR> <BR>Call LoadSingleSymbol<BR>End Sub</P> <P>Private Sub ApplySymbol()</P> <P> Dim sym As MapObjects2.Symbol<BR> Set sym = lyr.Symbol<BR> lyr.Name = txtLayerName.text<BR> Set lyr.Renderer = Nothing<BR> <BR> Select Case lyr.shapeType<BR> Case moShapeTypePoint<BR> sym.Color = picSSP(0).BackColor<BR> sym.Style = cboSSP.ListIndex<BR> <BR> If IsNumeric(txtSSP.text) Then<BR> sym.Size = txtSSP.text<BR> Else<BR> sym.Size = 5<BR> End If<BR> Case moShapeTypeMultipoint<BR> sym.Color = picSSP(0).BackColor<BR> sym.Style = cboSSP.ListIndex<BR> <BR> If IsNumeric(txtSSP.text) Then<BR> sym.Size = txtSSP.text<BR> Else<BR> sym.Size = 5<BR> End If<BR> Case moLine<BR> sym.Color = picSSP(0).BackColor<BR> sym.Style = cboSSP.ListIndex<BR> If IsNumeric(txtSSP.text) Then<BR> sym.Size = txtSSP.text<BR> Else<BR> sym.Size = 1<BR> End If<BR> Case moPolygon<BR> sym.Color = picSSP(0).BackColor<BR> sym.OutlineColor = picSSP(1).BackColor<BR> sym.Style = cboSSP.ListIndex<BR> If IsNumeric(txtSSP.text) Then<BR> sym.Size = txtSSP.text<BR> Else<BR> sym.Size = 1<BR> End If<BR> Select Case chkSSP.Value<BR> Case 1<BR> lyr.Symbol.Outline = True<BR> Case 0<BR> lyr.Symbol.OutlineColor = lyr.Symbol.Color<BR> lyr.Symbol.Outline = False<BR> End Select<BR> End Select<BR>End Sub</P> <P>Private Sub LoadSingleSymbol()</P> <P> Dim i As Integer<BR> Dim fnt As New StdFont<BR> <BR> cboSSP.Clear<BR> Select Case lyr.shapeType<BR> Case moShapeTypePoint<BR> chkSSP.Visible = False<BR> picSSP(1).Visible = False<BR> lblSSP(2).Visible = False<BR> <BR> txtSSP.text = lyr.Symbol.Size<BR> lblSSP(3).Caption = "颜色:"<BR> lblSSP(1).Caption = "大小:"<BR> For i = 0 To 3<BR> cboSSP.AddItem strMarkerStyle(i)<BR> Next<BR> picSSP(0).BackColor = lyr.Symbol.Color<BR> cboSSP.text = strMarkerStyle(lyr.Symbol.Style)<BR> cboSSP.ListIndex = lyr.Symbol.Style<BR> Case moShapeTypeMultipoint<BR> chkSSP.Visible = False<BR> picSSP(1).Visible = False<BR> lblSSP(2).Visible = False<BR> <BR> txtSSP.text = lyr.Symbol.Size<BR> lblSSP(1).Caption = "大小:"<BR> For i = 0 To 4<BR> cboSSP.AddItem strMarkerStyle(i)<BR> Next<BR> picSSP(0).BackColor = lyr.Symbol.Color<BR> cboSSP.text = strMarkerStyle(lyr.Symbol.Style)<BR> cboSSP.ListIndex = lyr.Symbol.Style<BR> Case moShapeTypeLine<BR> chkSSP.Visible = False<BR> picSSP(1).Visible = False<BR> lblSSP(2).Visible = False<BR> <BR> txtSSP.text = lyr.Symbol.Size<BR> lblSSP(1).Caption = "线宽:"<BR> For i = 0 To 4<BR> cboSSP.AddItem strLineStyle(i)<BR> Next<BR> picSSP(0).BackColor = lyr.Symbol.Color<BR> cboSSP.text = strLineStyle(lyr.Symbol.Style)<BR> cboSSP.ListIndex = lyr.Symbol.Style<BR> Case moShapeTypePolygon<BR> chkSSP.Visible = True<BR> picSSP(1).Visible = True<BR> lblSSP(2).Visible = True<BR> <BR> If lyr.Symbol.Size = 0 Then<BR> txtSSP.text = 1<BR> Else<BR> txtSSP.text = lyr.Symbol.Size<BR> End If<BR> For i = 0 To 10<BR> cboSSP.AddItem strFillStyle(i)<BR> Next<BR> picSSP(0).BackColor = lyr.Symbol.Color<BR> picSSP(1).BackColor = lyr.Symbol.OutlineColor<BR> cboSSP.text = strFillStyle(lyr.Symbol.Style)<BR> cboSSP.ListIndex = lyr.Symbol.Style<BR> Select Case lyr.Symbol.Outline<BR> Case True: chkSSP.Value = 1<BR> Case False: chkSSP.Value = 0<BR> End Select<BR> End Select</P> <P>End Sub</P> <P>Private Sub picSSP_Click(Index As Integer)<BR> dlgColor.ShowColor<BR> picSSP(Index).BackColor = dlgColor.Color<BR>End Sub</P> |
|
3楼#
发布于:2009-04-24 15:20
<P>双击进行图层编辑:</P>
<P>Private Sub legend1_LayerDblClick(Index As Integer)<BR> Set ActiveLayer = Map1.Layers(Index)<BR> If ActiveLayer.LayerType = moImageLayer Then<BR> MsgBox "不能为该类图层建立相应属性!"<BR> Exit Sub<BR> End If<BR> frmedit.Show</P> <P>End Sub</P> |
|