<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/162202.htm

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

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

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



          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();