VB 与MapInfo 二次开发的重点

 我来答
中地数媒
2020-01-19 · 技术研发知识服务融合发展。
中地数媒
中地数媒(北京)科技文化有限责任公司奉行创新高效、以人为本的企业文化,坚持内容融合技术,创新驱动发展的经营方针,以高端培训、技术研发和知识服务为发展方向,旨在完成出版转型、媒体融合的重要使命
向TA提问
展开全部

( 1) MapInfo 对象的创建

本系统使用 OLE Automation 技术在 VB 中创建一个 MapInfo 的应用对象,然后在 VB环境下对该对象进行操作 ( 张峰等,2004) 。首先在 VB 环境下声明一个对象变量如 Map-Info,接着在 VB 中使用 CreateObject ( ) 函数创建一个 MapInfo 对象,使用语句:

Set MapInfo = CreateObject( “MapInfo. Applicaiton”)

要连接一个已运行着的 MapInfo,需要用 Visual Basic 的 GetObject ( ) 函数。

Set MapInfo = GetObject( “MapInfo. Application”)

由于该语句创建的是 MapInfo 应用对象,所以在本地机器系统中应该有 MapInfo 软件平台,否则将产生错误,不能创建 MapInfo 应用对象。集成地图开发是在程序中通过调用语句来在后台启动 MapInfo。创建完对象后就可以在 VB 环境里使用对象 MapInfo 的属性和方法,通过 VB 的对象浏览器,可以看到 MapInfo 对象的属性和方法,最常用的是 do 方法。MapInfo 应用对象 do 方法识别和执行字符串命令行。由于在 MapInfo 系统中包含的库文件 “MapBasic. def”以及 “Menu. def”中集成了许多命令函数,使 MapInfo 的有些功能往往只需要一两条语句就可以在 VB 中完成,使用起来也比较简单、方便。

( 2) VB 评价结果在 MapInfo 中的图形显示和重画

在 GIS 软件系统中,图形的显示及重画功能是系统自动完成的,可是由于本系统是采用 OLE 技术,将 MapInfo 系统集成到 VB 的环境中,则图形的显示和重画只能在 VB 的环境里完成,由于 VB 自身无法识别 MapInfo 的图形格式,所以就无法进行图形的显示与重画。使用 Map Basic 语句“Set Application Window”来让 MapInfo 的对话框和错误信息窗口从属于客户程序。“Set Next Document”语句允许 “再生”窗口。在 VB 与 MapInfo 集成环境里,图形的显示可以使用 MapInfo 的窗口来实现,也可以在 VB 的窗口中实现,MapInfo允许以三种模式将一个地图在 VB 环境里显示。其中 style 1: 表示无模式形式,即地图将充满整个 VB 窗体中,就像将 MapInfo 的图形贴在 VB 窗体上一样 ( 张峰等,2004) ; style2: 则表示生成带半高标题栏的弹出式窗口 ( 像 MapInfo 的图例窗口) ; style 3: 产生带全高标题栏的窗口。后两种方式,都不能使窗口图形窗口最大和最小化,这给用户的操作带来不便,同时也不符合 Windows 系统风格。因此本系统采用 style 1 模式。

MapInfo 允许在 VB 的窗体上显示图形,使用命令:

“Set Next document parent”& Form1. hWnd &“style 1”

Form1 是 VB 中的一个用来显示图形的窗体。在 VB 环境里打开 MapInfo 的地图和数据表格。但还存在一些问题,当 VB 窗口最大化时,MapInfo 图形不能重画,即当用户改变地图窗口大小时,MapInfo 并不会依据新窗口的大小自动重新设置地图内容以添满窗口。为此必须利用 Windows API 函数 MoveWindow 编写代码来实现,使每一次窗体的大小变化时,地图均重画。

( 3) 报表输出

通过读取数据库中存储的评价信息,按照相应的格式调用到相应的报表位置,生成报表,如图 7. 9 所示。关键点是读取数据库和打印,下面是读取数据库及打印代码:

图 7. 9 报表输出打印界面

Straql = ”select* from pingjia where name = ”’& text1. text &’””

ExecuteSql( Strsql)

Me. PrintForm

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式