<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > OLE自動(dòng)化技術(shù)在Delphi與MapInfo集成地圖開(kāi)發(fā)中

OLE自動(dòng)化技術(shù)在Delphi與MapInfo集成地圖開(kāi)發(fā)中

作者: 時(shí)間:2011-04-07 來(lái)源:網(wǎng)絡(luò ) 收藏

(2) 應用程序中 窗口
Ole 對象建立后,后臺 成功啟動(dòng),可以使用該對象的Do 方法向
發(fā)送命令,如:
Olemapinfo.do(’set application window ’+winhand);
Olemapinfo.do(’set next document parent’+winhand+’style l’);//重定位MapInfo 文件窗口其中,還可用來(lái)重定位其他特殊窗口或圖例,可采用 MapBasic 的”setwindow”語(yǔ)句;
“style1”也可以為“style2”或“style3”,它表明所創(chuàng )建窗口的類(lèi)型。
完成上述設置,就可以在客戶(hù)程序中打開(kāi) MapInfo 文件了,如:
Olemapinfo.do (‘open table”city.tab”’);
Olemapinfo.do (‘map from city ’);//打開(kāi)MapInfo 表直接調用MapInfo 菜單或按鈕命令對窗口進(jìn)行操作,只需調用MapInfo 的
RunMenuCommand 方法,從而保留有標準的MapInfo 按鈕的功能,大大減少了重新編程的
難度而輕松實(shí)現MapInfo 的基本功能。具體語(yǔ)句如下:
Olemapinfo.runmenucommand(1705);//放大
Olemapinfo.runmenucommand(1706);//縮小
Olemapinfo.runmenucommand(1702);//漫游
(3) 終止MapInfo 程序
在調用 的CreateOleObject0 函數來(lái)創(chuàng )建一個(gè)新的MapInfo 事件時(shí),在釋放該對象
變量時(shí),該MapInfo 事件就終止了,當該對象變量為局域變量時(shí), 當退出局域過(guò)程時(shí),該
MapInfo 事件就被釋放了,若為全局變量時(shí),必將其賦值為”Unassigned”才能得以釋放。語(yǔ)
句如下:Olemapinfo:=Unassigned;//釋放全局變量,終止MapInfo程序Application.Terminate;//終止 程序
3.3 Delphi 中MapInfo CallBack 的實(shí)現
通過(guò)對程序的設置,可以使MapInfo 能自動(dòng)地向客戶(hù)程序發(fā)送信息,這種類(lèi)型的標志信息,即事件導致MapInfo 調用客戶(hù)程序,這種消息稱(chēng)之為回調。

本文引用地址:http://dyxdggzs.com/article/162202.htm

要使用回調,客戶(hù)端程序必須能充當 服務(wù)器,而利用Delphi 能很輕易實(shí)現。
其實(shí)現原理如圖2:

圖 2 Delphi 中實(shí)現MapInfo 的callback 的原理圖
Fig.2 The schematic diagram of realizing callback of MapInfo in Delphi
要實(shí)現 Maplnfo 的CallBack,一般有以下幾個(gè)步驟:
1)創(chuàng )建一個(gè)類(lèi),定義若干 方法(Method)。如果要得到MapInfo 的狀態(tài)欄上的內容,
則創(chuàng )建SetStatusText 方法(帶一個(gè)字符串參數);如果要取得發(fā)生變化的窗口的ID 號,
則創(chuàng )建Windowcontentschanged 方法(帶一個(gè)整形參數);
2)為在1)中定義的類(lèi)創(chuàng )建一個(gè)對象;
3)在確認MapInfo 已經(jīng)啟動(dòng)后,調用MapInfo 的SetCallBack 方法,將 對象
注冊MapInfo 所發(fā)送消息的“接收器”中;
4)自定義菜單或按鈕,通過(guò)這些菜單或按鈕來(lái)調用在1)中定義的方法。
當 MapInfo 中發(fā)生一個(gè)事件時(shí),MapInfo 就會(huì )將相應的信息組織成一定的形式,以方法
的參數方式傳遞到客戶(hù)應用程序。在這些方法的內部,程序員可以對這些信息進(jìn)行處理,提
取所需的信息。以自定義客戶(hù)程序的狀態(tài)欄為例,回調的使用方法如下:
1)建一個(gè)類(lèi),定義SetStatusText 方法。此方法帶一個(gè)WideString 類(lèi)型的參數StatusText。
這個(gè)參數是MapInfo 向客戶(hù)程序傳遞過(guò)來(lái)的。
在 Delphi6.0 中選擇File|New|ActiveX|Automation Object,通過(guò)啟動(dòng)Automation
Object 向導打開(kāi)“Type Library”編輯器來(lái)實(shí)現。這里假設創(chuàng )建的類(lèi)名為T(mén)myCallBack。
2)應用程序窗體中添加狀態(tài)欄。
3)使用第一步中定義的類(lèi)創(chuàng )建一個(gè)對象。
varCallBack := TMyCallBack.Create;
4)調用自動(dòng)OLE 對象的SetCallBack 方法傳遞參數。
oleMapInfo.SetCallback(varCallBack As IMyCallBack);
5)在SetStatusText 方法中處理由MapInfo 傳遞的StatusText 參數,控制狀態(tài)欄的顯示。
procedure TMyCallBack.SetStatusText(const StatusText: WideString);
begin MainForm.StatusBar1.Panels[0].Text := StatusText;
//MainForm 是容納地圖組件的窗體,StatusBar1 是添加狀態(tài)欄的缺省名,panel,用于顯
示MapInfo 的狀態(tài)欄上的內容;
End;
4 結束語(yǔ)
利用 OLE 自動(dòng)化, 通過(guò) Delphi 實(shí)現了MapInfo 的二次,充分發(fā)揮了Delphi
編程工具強大的數據庫編程能力和MapInfo Professional 的圖形處理能力。而在過(guò)程中,
兩者是相互獨立的,Delphi 可以很方便地并不需做任何改動(dòng)地調用MapBasic 代碼,實(shí)現通
過(guò)簡(jiǎn)單的OLE 自動(dòng)化提交控制命令來(lái)完成MapInfo Professional 的功能和效果,取得很
好的應用效果。同時(shí),在進(jìn)行MapInfo 消息回調處理方法上,也可利用OLE 自動(dòng)化來(lái)
MapInfo Professional 的自動(dòng)回調消息。

pid控制相關(guān)文章:pid控制原理



上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>