tomxialiyu
路人甲
路人甲
  • 注册日期2009-03-25
  • 发帖数16
  • QQ
  • 铜币175枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2006回复:3

[请教]VB+MO怎样用legend1的MouseDown事件来在Combo1控件中显示相应图层的字段

楼主#
更多 发布于:2009-04-21 23:45
<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>
喜欢0 评分0
zzw369846827
路人甲
路人甲
  • 注册日期2008-10-13
  • 发帖数8
  • QQ
  • 铜币132枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于: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>
举报 回复(0) 喜欢(0)     评分
zzw369846827
路人甲
路人甲
  • 注册日期2008-10-13
  • 发帖数8
  • QQ
  • 铜币132枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
tomxialiyu
路人甲
路人甲
  • 注册日期2009-03-25
  • 发帖数16
  • QQ
  • 铜币175枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2009-04-24 17:19
<P>太谢谢楼上!你的代码对我来说绝对是意外的惊喜,本来我以用CommonDialog1做出了双击Legend1弹出颜色对话框的功能但我也不太满意,你的代码我会试试的!谢谢了!但我想要能单击激活图层在Combo1中显示相应激活图层字段的功能!如果有谁能解决这个问题的话我同样感激不尽!</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部