中国地图
GIS探索者
遥感影像纠正
GIS论坛
网站首页| GIS论坛 |新闻动态 | 技术专栏 | GIS书籍 | 资源下载 | 求职招聘 | 研究生考试 | GIS博客 | GIS空间站
欢迎光临GIS空间站!   网站地图
  专栏导航:| ArcGIS | MapInfo | TopMap | 地理信息 | 遥感 | GPS | 测绘 | WebGIS | LBS | 前沿 | 数据库 | 开发 | 行业应用
  推荐栏目:| AO开发 | 业界动态 | GIS资源 | 招聘信息 | 求职简历 | 共享软件 | 电子书籍 | 研究生考题 | 电子期刊 | GIS论文
您现在的位置: GIS空间站 >> 技术专栏 >> ArcGIS >> AO开发 >> 文章正文

如何创建定制的ToolControl

作者:gis    文章来源:GIS帝国    点击数:    更新时间:2007-9-22
TopMap活动

如何创建定制的ToolControl

本例要实现的是如何创建定制的ToolControl。ToolControl是指具有ComboBox的下拉列表 或 EditBox的编辑功能的一类控件。要创建定制的ToolControl,必须在类模块中实现ICommand 和 IToolControl接口。IToolControl接口包括hWnd属性和OnDrop, OnFocus事件。

l 要点

·IToolControl接口的hWnd属性,接受一个Window Handle。

·IToolControl接口的OnDrop事件,支持ToolControl的拖放,传入参数barType表示Bar类型。

·IToolControl接口的OnFocus事件,传入IcompletionNotify类型的参数complete,可以通过执行IcompletionNotify接口的SetComplete方法告之ArcMAP,ToolControl可以失去Focus。

l 程序说明

本例中涉及三个模块,详细描述如下,其中,在类模块中实现了IToolBarDef接口来创建自己的ToolControl。

l 代码

'1、frmImageCombo.frm模块,定义选中Combox某一项之后实现的功能。要求在Form上放置一个
'ImageComb控件(名为ImageCombo1)和一个ImageList控件(名为ImageList1),并在ImageList1
'中添加三张图片。

Private Sub Form_Load()
' 设置ImageCombo1的选择Item
    Me.ImageCombo1.ImageList = Me.ImageList1
    Me.ImageCombo1.ComboItems.Add 1, "Red", "Red"
    Me.ImageCombo1.ComboItems.Add 2, "Blue", "Blue"
    Me.ImageCombo1.ComboItems.Add 3, "Green", "Green"
    Me.ImageCombo1.ComboItems(1).Image = 1
    Me.ImageCombo1.ComboItems(2).Image = 2
    Me.ImageCombo1.ComboItems(3).Image = 3
End Sub

Private Sub ImageCombo1_Click()
' 选择颜色
    Dim sel As Variant
    sel = Me.ImageCombo1.SelectedItem
    Dim color As Variant
    Select Case sel
        Case "Blue"
            color = vbBlue
        Case "Red"
            color = vbRed
        Case "Green"
            color = vbGreen
    End Select
    Dim pDocument As IMxDocument
    Set pDocument = g_pApplication.Document
    ' 设置颜色
    Dim pRgbColor As IrgbColor
    Set pRgbColor = New RgbColor
    pRgbColor.RGB = color
    ' 改变选中部分的颜色
    Dim pSelectionEnvironment As ISelectionEnvironment
    Set pSelectionEnvironment = New SelectionEnvironment
    Set pSelectionEnvironment.DefaultColor = pRgbColor
     ' 刷新视图
     pDocument.ActivatedView.Refresh
    ' 通知ArcMap,ToolControl现在可以失去Focus
    g_pCompletionNotify.SetComplete
End Sub

' 2、modPublicVars.bas模块,定义工程中用到的全局变量。
Option Explicit
Public g_pApplication As IApplication
Public g_pCompletionNotify As IcompletionNotify

' 3、CustImageCombo.cls模块,实现接口Icommand和IToolControl。
Option Explicit
Implements ICommand
Implements IToolControl

Private Property Get ICommand_Bitmap() As esriCore.OLE_HANDLE
End Property

Private Property Get ICommand_Caption() As String
    ICommand_Caption = "Custom ImageCombo"
End Property

Private Property Get ICommand_Category() As String
    ICommand_Category = "Developer Samples"
End Property

Private Property Get ICommand_Checked() As Boolean
End Property

Private Property Get ICommand_Enabled() As Boolean
    ICommand_Enabled = True
End Property

Private Property Get ICommand_HelpContextID() As Long
End Property

Private Property Get ICommand_HelpFile() As String
End Property

Private Property Get ICommand_Message() As String
    ICommand_Message = "Change feature selection color"
End Property

Private Property Get ICommand_Name() As String
    ICommand_Name = "DevelperSamples_CustomImageCombo"
End Property

Private Sub ICommand_OnClick()
End Sub

Private Sub ICommand_OnCreate(ByVal hook As Object)
    Set g_pApp = hook
End Sub

Private Property Get ICommand_Tooltip() As String
    ICommand_Tooltip = "Change Selection Color"
End Property

Private Property Get IToolControl_hWnd() As esriCore.OLE_HANDLE
   '将frmImageCombo.ImageCombo1的Window Handle赋给IToolControl_hWnd
IToolControl_hWnd = frmImageCombo.ImageCombo1.hWnd
End Property

Private Function IToolControl_OnDrop(ByVal barType As esriCore.esriCmdBarType) As Boolean      '仅能将ToolControl拖放到ToolBar上
    If barType = esriCmdBarTypeToolbar Then
        IToolControl_OnDrop = True
    End If

End Function

Private Sub IToolControl_OnFocus(ByVal complete As esriCore.ICompletionNotify)
    Set g_pCompletionNotify = complete
End Sub

文章录入:wzj3sstudio    责任编辑:wzj3sstudio  发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
■■相 关 图 书:
■■相 关 文 章:
  • 本例要实现的是如何创建定制的菜单(Menu)

  • 本例要实现的是如何创建定制的MultiItem。

  • 如何创建定制的工具条(Tool Bar)

  • 本例要实现的是如何创建定制的Tool

  • 如何创建定制的按钮(Button)

  • 如何在VB环境中利用ArcObjects控件开发EXE

  • 如何在ArcMap中加载利用ArcObjects组件开发的ActiveX DLL

  • 上一篇文章:

  • 下一篇文章:
  •  
    GIS博客精华
    热点文章
    热门资源
     
    关于我们 | 联系我们 | 广告服务 | 友情链接 | 申请链接 | 合作联盟 | 诚聘英才
      GIS空间站(GISSky.Net)版权所有 站长:兔八哥