前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

PowerBuilder和Maplnfo张冬生的集成应用技术 --《大众科学》2007年第8期 大众科学 订杂志 看杂志 刊社管理 2007年第8期摘录 杂志订阅 父母世界新周刊环球企业家财经南风窗妈咪宝贝0-3岁都市丽人母子健康 正文摘录 如发现有乱码,请点击下面链接浏览原文 PowerBuilder和Maplnfo张冬生的集成应用技术(中国联通大庆分公司黑龙江大庆163716)[摘要]介绍了客户/服务器开发工具PowerBuilder和桌面地图信息系统MapInfo集成开发的基本方法。重点讨论了集成开发中的一些关键技术的实现方法。[关键词]PowerBuilderMapInfoMapBasiC系统集成OLE自动化回调中图分类号:TP3文献标识码:B文章编号:1002—6908(2007)0420052--01PowerBuilder是’个面向对象的用于构造基于客户/N务器(C1ient/Server)数据库应用系统的开发工具,它通过ODBC可同时支持Sysbase、Oracle、Infonnix、SOLServer等多种关系数据库,具有强大的数据库应用程序开发功能,尤其是它提供的如数据窗口(DataWindow)等工具,使其能够更加方便有效地访问与操纵数据库。MapInfo是由美国MapInfo公司推出的地理信息系统开发平台,其核心包括MapInfoProfesSiona]和MapBasic两个部件。通过MapInfo平台,能把大量信息直观地与地理图形有机联系起来,使枯燥的表格数据可视化,从而极大地方便了数据分析和辅助决策。利用PowerBuilder强大的数据访问与操纵能力fffMapInfo的地图信息管理功能,结合IntegratedMapping技术、OLE自动化技术等,将MapInfo地图集成~PowerBuilder的应用中,可以迅速地开发出具有强大地图处理能力的应用程序,使数据库中繁杂抽象的数据快速、准确、灵活地显示于电子地图之上,将数据可视化,实现空间数据和属性数据的有机结合。一、开发框架使用PowerBuilder和MapInfo集成开发技术所开发的应用程序,称为集成的地图应用程序(IntegratedMappingApplication)。在集成的地图应用程序中,以客户/N务器的开发模式,使用PowerBuilder开发的应用程序称为客户程序。客户程序运行在前台,通过OLE调用在后台运行的作为OLE自动化服务器的Mapinfo。在集成的地图应用程序中,根据Maplnfo提供的IntegratedMapping接口,在PowerBuilder客户程序中使用OutboundOLEAutomation(输出OLE自动化)技术,将MapInfo的地图窗口集成到客户程序中,从而使客户程序具备地图处理能力。客户程序使用MaplnfoOLE自动化对象、MapBasicOLE自动化对象的有关属性和方法,通过MapInfoOLE自动化服务器对集成的地图窗口进行控制。=、建立PowerBuilder客户程序和MaplnfoOLE服务器的连接建立PowerBuilder客户程序和MapInfoOI』F服务器的连接在原理上足:在PowerBuilder开发的客户程序中,通过使用OutboundOLEAutomation技术实现客户程序和MapInfoH~务器的连接,借助OLE调用MapInfo~务器。具体实现上是:在包含地图窗口的框架窗口的Open事件中添加代码,创建一个新的OLEObject,而将MapInfo作为这个新的OLEObject的OLE服务器。要调用MapInfo~务,则需调用cDnnectToNewobject()函数并传递OLEProgrammableObject的程序标识,E~MapInfo.Application。三、将地图窗口集成到PowerBuilder应用程序中要将MapInfo的地图窗口集成~UPowerBuilder开发的客户程序中,必须在客户程序中为MapInfo中的应用窗口重新指定父窗口,并指定一个Picture控件作为集成的地图窗口的父窗口。可以使用OLE自动化对象的Do方法实现上述功能。四、实现回调在PowerBuilder的客户程序中,是通过OLE自动化对象对集成的地图窗口进行控制,如图2所示。当客户程序在地图窗口进行有关的操作后(例如使用某个自定义工具在地图窗口上单击某个地图对象时),对应的事件只传递给MapInfo~务器,而不直接传递给客户程序,为了在客户程序中对事件进行处理,必须采用回调技术。由于在PowerBuilder中不能定义公共的回调类,因此必须编写一个在MapInfo~务器中运行的MapBasic应用程序,用来将回调信息反馈给PowerBuilder客户程序。其实现过程为:首先,在包含集成地图窗口的PowerBuiider应用窗口创建一个用户自定义事件ueSelectionMade,事件ID为pbmCustomOl(=1024)。然后,编写一个在MaplnfoH~务器中运行的MapBasic应用程序,在此应用程序中添加对地图窗口事件进行处理的子程序。当对客户程序中的集成地图窗口进行操作时,MapBasic程序中对应的事件处理程序被触发。在事件处理程序中,可以将要传递给客户程序的信息保存~MapBasic中定义的一个全局变量中,然后使用Win32API函数PostMessage(),以PowerBuilder应用窗口的句柄和该窗口的用户自定义事件的ID为参数,向PowerBuilder客户程序发送消息,这样PowerBuilder客户程序就可以在该窗口的用户自定义事件中处理地图窗口事件了,并且还可以使用MBApplications对象的方法,获取MapBasic全局变量中保存的事件信息。五、充分利用MapBasic应用程序MapBasic是MapInfo提供的用户系统开发工具,它具有对地图对象的管理、对含有地图对象的Maplnfo表的管理等方面的强大功能。在将MapInfo地图集成到PowerBuilder的开发应用中,MapBasic不仅仅能用来实现回调,还可实现其它诸多功能。例如,在开发过程中经常会遇到需要保存地图对象类型的中间结果的问题,而在PowerBuilder中没有与之对应的数据类型,又难以通过MapInfoOLE自动化对象的方法和属性实现等诸如此类的问题,若利用MapBasic应用程序以及使用它的OLE自动化对象MBApplications的方法和属性来解决,可以达到事半功倍之效果。与MapInfoOLE自动化对象相似,MapBasic的OLE自动化对象MBApplications也有自己的D0方法和Eval方法。每当PowerBuiider客户程序调用它们时,MapInfo就会自动调用MapBasic的保留过程RemoteM~;gHandler()或RemoteQueryHandler()过程,并可以在过程中通过Cor~nandlnfo(CMD_INFO_MSG)得到调用Do方法或Eval方法的参数。六、结束语目前,关于MapInfo地图的集成应用大都是利用VB、Vc¨开发的,利用PowerBuilder开发的实际应用却很少,以至很多人认为难以利用PowerBuilder实现对MapInfo的集成开发,就算实现了也难以很好地完成对地图窗口的控制。本文介绍了如何将MapInfo地图集成~PowerBuilder的开发应用中的基本方法,以及其中的一些关键技术。运用此方法开发应用程序,可以充分发挥PowerBuilder强大的数据访问与操纵能力和Maplnfo的地图信息管理功能,迅速地、灵(下转第53页) 阅读此文(图): 点击此处查看原文 更多电子杂志 相关服务 杂志订阅 电子杂志 订阅活动 订阅满800元送价值228元世博风尚拖鞋一双(只有29码、30码、35码、36码),颜色随机。 订阅满1000元送价值268元"OVC V10精品礼盒套装"。 订阅满1200元送价值298元"高档孕妇服"一件。 订阅满1500元送价值398元"高档电脑包"一只。 订阅满3000元送价值5800元"尊皇高尔夫集团高尔夫会员卡"一张。 以上礼品数量有限,送完为止。