黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁(yè) 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級(jí) | 職稱(chēng)英語(yǔ) | 商務(wù)英語(yǔ) | 公共英語(yǔ) | 托福 | 雅思 | 專(zhuān)四專(zhuān)八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語(yǔ) | 成人英語(yǔ)三級(jí) | 申碩英語(yǔ) | 攻碩英語(yǔ) | 職稱(chēng)日語(yǔ) | 日語(yǔ)學(xué)習(xí) | 法語(yǔ) | 德語(yǔ) | 韓語(yǔ)
計(jì)算機(jī)等級(jí)考試 | 軟件水平考試 | 職稱(chēng)計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問(wèn) | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會(huì)工作者 | 外銷(xiāo)員 | 國(guó)際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書(shū)資格 | 心理咨詢師考試 | 出版專(zhuān)業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格考試會(huì)計(jì)證) | 經(jīng)濟(jì)師 | 會(huì)計(jì)職稱(chēng) | 注冊(cè)會(huì)計(jì)師 | 審計(jì)師 | 注冊(cè)稅務(wù)師
注冊(cè)資產(chǎn)評(píng)估師 | 高級(jí)會(huì)計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國(guó)際內(nèi)審師
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評(píng)價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評(píng)價(jià)師 | 電氣工程師 | 注冊(cè)測(cè)繪師 | 注冊(cè)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語(yǔ)學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

2011年等考二級(jí)Delphi講義:對(duì)象鏈接與嵌入

對(duì)象鏈接和嵌入(Object Linking and Embeding)是一組服務(wù)功能,它提供了一種用源于不同應(yīng)用程序的信息創(chuàng)建復(fù)合文檔的強(qiáng)有力方法。

  8.3.2.2 初始化OLE包容器部件

  為了使OLE包容器部件包含OLE對(duì)象,必須對(duì)部件進(jìn)行初始化。 初始化主要是定義部件的OLE類(lèi)。如果定義了OLE文件和OLE項(xiàng)目,初始化完成后,OLE 應(yīng)用程序部件將包含OLE對(duì)象。

  調(diào)用InsertOLEObjetDlg函數(shù)可在其參數(shù)PInitInfo獲得關(guān)于OLE對(duì)象初始化的信息時(shí),把它傳遞給OLE包容器部件的PInitInfo屬性,OLE包容部件的ObjClass,ObjDoc,ObjItem屬性將被自動(dòng)定義。

  初始化完成后,OLE對(duì)象被擊活。OLE服務(wù)器將獲得控制,用戶可通過(guò)OLE服務(wù)器對(duì)OLE對(duì)象進(jìn)行編輯。當(dāng)程序凍結(jié)OLE對(duì)象,OLE包容器部件將包含一幅圖像或位圖代表OLE對(duì)象。定義OLE包容器部件的AutoActive屬性可重新激活OLE對(duì)象,缺省情況下,雙擊OLE包容器部件可擊活OLE對(duì)象。

  例程中初始OLE對(duì)象的代碼如下:

  procedure TOLEObjectForm.InitializeOLEObject(Info: Pointer);

  begin

  OLEContainer.PInitInfo := Info;

  ReleaseOLEInitInfo(Info)

  end;

  該過(guò)程先將初始化指針傳給OLE包容器部件的PInitInfo屬性,而后釋放其內(nèi)存空間。

  當(dāng)用戶單擊例程中的“編輯 | 插入”菜單項(xiàng),將彈出插入對(duì)象對(duì)話框,選擇對(duì)象類(lèi)型后, OLE對(duì)象被激活,該過(guò)程的代碼如下:

  procedure TOLEObjectForm.InsertObject1Click(Sender: TObject);

  var

  Info: Pointer;

  begin

  if InsertOLEObjectDlg(OLEFrameForm, 0, Info) then

  InitializeOLEObject(Info);

  end;

  8.3.3 凍結(jié)OLE對(duì)象

  如果OLE對(duì)象是OLE 1.0服務(wù)器創(chuàng)建,對(duì)象將在OLE服務(wù)器中被擊活,焦點(diǎn)和控制移到OLE服務(wù)器中。要凍結(jié)一個(gè)由OLE 1.0創(chuàng)建的對(duì)象選擇"File | Exit"菜單項(xiàng)。

  如果OLE 2.0服務(wù)器支持本地激活,激活OLE對(duì)象后OLE服務(wù)器將進(jìn)行菜單融合,并轉(zhuǎn)換工具條和狀態(tài)條。要凍結(jié)對(duì)象,只需在應(yīng)用程序窗體中異于OLE包容器部件的任何地方單擊鼠

  標(biāo)鍵即可。

  另一種凍結(jié)對(duì)象的方法是把OLE包容器部件的Active屬性設(shè)置成假值。在例程中,“對(duì)象|凍結(jié)”菜單項(xiàng)實(shí)現(xiàn)凍結(jié)功能。代碼如下:

  procedure TOLEObjectForm.Deactivate1Click(Sender: TObject);

  begin

  OLEContainer.Active := False

  end;

  8.3.4 粘貼OLE對(duì)象

  一些OLE服務(wù)器允許用戶把OLE對(duì)象復(fù)制到剪貼板,如果一個(gè)OLE對(duì)象復(fù)制到剪貼板上,OLE應(yīng)用程序可通過(guò)初始化OLE包容器部件來(lái)粘貼OLE對(duì)象。

  8.3.4.1 粘貼對(duì)話框

  把OLE對(duì)象粘貼到OLE包容器部件,要使用粘貼對(duì)話框,Delphi 中沒(méi)有粘貼對(duì)話框部件,但可用PasteSpecialDlg函數(shù)顯示粘貼對(duì)話框。

  PasteSpecialDlg 函數(shù)聲明如下:

  function PasteSpecialDlg(Form :TForm;Const First:arrang; HelpConcert: THelpCOntext;var Forrmat : Word; var Hardle : THanlle var PInitInfo :Point ) : Boolean;

  PasteSpecialDlg參數(shù)定義如下:

  參數(shù)Form是擁有粘貼對(duì)話框的窗體,應(yīng)把包含OLE包容器部件的窗體名字傳遞給Form。

  參數(shù)Format是注冊(cè)對(duì)象格式的數(shù)組,每組格式是BOLEFormat類(lèi)型的數(shù)組成員。例如應(yīng)用程序可注冊(cè)兩種對(duì)象格式。為嵌入對(duì)象注冊(cè)FEmbedClipFmt ,為鏈接對(duì)象注冊(cè)FlinkClipFmt。

  BOLEFormat 聲明如下:

  BOLEFormat: Record

  fmtID : Word;

  fmtName : array[0..31] of char;

  fmtResultName : array[0..31] of char;

  fmtMediun : BOleMedium;

  fmIsLInkble : Bool;

  end;

  fmtID是對(duì)象的剪貼板格式ID號(hào),fmtID 可以是標(biāo)準(zhǔn)的剪貼板格式:CF_TEXT,CF_BIFMAP。使用OLE 對(duì)象時(shí), 需注冊(cè)新的剪貼板格式來(lái)處理OLE 對(duì)象。Windows的API中 的RegisterClipbordFormat函數(shù)注冊(cè)格式。

  fmtName表示是對(duì)象的名字,用以定義出現(xiàn)在粘貼對(duì)話框中列表框 內(nèi)的對(duì)象名稱(chēng)。在例程中,把“%S”匹配給fmtName,OLE服務(wù)器自動(dòng)地把格式化的名字代替“%S”參數(shù)。例如,如果OLE服務(wù)器是畫(huà)筆,在程序運(yùn)行時(shí)“Paintbrush Picture Object”將代替“%S”。

  fmtResultName,定義出現(xiàn)在粘貼對(duì)話框中結(jié)果檢查框內(nèi)的名字。在例程中, 把“%S”傳給了fmtResultName。OLE服務(wù)器自動(dòng)地把格式結(jié)果名稱(chēng)代替“%S”參數(shù)。例如,如果OLE服務(wù)器是畫(huà)筆,程序運(yùn)行時(shí)“Paintbrush Picture”將代替“%S”。

  fmtMedium是BOLEMedium類(lèi)型,是Windows決定對(duì)象格式的數(shù)據(jù)類(lèi)型。例如,OLE 聯(lián)

  接對(duì)象的格式是BOLE_MED_STREAM。OLE嵌入對(duì)象的格式是BOLE_MED_STORAGE。BOLEMedium函數(shù)可計(jì)算出需要的BOLEMedium類(lèi)型。

  fmtIsLinkale決定對(duì)象格式是否可聯(lián)連。聯(lián)連對(duì)象的fmtIsLinkable為真值。嵌入對(duì)象的fmtIsLinkable為假值。

  參數(shù)HelpContext 為粘貼對(duì)話框定義在線幫助。如果應(yīng)用程序沒(méi)有在線幫助,HelpContext的值為零,對(duì)話框中將不出現(xiàn)幫助按鈕。

  參數(shù)Form用以定義剪粘板上的格式,是由PasteSpecialDlg函數(shù)進(jìn)行修改。因?yàn)槭褂谜迟N對(duì)話框時(shí),應(yīng)用程序并不知道剪貼板的格式。因而用Format來(lái)處理剪貼板的數(shù)據(jù)。在本章例程中。 PasteSpecialDlg 函數(shù)把format 變量修改成FEmbedClipFmt 或FLinkClipFmt格式,這兩種格式是在主窗體的OnCreate事件中定義的。如果剪貼板上的數(shù)據(jù)不是OLE對(duì)象,F(xiàn)ormat將被修改成其它類(lèi)型的格式,如CF_TEXT等。

  參數(shù)Landle定義剪貼板上的數(shù)據(jù)句柄。由PasteSpecialDlg函數(shù)進(jìn)行修改。 當(dāng)剪貼板的數(shù)據(jù)類(lèi)型不是OLE對(duì)象時(shí),需用Handle參數(shù)訪問(wèn)剪貼板數(shù)據(jù)。Handle是句柄類(lèi)型。

  參數(shù)PInitInfo是一個(gè)指向OLE對(duì)象初始化結(jié)構(gòu)的指針。前面在講述初始化OLE應(yīng)用程序部件時(shí)也用到了這種指針。PasteSpecialDlg函數(shù)將修改PInitInfo指針以使其指向一個(gè)有效的數(shù)據(jù)結(jié)構(gòu)。該結(jié)構(gòu)包括了粘貼對(duì)話框中被選中的OLE對(duì)象的初始化信息。

  下面介紹粘貼對(duì)話框中的部件。

  ● 將剪貼板上的數(shù)據(jù)插入OLE應(yīng)用程序,以實(shí)現(xiàn)對(duì)象嵌入,須選擇"Paste";

  ● 在OLE服務(wù)器資源文件與OLE應(yīng)用程序之間建立聯(lián)連,以實(shí)現(xiàn)對(duì)象聯(lián)連,須選擇: "Paste Line;

  ● 要將聞連與嵌入的對(duì)象顯示成圖標(biāo),選擇"Display As Icon"。若這個(gè)檢查框被選中,改變圖標(biāo)("Chang Icon")按鈕將顯示通過(guò)這個(gè)按鈕可改變OLE對(duì)象的缺省圖標(biāo)或標(biāo)簽。

  ● 如果數(shù)據(jù)不是注冊(cè)的格式,"Paste","Paste link"選擇鍵將變灰。 用戶無(wú)法從剪貼板上粘貼數(shù)據(jù)。在本章例程中,剪貼板上的數(shù)據(jù)只能是FEmbedClipFmt(嵌入對(duì)象) 和FlinkClipFmt(鏈接對(duì)象)。

  ● 用戶在列表框中選擇數(shù)據(jù)類(lèi)型。有時(shí)數(shù)據(jù)被解釋成多種類(lèi)型。例如在包含OLE服務(wù)器功能的字處理器中把文本復(fù)制到剪貼板中。應(yīng)用程序可以以文本和OLE對(duì)象兩種方式粘貼對(duì)象。列表框中出現(xiàn)的選擇項(xiàng)由OLE服務(wù)器決定。

  用戶在粘貼對(duì)話框中選擇OK按鈕,PasteSpecialDlg返回真值,關(guān)于OLE 應(yīng)用程序的初始化信息貯存在PInitInfo所指向的結(jié)構(gòu)中。

  8.3.4.2 在剪貼板中使用OLE對(duì)象

  要把OLE對(duì)象粘貼到OLE應(yīng)用程序中,必須用Windows的 RegisterClipboardFormat函數(shù)為鏈連對(duì)象、嵌入對(duì)象注冊(cè)兩種新的剪貼板格式。這些格式將在BOLEFormat記錄的fmtIdt域中被用到。

  本章例程中, 程序在OnCreate事件中注冊(cè)O(shè)LE對(duì)象的剪貼板格式,以下代碼是主窗體的OnCreate事件:

  procedure TOLEFrameForm.FormCreate(Sender: TObject);

  begin

  FEmbedClipFmt := RegisterClipboardFormat('Embedded Object');

  FLinkClipFmt := RegisterClipboardFormat('Link Source');

  Fmts[0].fmtId := FEmbedClipFmt;

  Fmts[0].fmtMedium := BOLEMediumCalc(FEmbedClipFmt);

  Fmts[0].fmtIsLinkable := False;

  StrPCopy(Fmts[0].fmtName, '%s');

  StrPCopy(Fmts[0].fmtResultName, '%s');

  Fmts[1].fmtId := FLinkClipFmt;

  Fmts[1].fmtMedium := BOLEMediumCalc(FLinkClipFmt);

  Fmts[1].fmtIsLinkable := True;

  StrPCopy(Fmts[1].fmtName, '%s');

  StrPCopy(Fmts[1].fmtResultName, '%s');

  RegisterFormAsOleDropTarget(Self, Fmts)

  end;

  程序傳給RegistClipBroardFormat函數(shù)一個(gè)描述格式的參數(shù),它返回一個(gè)Word類(lèi)型的值。該值能唯一的辨識(shí)新注冊(cè)的格式。FEmbdeClipFmt,FlinkClipFmt 是TOLEFormat類(lèi)的私有數(shù)據(jù)成員。 聲明如下:

  TYPE

  TOLEForaneForm = Class(TForm)

  …

  private

  FEmbedClipFmt: Word;

  FLinkClipFmt: Word;

  function CreateChild: TOLEObjectForm;

  public

  Fmts: array[0..1] of BOleFormat;

  end;

  在注冊(cè)剪貼板格式后, 還必須定義OLE 格式才能進(jìn)行對(duì)象粘貼。 每種格式定義在BOLEFormat記錄中。 程序中可能注冊(cè)標(biāo)準(zhǔn)剪貼板格式并用這種格式進(jìn)行粘貼。例如:注冊(cè)文本作為粘貼格式,將BOLEFormat記錄為fmtId域定義為CF_TEXT,fmt Medium 域定義為BOLE_MED_HGLOBOL。 BOLEMediumCalc 函數(shù)可以根據(jù)定義的剪貼板格式計(jì)算出fmtMedium值。在本章例程中,程序注冊(cè)了兩種格式,一種是鏈接OLE對(duì)象的格式,另一種是嵌入OLE對(duì)象的格式。

  BOLEFormat類(lèi)型定義在BOLEDefs單元中,BOLEMediumCalc函數(shù)定義在ToCtrl單元。因此主窗中的interface部分應(yīng)加入這兩個(gè)單元。

  interface

  use…,BOLEDefs,ToCtrl,

  在粘貼OLE對(duì)象前,應(yīng)用程序必須知道在剪貼板中是否有OLE對(duì)象。

  PasteSpecialEnabled函數(shù)可判斷粘貼對(duì)話框是否有效。如果剪貼板上有Fmts定義的任何一種格式,PasteSpecialEnable將返回真值, 粘貼對(duì)話框才能成功地調(diào)用。反之調(diào)用粘貼對(duì)話框?qū)⒉话l(fā)生任何事件。

  以下代碼實(shí)現(xiàn)“編輯|粘貼”菜單項(xiàng)的功能:

  procedure TOLEObjectForm.PasteSpecial1Click(Sender: TObject);

  var

  ClipFmt: Word;

  DataHand: THandle;

  Info: Pointer;

  begin

  if PasteSpecialEnabled(Self, OLEFrameForm.Fmts) then

  if PasteSpecialDlg(Self, OLEFrameForm.Fmts, 0,

  ClipFmt, DataHand, Info) then

  InitializeOLEObject(Info)

  end;

  只有在粘貼對(duì)話框有效時(shí)“編輯|粘貼”菜單才有效,以下代碼實(shí)現(xiàn)此功能:

  procedure TOLEObjectForm.Edit1Click(Sender: TObject);

  begin

  PasteSpecial1.Enabled := PasteSpecialEnabled(Self, OLEFrameForm.Fmts)

  end;

  相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專(zhuān)題
       預(yù)告:名師解析2010年9月計(jì)算機(jī)等級(jí)考試試題答案
       2010年9月計(jì)算機(jī)等級(jí)考試成績(jī)查詢時(shí)間及入口
       2010年9月計(jì)算機(jī)等考成績(jī)查詢短信免費(fèi)提醒開(kāi)通
文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
主站蜘蛛池模板: 国产一级片观看 | 国产免费一级视频 | 日本成人在线播放 | 久久www免费人成看片色多多 | 九色欧美 | 欧美一级特黄刺激大片视频 | 国产成人污污网站在线观看 | 国产精品综合色区在线观看 | 亚洲日本va中文字幕在线不卡 | 九九九九在线精品免费视频 | 国产成人在线综合 | 性激烈的欧美三级高清视频 | 成人免费视频网站 | 欧美日韩aa一级视频 | 无边泳池在线观看 | 中文字幕亚洲无线码 | 一本香蕉 | 性放荡一级小说 | 久久精品国产亚洲综合色 | 99re热视频 | 26uuu欧美日本 | 婷婷国产天堂久久综合五月 | 一级黄色免费观看 | 国产在线激情 | 国产高清一级毛片在线人 | 又黄又www | 欧美日韩国产高清一区二区三区 | 看全色黄大色大片免费久久怂 | 色色色色色色网 | 我想看黄色毛片 | 中文在线免费看视频 | 三级在线观看 | 在线观看91精品国产hd | 欧美成人看片一区二区三区尤物 | 欧美巨大xxxx做受高清 | 中文字幕在线免费观看 | 亚洲激情网址 | 无遮挡h肉动漫在线观看日本 | 日韩城人免费 | 人人做 | 男女日批视频在线永久观看 |