wsm2002
路人甲
路人甲
  • 注册日期2003-11-01
  • 发帖数40
  • QQ
  • 铜币249枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1674回复:4

关于symbolselector对话框

楼主#
更多 发布于:2005-03-22 22:28
<P>我想用程序调出一个系统的symbolselector对话框,并把结果返回我要修改的那个对象中,下面的代码显示了symbolselector对话框,但是,结果并没有再toc或者map中显示。请教各位高手 该怎么做啊
Set pFc = player
        Set m_pSymbol = pFc.SelectionSymbol</P>
<P>        If m_pSymbol Is Nothing Then Exit Sub
        Dim pSymbolSelector As ISymbolSelector
        Set pSymbolSelector = New SymbolSelector
        If pSymbolSelector.AddSymbol(m_pSymbol) Then
        If pSymbolSelector.SelectSymbol(Me.hWnd) Then
        Set m_pSymbol = pSymbolSelector.GetSymbolAt(0) </P>
喜欢0 评分0
waterblue
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数72
  • QQ
  • 铜币387枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-03-24 09:24
<P> TOCControl1.Update</P><P>pmap.activeview.Refresh</P><P>刷新视图</P><P>附加代码:</P><P> 'Determine what kind of item has been clicked on
      TOCControl1.HitTest x, y, pItem, pMap, pLayer, pOther, pIndex
      'Only layer items can have their labels edited
      If pItem = esriTOCControlItemLayer Then
      '点中的是图层
        Set pSelSymLayer = pLayer
      ElseIf pItem = esriTOCControlItemLegendClass Then
      '点中的是图例
        Dim pGeoFeatureLayer As IGeoFeatureLayer
        Set pGeoFeatureLayer = pLayer
            If TypeOf pGeoFeatureLayer.Renderer Is ISimpleRenderer Then
                Dim pSimpleRenderer As ISimpleRenderer
                Set pSimpleRenderer = pGeoFeatureLayer.Renderer
                Dim pSymbolSelector As ISymbolSelector
                Set pSymbolSelector = New SymbolSelector
                pSymbolSelector.AddSymbol pSimpleRenderer.Symbol
                pSymbolSelector.SelectSymbol Me.hwnd
                Dim pSymbolNew As ISymbol
                Set pSymbolNew = pSymbolSelector.GetSymbolAt(0)
                If Not pSymbolNew Is Nothing Then
                    Set pSimpleRenderer.Symbol = pSymbolNew
                    Call RefreshMap
                End If
                Set pSymbolSelector = Nothing
            ElseIf TypeOf pGeoFeatureLayer.Renderer Is IUniqueValueRenderer Then
                Dim pLengendGroup As ILegendGroup
                Dim pLegendClass  As ILegendClass
                Set pLengendGroup = New LegendGroup
                Set pLegendClass = pLengendGroup.Class(CLng(pIndex))
                Dim pSymbolSel As ISymbolSelector
                Set pSymbolSel = New SymbolSelector
                pSymbolSel.AddSymbol pLegendClass.Symbol
                '当选择一个新的symbol
                If pSymbolSel.SelectSymbol(0) Then
                    Set pLegendClass.Symbol = pSymbolSel.GetSymbolAt(0)
                    TOCControl1.Update
                    Call RefreshMap
                End If
                Set pSymbolSel = Nothing
            End If</P>
http://www.geostar.com.cn(吉奥 公司) http://www.waterblue.com.cn(水之灵,蓝之静 个人)
举报 回复(0) 喜欢(0)     评分
waterblue
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数72
  • QQ
  • 铜币387枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-03-24 09:26
<b>symbolselector对话框</b>
ArcEngine并不支持这个对话框,显然如果用它开发,这个对话框是调用不了的,必须自己来做
http://www.geostar.com.cn(吉奥 公司) http://www.waterblue.com.cn(水之灵,蓝之静 个人)
举报 回复(0) 喜欢(0)     评分
wsm2002
路人甲
路人甲
  • 注册日期2003-11-01
  • 发帖数40
  • QQ
  • 铜币249枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-03-24 23:20
谢谢大侠
举报 回复(0) 喜欢(0)     评分
wsm2002
路人甲
路人甲
  • 注册日期2003-11-01
  • 发帖数40
  • QQ
  • 铜币249枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-04-10 00:42
<P>再次请教,是不是unique symbol ,chartsymbol 和其他的symbol都可以用同样的方法实现?</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部