人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

第8章 對象鏈接與嵌入(二)

第8章 對象鏈接與嵌入(二)

更新時間:2022-07-12 文章作者:未知 信息來源:網絡 閱讀次數:

8.3.5.2 在應用程序中釋放OLE對象 

  當一個對象釋放到一個窗體,該窗體發生OnDragDrop 事件。該對象定義為TDragDropEvent方法中的Source參數,而TDragDropEvent 方法是用來處理OnDragDrop事件”。 如果Source 是一個OLE 對象, 那么它是TOLEDropNotify 對象的派生類型。 TOLEDropNotify對象有一個與OLE包容器部件PInitInfo屬性相對應的PIniInfo屬性。 如果一個OLE對象被釋放。PInitInfo指向OLE對象的初始化信息結構。要實現釋放功能。只需將TOLEDropNotify的PInitInfo屬性賦給OLE包容器部件的PInitInfo屬性。

  以下為處理OnDragDrop事件的代碼: 

  procedure TOLEFrameForm.FormDragDrop(Sender, Source: TObject; X,

  Y: Integer);

  var

  NewChild: TOLEObjectForm;

  begin

  if Source is TOLEDropNotify then

  begin

  NewChild := CreateChild;

  with Source as TOLEDropNotify do

  NewChild.OLEContainer.PInitInfo := PInitInfo

  end

  end; 

  注意不要用ReleaseOLEInitInfo釋放分配給PInitInfo屬性的內存。Delphi自動釋放這塊內存。 

  8.3.6 文件中的OLE對象 

  在OLE應用程序中,要保存對OLE對象的修改,需將對象數據保存在文件中。 如果對象是鏈接的數據,Delphi將自動的保存在源文件中。當對象被修改時,文件中的數據自動修改。 如果對象是嵌入的,數據貯存在應用程序程序的窗體。要保存對嵌入對象的修改, 應用程序應把數據保存在特殊的OLE文件中。如果要對已存文件的對象進行編輯,應用程序必須從文件中裝入OLE對象。

  OLE包容器部件的SaveToFile方法可保存對象: 

  OleCntainer1.SaveToFile('C: \SALEs.OLE'); 

  OLE包容器部件的loadFromFile方法可把文件中的對象裝入OLE包容器部件。 

  OleContainer1.loadFromFile('C:\SALEs.OLE')

  本章例程使用了保存對話框和打開對話框來實現運行狀態的對象保存和對象裝入。

  在OLEObjectForm窗體加入保存對話框部件和打開對話框部件。其主要屬性如表8.4: 

  表8.4 保存對話框的屬性及取值:

  ━━━━━━━━━━━━━━━━━━━━━━━━

  屬性        值

  ────────────────────────

  Name SaveAsDialog

  DefaultExit ole

  FileName .OLE

  Filter OLE files (*.OLE)|*.OLE

  ━━━━━━━━━━━━━━━━━━━━━━━━ 

  表8.5 打開對話框的屬性及取值

  ━━━━━━━━━━━━━━━━━━━━━━━━━

  屬性        取值

  ────────────────────────

  Name OpenDialog

  DefaultExit ole

  FileName .OLE

  Filter OLE files (*.OLE)|*.OLE

  ━━━━━━━━━━━━━━━━━━━━━━━━━ 

  用戶單擊“文件|保存”菜單項實現OLE對象的保存。代碼如下: 

  procedure TOLEObjectForm.SaveAs1Click(Sender: TObject);

  begin

  if SaveAsDialog.Execute then

  OLEContainer.SaveToFile(SaveAsDialog.Filename)

  end; 

  用戶單擊“文件|打開”菜單項實現對象文件裝入: 

  procedure TOLEFrameForm.Open1Click(Sender: TObject);

  var

  NewChild: TOLEObjectForm;

  begin

  f OpenDialog.Execute then

  begin

  NewChild := CreateChild;

  NewChild.OLEContainer.LoadFromFile(OpenDialog.FileName)

  end

  end;

   8.4 OLE自動化 

  OLE自動化是Windows應用程序操縱另一個程序的一種機制。OLE 2.0提供了一種方法來集成應用程序,這就是應用程序之間的命令操作。

  利用OLE 2.0,程序員可以定義一組命令,使它們進入到其它程序中。這些命令可帶參數。看起來很象應用程序在調用函數或過程一樣。采用上述辦法, 可以在人不參與的情況下,就能使得兩個應用程序的相互作用。

  被自動化的程序稱作自動化對象或自動化服務器, 操作或自動化其他程序的應用程序稱為自動化控制器或自動化客戶器。

  Delphi2.0完全支持OLE2.0的應用程序自動化,可以用Delphi 2.0編寫自動化控制器和服務

  器。在應用程序之間可編程的潛能是巨大的。用戶可以創建宏或者其它命令, 使得某個應用程序能透過其它應用程序進行工作。已經存在的應用程序的宏語言很容易被擴展,它可以包括一組別的應用程序能夠執行的命令和函數調用。

   現在介紹兩個應用程序,其中MemoEdit.dpr 是多文檔界面的文本編輯器,作為OLE自動化服務器,AutoFrom.dpr是自動化控制器。運行AutoForm前,在Delphi集成開發環境中單擊菜單(run | parameters),Delphi彈出運行參數對話框,如圖8.5,輸入參數后運行狀態如圖8.6。AutoForm窗體的多個按鈕。可對MemoEdit進行操作;如按Creat按鈕,MemoEdit產生三個子窗體,如圖8.7,按"AddText",子窗體將出現"This text was added through OLE Automation"的字符串“

[1] [2] [3]  下一頁

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 石门县| 元谋县| 汕尾市| 九寨沟县| 泗水县| 上林县| 井冈山市| 河东区| 霞浦县| 漳浦县| 含山县| 怀柔区| 汉源县| 盐山县| 潮州市| 瓦房店市| 乐山市| 延吉市| 阳原县| 灵川县| 龙州县| 鲜城| 团风县| 宜城市| 达州市| 桃江县| 封开县| 芦山县| 大竹县| 隆昌县| 南澳县| 北碚区| 昌吉市| 康定县| 贞丰县| 牡丹江市| 高台县| 镇雄县| 秭归县| 海淀区| 东至县|