?? 021.htm
字號(hào):
HelpContext<font face="宋體" lang="ZH-CN">的值為零,對(duì)話框中將不出現(xiàn)幫助按鈕。</p>
<p> 參數(shù)</font>PInitInfo<font face="宋體" lang="ZH-CN">是一個(gè)無(wú)類型指針,該指針指向一個(gè)包含初始化</font>OLE
<font face="宋體" lang="ZH-CN">部件信息的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。</font>InsertOLEObjectDlg<font
face="宋體" lang="ZH-CN">修改這個(gè)指針以指向一個(gè)有效的數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)包含了對(duì)話框列表中被選擇的</font>OLE
<font face="宋體" lang="ZH-CN">對(duì)象初始化信息。當(dāng)該指針被使用后,應(yīng)調(diào)用</font>ReleaseOLEInitInfo<font
face="宋體" lang="ZH-CN">過(guò)程釋放初始化信息所占用的內(nèi)存。</p>
<p> 當(dāng)用戶選擇</font>OK <font face="宋體" lang="ZH-CN">按鈕關(guān)閉插入對(duì)象對(duì)話框,</font>InsertOLEObjectDlg
<font face="宋體" lang="ZH-CN">返回真值,并把</font> PInitInfo<font face="宋體"
lang="ZH-CN">指向包含</font>OLE<font face="宋體" lang="ZH-CN">對(duì)象的初始化信息的數(shù)據(jù)結(jié)構(gòu)。 </p>
</font><p>8.3.2.2 <font face="宋體" lang="ZH-CN">初始化</font>OLE<font face="宋體"
lang="ZH-CN">包容器部件 </p>
<p> 為了使</font>OLE<font face="宋體" lang="ZH-CN">包容器部件包含</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象,必須對(duì)部件進(jìn)行初始化。</font> <font
face="宋體" lang="ZH-CN">初始化主要是定義部件的</font>OLE<font face="宋體"
lang="ZH-CN">類。如果定義了</font>OLE<font face="宋體" lang="ZH-CN">文件和</font>OLE<font
face="宋體" lang="ZH-CN">項(xiàng)目,初始化完成后,</font>OLE <font face="宋體"
lang="ZH-CN">應(yīng)用程序部件將包含</font>OLE<font face="宋體" lang="ZH-CN">對(duì)象。</p>
<p> 調(diào)用</font>InsertOLEObjetDlg<font face="宋體" lang="ZH-CN">函數(shù)可在其參數(shù)</font>PInitInfo<font
face="宋體" lang="ZH-CN">獲得關(guān)于</font>OLE<font face="宋體" lang="ZH-CN">對(duì)象初始化的信息時(shí),把它傳遞給</font>OLE<font
face="宋體" lang="ZH-CN">包容器部件的</font>PInitInfo<font face="宋體"
lang="ZH-CN">屬性,</font>OLE<font face="宋體" lang="ZH-CN">包容部件的</font>ObjClass,ObjDoc,ObjItem<font
face="宋體" lang="ZH-CN">屬性將被自動(dòng)定義。</p>
<p> 初始化完成后,</font>OLE<font face="宋體" lang="ZH-CN">對(duì)象被擊活。</font>OLE<font
face="宋體" lang="ZH-CN">服務(wù)器將獲得控制,用戶可通過(guò)</font>OLE<font
face="宋體" lang="ZH-CN">服務(wù)器對(duì)</font>OLE<font face="宋體" lang="ZH-CN">對(duì)象進(jìn)行編輯。當(dāng)程序凍結(jié)</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象,</font>OLE<font face="宋體" lang="ZH-CN">包容器部件將包含一幅圖像或位圖代表</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象。定義</font>OLE<font face="宋體" lang="ZH-CN">包容器部件的</font>AutoActive<font
face="宋體" lang="ZH-CN">屬性可重新激活</font>OLE<font face="宋體" lang="ZH-CN">對(duì)象,缺省情況下,雙擊</font>OLE<font
face="宋體" lang="ZH-CN">包容器部件可擊活</font>OLE<font face="宋體"
lang="ZH-CN">對(duì)象。</p>
<p> 例程中初始</font>OLE<font face="宋體" lang="ZH-CN">對(duì)象的代碼如下:
</p>
</font><p>procedure TOLEObjectForm.InitializeOLEObject(Info: Pointer);</p>
<p>begin</p>
<p>OLEContainer.PInitInfo := Info;</p>
<p>ReleaseOLEInitInfo(Info)</p>
<p>end;</p>
<font face="宋體" lang="ZH-CN"><p> 該過(guò)程先將初始化指針傳給</font>OLE<font
face="宋體" lang="ZH-CN">包容器部件的</font>PInitInfo<font face="宋體"
lang="ZH-CN">屬性,而后釋放其內(nèi)存空間。</p>
<p> 當(dāng)用戶單擊例程中的“編輯</font> | <font face="宋體" lang="ZH-CN">插入”菜單項(xiàng),將彈出插入對(duì)象對(duì)話框,選擇對(duì)象類型后,</font>
OLE<font face="宋體" lang="ZH-CN">對(duì)象被激活,該過(guò)程的代碼如下: </p>
<p> </font> procedure TOLEObjectForm.InsertObject1Click(Sender: TObject);</p>
<p>var</p>
<p>Info: Pointer;</p>
<p>begin</p>
<p>if InsertOLEObjectDlg(OLEFrameForm, 0, Info) then</p>
<p>InitializeOLEObject(Info);</p>
<p>end;</p>
<p>8.3.3 <font face="宋體" lang="ZH-CN">凍結(jié)</font>OLE<font face="宋體" lang="ZH-CN">對(duì)象 </p>
<p> 如果</font>OLE<font face="宋體" lang="ZH-CN">對(duì)象是</font>OLE 1.0<font
face="宋體" lang="ZH-CN">服務(wù)器創(chuàng)建,對(duì)象將在</font>OLE<font face="宋體"
lang="ZH-CN">服務(wù)器中被擊活,焦點(diǎn)和控制移到</font>OLE<font face="宋體"
lang="ZH-CN">服務(wù)器中。要凍結(jié)一個(gè)由</font>OLE 1.0<font face="宋體"
lang="ZH-CN">創(chuàng)建的對(duì)象選擇</font>"File | Exit"<font face="宋體"
lang="ZH-CN">菜單項(xiàng)。</p>
<p> 如果</font>OLE 2.0<font face="宋體" lang="ZH-CN">服務(wù)器支持本地激活,激活</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象后</font>OLE<font face="宋體" lang="ZH-CN">服務(wù)器將進(jìn)行菜單融合,并轉(zhuǎn)換工具條和狀態(tài)條。要凍結(jié)對(duì)象,只需在應(yīng)用程序窗體中異于</font>OLE<font
face="宋體" lang="ZH-CN">包容器部件的任何地方單擊鼠</p>
<p>標(biāo)鍵即可。</p>
<p> 另一種凍結(jié)對(duì)象的方法是把</font>OLE<font face="宋體" lang="ZH-CN">包容器部件的</font>Active<font
face="宋體" lang="ZH-CN">屬性設(shè)置成假值。在例程中,“對(duì)象</font>|<font
face="宋體" lang="ZH-CN">凍結(jié)”菜單項(xiàng)實(shí)現(xiàn)凍結(jié)功能。代碼如下: </p>
<p> </font> procedure TOLEObjectForm.Deactivate1Click(Sender: TObject);</p>
<p>begin</p>
<p>OLEContainer.Active := False</p>
<p>end; </p>
<p>8.3.4 <font face="宋體" lang="ZH-CN">粘貼</font>OLE<font face="宋體" lang="ZH-CN">對(duì)象 </p>
<p> 一些</font>OLE<font face="宋體" lang="ZH-CN">服務(wù)器允許用戶把</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象復(fù)制到剪貼板,如果一個(gè)</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象復(fù)制到剪貼板上,</font>OLE<font face="宋體"
lang="ZH-CN">應(yīng)用程序可通過(guò)初始化</font>OLE<font face="宋體" lang="ZH-CN">包容器部件來(lái)粘貼</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象。 </p>
</font><p><font face="宋體" lang="ZH-CN">8.3.4.1 粘貼對(duì)話框</font></p>
<p><font face="宋體" lang="ZH-CN"> 把</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象粘貼到</font>OLE<font face="宋體" lang="ZH-CN">包容器部件,要使用粘貼對(duì)話框,</font>Delphi
<font face="宋體" lang="ZH-CN">中沒(méi)有粘貼對(duì)話框部件,但可用</font>PasteSpecialDlg<font
face="宋體" lang="ZH-CN">函數(shù)顯示粘貼對(duì)話框。</font></p>
<font face="宋體" lang="ZH-CN"><p> </font>PasteSpecialDlg <font face="宋體"
lang="ZH-CN">函數(shù)聲明如下: </p>
<p> </font> function PasteSpecialDlg(Form :TForm;Const First:arrang; HelpConcert:
THelpCOntext;var Forrmat : Word; var Hardle : THanlle var PInitInfo <font face="宋體"
lang="ZH-CN">:</font>Point ) : Boolean; <font face="宋體" lang="ZH-CN"> </font></p>
<p>PasteSpecialDlg<font face="宋體" lang="ZH-CN">參數(shù)定義如下:</p>
<p> 參數(shù)</font>Form<font face="宋體" lang="ZH-CN">是擁有粘貼對(duì)話框的窗體,應(yīng)把包含</font>OLE<font
face="宋體" lang="ZH-CN">包容器部件的窗體名字傳遞給</font>Form<font
face="宋體" lang="ZH-CN">。</font></p>
<p><font face="宋體" lang="ZH-CN"> 參數(shù)</font>Format<font
face="宋體" lang="ZH-CN">是注冊(cè)對(duì)象格式的數(shù)組,每組格式是</font>BOLEFormat<font
face="宋體" lang="ZH-CN">類型的數(shù)組成員。例如應(yīng)用程序可注冊(cè)兩種對(duì)象格式。為嵌入對(duì)象注冊(cè)</font>FEmbedClipFmt
<font face="宋體" lang="ZH-CN">,為鏈接對(duì)象注冊(cè)</font>FlinkClipFmt<font
face="宋體" lang="ZH-CN">。</font></p>
<p>BOLEFormat <font face="宋體" lang="ZH-CN">聲明如下: </p>
<p> </font>BOLEFormat<font face="宋體" lang="ZH-CN">:</font> Record</p>
<p>fmtID : Word;</p>
<p>fmtName : array[0..31] of char;</p>
<p>fmtResultName : array[0..31] of char;</p>
<p>fmtMediun : BOleMedium;</p>
<p>fmIsLInkble : Bool;</p>
<p>end; </p>
<p> fmtID<font face="宋體" lang="ZH-CN">是對(duì)象的剪貼板格式</font>ID<font
face="宋體" lang="ZH-CN">號(hào),</font>fmtID <font face="宋體" lang="ZH-CN">可以是標(biāo)準(zhǔn)的剪貼板格式:</font>CF_TEXT,CF_BIFMAP<font
face="宋體" lang="ZH-CN">。使用</font>OLE <font face="宋體" lang="ZH-CN">對(duì)象時(shí),</font>
<font face="宋體" lang="ZH-CN">需注冊(cè)新的剪貼板格式來(lái)處理</font>OLE <font
face="宋體" lang="ZH-CN">對(duì)象。</font>Windows<font face="宋體" lang="ZH-CN">的</font>API<font
face="宋體" lang="ZH-CN">中</font> <font face="宋體" lang="ZH-CN">的</font>RegisterClipbordFormat<font
face="宋體" lang="ZH-CN">函數(shù)注冊(cè)格式。</font></p>
<p> fmtName<font face="宋體" lang="ZH-CN">表示是對(duì)象的名字,用以定義出現(xiàn)在粘貼對(duì)話框中列表框</font>
<font face="宋體" lang="ZH-CN">內(nèi)的對(duì)象名稱。在例程中,把“%</font>S<font
face="宋體" lang="ZH-CN">”匹配給</font>fmtName<font face="宋體" lang="ZH-CN">,</font>OLE<font
face="宋體" lang="ZH-CN">服務(wù)器自動(dòng)地把格式化的名字代替“%</font>S<font
face="宋體" lang="ZH-CN">”參數(shù)。例如,如果</font>OLE<font face="宋體"
lang="ZH-CN">服務(wù)器是畫筆,在程序運(yùn)行時(shí)“</font>Paintbrush Picture Object<font
face="宋體" lang="ZH-CN">”將代替“%</font>S<font face="宋體" lang="ZH-CN">”。</p>
<p> </font>fmtResultName<font face="宋體" lang="ZH-CN">,定義出現(xiàn)在粘貼對(duì)話框中結(jié)果檢查框內(nèi)的名字。在例程中,</font>
<font face="宋體" lang="ZH-CN">把“%</font>S<font face="宋體" lang="ZH-CN">”傳給了</font>fmtResultName<font
face="宋體" lang="ZH-CN">。</font>OLE<font face="宋體" lang="ZH-CN">服務(wù)器自動(dòng)地把格式結(jié)果名稱代替“%</font>S<font
face="宋體" lang="ZH-CN">”參數(shù)。例如,如果</font>OLE<font face="宋體"
lang="ZH-CN">服務(wù)器是畫筆,程序運(yùn)行時(shí)“</font>Paintbrush Picture<font
face="宋體" lang="ZH-CN">”將代替“%</font>S<font face="宋體" lang="ZH-CN">”。</p>
<p> </font>fmtMedium<font face="宋體" lang="ZH-CN">是</font>BOLEMedium<font
face="宋體" lang="ZH-CN">類型,是</font>Windows<font face="宋體" lang="ZH-CN">決定對(duì)象格式的數(shù)據(jù)類型。例如,</font>OLE
<font face="宋體" lang="ZH-CN">聯(lián)</p>
<p>接對(duì)象的格式是</font>BOLE_MED_STREAM<font face="宋體" lang="ZH-CN">。</font>OLE<font
face="宋體" lang="ZH-CN">嵌入對(duì)象的格式是</font>BOLE_MED_STORAGE<font
face="宋體" lang="ZH-CN">。</font>BOLEMedium<font face="宋體" lang="ZH-CN">函數(shù)可計(jì)算出需要的</font>BOLEMedium<font
face="宋體" lang="ZH-CN">類型。</p>
<p> </font>fmtIsLinkale<font face="宋體" lang="ZH-CN">決定對(duì)象格式是否可聯(lián)連。聯(lián)連對(duì)象的</font>fmtIsLinkable<font
face="宋體" lang="ZH-CN">為真值。嵌入對(duì)象的</font>fmtIsLinkable<font
face="宋體" lang="ZH-CN">為假值。</p>
<p> 參數(shù)</font>HelpContext <font face="宋體" lang="ZH-CN">為粘貼對(duì)話框定義在線幫助。如果應(yīng)用程序沒(méi)有在線幫助,</font>HelpContext<font
face="宋體" lang="ZH-CN">的值為零,對(duì)話框中將不出現(xiàn)幫助按鈕。</p>
<p> 參數(shù)</font>Form<font face="宋體" lang="ZH-CN">用以定義剪粘板上的格式,是由</font>PasteSpecialDlg<font
face="宋體" lang="ZH-CN">函數(shù)進(jìn)行修改。因?yàn)槭褂谜迟N對(duì)話框時(shí),應(yīng)用程序并不知道剪貼板的格式。因而用</font>Format<font
face="宋體" lang="ZH-CN">來(lái)處理剪貼板的數(shù)據(jù)。在本章例程中。</font>
PasteSpecialDlg <font face="宋體" lang="ZH-CN">函數(shù)把</font>format <font
face="宋體" lang="ZH-CN">變量修改成</font>FEmbedClipFmt <font face="宋體"
lang="ZH-CN">或</font>FLinkClipFmt<font face="宋體" lang="ZH-CN">格式,這兩種格式是在主窗體的</font>OnCreate<font
face="宋體" lang="ZH-CN">事件中定義的。如果剪貼板上的數(shù)據(jù)不是</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象,</font>Format<font face="宋體" lang="ZH-CN">將被修改成其它類型的格式,如</font>CF_TEXT<font
face="宋體" lang="ZH-CN">等。</p>
<p> 參數(shù)</font>Landle<font face="宋體" lang="ZH-CN">定義剪貼板上的數(shù)據(jù)句柄。由</font>PasteSpecialDlg<font
face="宋體" lang="ZH-CN">函數(shù)進(jìn)行修改。</font> <font face="宋體" lang="ZH-CN">當(dāng)剪貼板的數(shù)據(jù)類型不是</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象時(shí),需用</font>Handle<font face="宋體" lang="ZH-CN">參數(shù)訪問(wèn)剪貼板數(shù)據(jù)。</font>Handle<font
face="宋體" lang="ZH-CN">是句柄類型。</p>
<p> 參數(shù)</font>PInitInfo<font face="宋體" lang="ZH-CN">是一個(gè)指向</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象初始化結(jié)構(gòu)的指針。前面在講述初始化</font>OLE<font
face="宋體" lang="ZH-CN">應(yīng)用程序部件時(shí)也用到了這種指針。</font>PasteSpecialDlg<font
face="宋體" lang="ZH-CN">函數(shù)將修改</font>PInitInfo<font face="宋體" lang="ZH-CN">指針以使其指向一個(gè)有效的數(shù)據(jù)結(jié)構(gòu)。該結(jié)構(gòu)包括了粘貼對(duì)話框中被選中的</font>OLE<font
face="宋體" lang="ZH-CN">對(duì)象的初始化信息。</p>
<p> 下面介紹粘貼對(duì)話框中的部件。</p>
<p> ●</font> <font face="宋體" lang="ZH-CN">將剪貼板上的數(shù)據(jù)插入</font>OLE<font
face="宋體" lang="ZH-CN">應(yīng)用程序,以實(shí)現(xiàn)對(duì)象嵌入,須選擇</font>"Paste"<font
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -