开发入门Word文档下载推荐.docx

上传人:b****6 文档编号:19431217 上传时间:2023-01-06 格式:DOCX 页数:338 大小:1.37MB
下载 相关 举报
开发入门Word文档下载推荐.docx_第1页
第1页 / 共338页
开发入门Word文档下载推荐.docx_第2页
第2页 / 共338页
开发入门Word文档下载推荐.docx_第3页
第3页 / 共338页
开发入门Word文档下载推荐.docx_第4页
第4页 / 共338页
开发入门Word文档下载推荐.docx_第5页
第5页 / 共338页
点击查看更多>>
下载资源
资源描述

开发入门Word文档下载推荐.docx

《开发入门Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《开发入门Word文档下载推荐.docx(338页珍藏版)》请在冰豆网上搜索。

开发入门Word文档下载推荐.docx

在VBA编辑器中写好VBA代码后,有两种方式运行:

第一,点击VBA编辑器工具条中的(运行)按钮,可立即运行写好的代码;

第二,退出VBA编辑器,重新启动Macro对话框,如图2,选择要运行的VBA宏名称,点击<

Run>

按钮即可运行相应的VBA宏。

方法二:

创建UIControl(交互式VBA编程)

1、用鼠标右击任何工具栏(条),在弹出的上托式菜单中选择<

Customize>

菜单项,如图4,进入图5所示的Customize对话框。

图4启动“Customize”对话框

2、切换到“Customize”对话框的“Commands”页,选中“UIControls”后点击<

NewUIControl>

按钮,进入图6所示的“NewUIControl”对话框。

3、在“NewUIControl”对话框中,用户可根据需要选择UIControl类型:

UIButtonControl:

创建Button;

UIToolControl:

创建与Map交互的Tool;

UIEditBoxControl:

创建EditBox;

UIComboBoxControl:

创建ComboBox。

最后点击<

按钮只创建UIControl或者点击<

CreateandEdit>

按钮创建UIControl并进入VBA编辑器。

与方法一不同,此时应在UIControl的事件中进行VBA编程。

图5Customize对话框

图6NewUIControl对话框

4、UIControl创建后,在图5所示的“Customize”对话框选中UIControl并将其拖置到任意工具条上,用户便可象使用系统已有的Control一样使用所创建的UIControl。

1.1.2.如何在VB环境中利用ArcObjects组件开发ActiveXDLL

1.1.1节讨论了如何在ArcGis的VBA环境中编程,虽然通过这种方式可以完成大多数用户的定制需求,但是,在某些情况下,对于特殊的应用,用户需要脱离ArcGIS环境而在VB开发环境中开发外部独立的应用程序,这种外部独立的应用程序有两种形式:

ActiveXDLL和StandardEXE。

StandardEXE的开发将在1.1.4中讨论,本节将讨论ActiveXDLL的开发,其关键是引用ArcObjects对象库和实现ArcObjects接口(例如ICommand,ITool,IToolBar等)。

下面介绍在VB环境利用ArcObjects组件开发ActiveXDLL的一般步骤。

1、启动VB开发环境,在图7所示的“NewProject”对话框中选择“ActiveXDLL”项,并点击<

打开>

按钮,进入VBE环境。

图7NewProject对话框

2、引用ArcObjects对象库:

首先点击<

Project>

菜单中的<

References>

项,如图8,进入对象库引用对话框,如图9。

图8启动对象库引用对话框

图9对象库引用对话框

3、对象库引用对话框(图9)中选中“EsriArcMapObjectLibrary”和“EsriObjectLibrary”两项,并点击<

OK>

按钮,返回VBE环境。

4、一般在类模块中写入实现特定ArcObjects接口的代码,如图10,然后运行<

File>

Makeproject1.dll>

项,生成DLL文件,如图11。

(project1.dll随项目名改变)。

图10类模块编辑窗口

图11生成DLL文件

1.1.3.如何在ArcMap中加载利用ArcObjects组件开发的ActiveXDLL

用户通过1.1.2中介绍的方法开发好一个ActiveXDLL程序后,便可根据实际需要,在ArcMap环境下加载这个ActiveXDLL程序。

其一般步骤如下:

1、用鼠标右击任何工具栏(条),点击弹出的上托式菜单中的<

菜单项(参见图4)。

2、在Customize对话框中,根据被加载DLL的类型切换到“Toolbars”或者“Commands”页(参见图5),然后点击<

AddFromFile>

按钮。

3、在“打开文件”对话框中(Windows通用“打开文件”对话框,图略),选择被加载的Dll文件,并点击<

4、如果加载是“Commands”,则在图5所示的对话框中显示加载的Command,并可以将其拖置于任何工具条上;

如果加载是“ToolBars”,则在图12所示的对话框中显示加载的ToolBar,选中后即可在ArcMap中显示。

图12加载ToolBar

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

利用ArcObjects控件开发EXE的前三步类似于1.1.2中开发“AcrtiveDll”的前三步,唯一不同的是在“NewProject”对话框中选择“StandardEXE”。

4、点击<

菜单项中的<

Components>

项,打开“Components”对话框,如图13。

图13打开Components对话框

5、在“Components”对话框中,切换到Controls页,并选中“ESRIMapControl”项,点击<

应用>

或<

确定>

按钮,如图14。

图14Components对话框

6、如图15所示,加载MapControl控件之后,在VBE的控件面板中出现了MapControl控件图标,用户便可以象在Form中添加Button一样在Form中添加MapControl控件,并利用它开发EXE。

图15添加MapControl控件

1.2.用户界面

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

本例要实现的是如何创建定制的按钮(Button)。

●要点

用户通过在类模块中实现ICommand接口来创建定制的按钮(COMcommand)。

ICommand接口包括caption、name、category、bitmap、message(StatusBarr的提示信息)、tooltip(微帮助)、helpcontextid、helpfile、enabled以及checked等十个属性和OnCreate、  OnClick两个事件。

从Icommand接口的OnCreate事件中获取的ArcMap的Application实例必须用一个公共变量保存,以便在其它事件中(或者其它接口的事件中甚至整个工程中)使用。

·

OnCreate事件的参数hook传入的是一个Object,也就是ArcMAP的Application实例,可把它赋给一个IApplication接口的变量,便获得了ArcMAP的实例。

在OnClick事件中写入相关代码,表示按下按钮时要实现的功能.

●程序说明

程序在类模块中实现Icommand接口来创建自己的按钮(Button)

●代码

OptionExplicit

'

实现Icommand接口

ImplementsICommand

Dimm_pPictureasPicture

Dimm_pApplicationAsIApplication

PrivateSubClass_Initialize()

调入.RES文件中ID为101的BitMap作为该按钮的显示图片

Setm_pPicture=LoadResPicture(101,vbResBitmap)

EndSub

PrivatePropertyGetICommand_Bitmap()AsesriCore.OLE_HANDLE

ICommand_Bitmap=m_pPicture

EndProperty

PrivatePropertyGetICommand_Caption()AsString

ICommand_Caption="

CreateButton"

PrivatePropertyGetICommand_Category()AsString

ICommand_Category="

CreateButton"

PrivatePropertyGetICommand_Checked()AsBoolean

PrivatePropertyGetICommand_Enabled()AsBoolean

ICommand_Enabled=True

PrivatePropertyGetICommand_HelpContextID()AsLong

PrivatePropertyGetICommand_HelpFile()AsString

PrivatePropertyGetICommand_Message()AsString

PrivatePropertyGetICommand_Name()AsString

ICommand_Name="

CreateButton"

PrivateSubICommand_OnClick()

加入按下按钮时实现的功能代码。

在这里,

按钮按下时显示ArcMap的Document的Tittle

DimpDocumentAsIDocument

SetpDocument=m_pApplication.Document

MsgBoxpDocument.Title

PrivateSubICommand_OnCreate(ByValhookAsObject)

获取ArcMap的Application实例

Setm_pApplication=hook

PrivatePropertyGetICommand_Tooltip()AsString

ICommand_Tooltip="

1.2.2.如何创建定制的Tool

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

用户在类模块中实现Icommand(参见1.2.1)和ITool接口。

ITool接口包括mousemove,mousebuttonpress/release,keyboardkeypress/release,double-click以及rightclick等事件、Cursor属性和Refresh方法。

Tool既具有Button的功能,又具有与ArcMAP界面交互的功能,Button的功能代码必须写在Icommand的OnClick事件中,而所有实现交互功能的代码必须写在Itool接口的各个事件中。

Itool接口的各个事件,用户可以在其中写入相关代码,表示用户与ArcMAP界面交互时一旦触发某事件要实现的功能。

程序在类模块中实现Icommand和Itool接口来创建自己的Tool.

实现Icommand和Itool接口

ImplementsITool

Dimm_pApplicationAsIApplication

Dimm_pBitmapAsIPictureDisp

Dimm_pCursorAsIpictureDisp

Setm_pBitmap=LoadResPicture(101,0)

'

从.RES文件中调入ID为102的图片作为按下Tool后的MouseCursor

Setm_pCursor=LoadResPicture(102,2)

ICommand_Bitmap=m_pBitmap

ICommand_Caption="

MyTool"

ICommand_Category="

MyCustomTools"

ICommand_Enabled=True

ICommand_Message="

Thisismycustomtool"

MyCustomTool_MyTool"

加入按下按钮时实现的功能代码

MsgBox"

Clickedonmycommand"

获取ArcMAP的Application实例

Setm_pApplication=hook

ICommand_Tooltip="

PrivatePropertyGetITool_Cursor()AsesriCore.OLE_HANDLE

ITool_Cursor=m_pCursor

PrivateFunctionITool_Deactivate()AsBoolean

如果ITool_Deactivate设为False,则Tool不可用

ITool_Deactivate=True

EndFunction

PrivateFunctionITool_OnContextMenu(ByValXAsLong,ByValYAsLong)AsBoolean

在这里可以加入用户代码,点击Mouse右键时显示一个定制的contextmenu

PrivateSubITool_OnDblClick()

在这里加入Mouse双击时的功能代码

PrivateSubITool_OnKeyDown(ByValkeyCodeAsLong,ByValShiftAsLong)

PrivateSubITool_OnKeyUp(ByValkeyCodeAsLong,ByValShiftAsLong)

PrivateSubITool_OnMouseDown(ByValButtonAsLong,ByValShiftAsLong,_

ByValXAsLong,ByValYAsLong)

加入Mouse单击时的功能代码

IfButton=1Then

DimpPointAsIPoint

DimpMxApplicationAsIMxApplication

SetpMxApplication=m_pApp

SetpPoint=pMxApplication.Display.DisplayTransformation.ToMapPoint(X,Y)

m_pApplication.StatusBar.Message(0)=Str(pPoint.X)&

"

"

&

Str(pPoint.Y)

EndIf

PrivateSubITool_OnMouseMove(ByValButtonAsLong,ByValShiftAsLong,_

加入Mouse移动时的功能代码

m_pApplication.StatusBar.Message(0)="

ITool_OnMouseMove"

PrivateSubITool_OnMouseUp(ByValButtonAsLong,ByValShiftAsLong,_

加入释放Mouse时的功能代码

ITool_OnMouseUp"

PrivateSubITool_Refresh(ByValhDCAsesriCore.OLE_HANDLE)

1.2.3.如何创建定制的工具条(ToolBar)

本例要实现的是如何创建定制的工具条(ToolBar)。

就必须在类模块中实现IToolBarDef接口。

IToolBarDef接口包括Caption、ItemCount及Name三个属性和GetItemInfo方法。

通过在类模块中实现IToolBarDef接口。

ItemCount属性表示ToolBar显示的条目(Button、Tool或其它控件)数。

GetItemInfo方法定义工具条上各条目的CLSID,其中,参数pos表示条目在ToolBar中的位置,itemDef是定义相应位置的条目的IItemDef对象。

工具条条目的CLSID分为两种:

1、系统CLSID,代表ArcGIS的一个功能,其引用方式为"

esriCore.命令名称"

,如"

esriCore.AddDataCommand"

、"

esriCore.FileSaveCommand"

等。

2、用户定制CLSID,表示用户自己定义的功能。

其引用方式为"

工程名称.定制功能类名称"

ToolBarDef.ClsBar"

必须注意,这里“定制功能类名称”是工程中实现的一个功能类名称,“工程名称”即为当前工程的名称(不是DLL文件名,也不是工具条的名称),每次新建一个工程时,系统默认的工程名在某些情况下无法使用(在中文版的VB中是一个乱字符),必须改名后方能用。

程序在类模块中实现IToolBarDef接口来创建自己的工具条(ToolBar)。

ImplementsIToolBarDef

PrivatePropertyGetIToolBarDef_Caption()AsString

IToolBarDef_Caption="

CustomToolBar"

PrivateSubIToolBarDef_GetItemInfo(ByValposAsLong,ByValitemDefAs_

esriCore.IItemDef)

这里假设在当前工程(工程名称为ToolBarDef)中定义了一个类模块(名为ClsBar),

它实现了Icommand接口(可参照1.2.1)

SelectCasepos

Case0

用户自定义条目

itemDef.ID="

ToolBarDef.ClsBar"

itemDef.Group=False

Case1

系统条目

EndSelect

PrivatePropertyGetIToolBarDef_ItemCount()AsLong

IToolBarDef_ItemCount=2

PrivatePropertyGetIToolBarDef_Name()AsString

IToolBarDef_Name="

1.2.4.如何创建定制的MultiItem

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

需要实现IMultiItem接口,但不需要同时实现Icommand接口。

IMultiItem接口包括Caption,itemCaption,ItemBitmap,ItemEnabled,ItemC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1