水世界-水处理技术社区(论坛)

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信登录

扫一扫,用微信登录

搜索
查看: 1378|回复: 1
打印 上一主题 下一主题

如何创建定制的ToolControl

[复制链接]

1万

积分

5860

金钱

4894

帖子

铂金水师

QQ
跳转到指定楼层
楼主
发表于 2007-9-23 19:30:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



马上注册并关注水世界微信号,获得更多资料

您需要 登录 才可以下载或查看,没有帐号?注册   扫一扫,用微信登录

x
如何创建定制的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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
清啦

16

积分

469

金钱

32

帖子

小小水师

沙发
发表于 2008-4-26 15:28:34 | 只看该作者
创建定制的ToolControl创建定制的ToolControl
您需要登录后才可以回帖 登录 | 注册   扫一扫,用微信登录

本版积分规则

联系管理员|手机版|小黑屋|水世界-水处理技术社区(论坛) ( 京ICP备12048982号-4

GMT+8, 2025-6-12 07:58 , Processed in 0.162575 second(s), 40 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表