其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

DELPHI基础教程:对象链接与嵌入(一)[5]


发布日期:2020年10月28日
 
DELPHI基础教程:对象链接与嵌入(一)[5]

BOLEFormat类型定义在BOLEDefs单元中BOLEMediumCalc函数定义在ToCtrl单元因此主窗中的interface部分应加入这两个单元

interface

use…BOLEDefsToCtrl

在粘贴OLE对象前应用程序必须知道在剪贴板中是否有OLE对象

PasteSpecialEnabled函数可判断粘贴对话框是否有效如果剪贴板上有Fmts定义的任何一种格式PasteSpecialEnable将返回真值 粘贴对话框才能成功地调用反之调用粘贴对话框将不发生任何事件

以下代码实现编辑|粘贴菜单项的功能

procedure TOLEObjectFormPasteSpecialClick(Sender: TObject)

var

ClipFmt: Word;

DataHand: THandle;

Info: Pointer;

begin

if PasteSpecialEnabled(Self OLEFrameFormFmts) then

if PasteSpecialDlg(Self OLEFrameFormFmts

ClipFmt DataHand Info) then

InitializeOLEObject(Info)

end;

只有在粘贴对话框有效时编辑|粘贴菜单才有效以下代码实现此功能

procedure TOLEObjectFormEditClick(Sender: TObject)

begin

PasteSpecialEnabled := PasteSpecialEnabled(Self OLEFrameFormFmts)

end;

释放OLE对象

从OLE服务器拖动OLE对象并将其放在OLE应用程序是一种方便的对象链接与嵌入的方法通过拖放操作用户不需要使用插入对话框或粘贴对话框来定义OLE对象而只需用鼠标键从OLE服务器中住OLE对象拖至OLE应用程序松开鼠标键从而实现OLE对象的插入

注册OLE释放目标窗体

为了接收一个释放的OLE对象必须有一个窗体在Windows中注册成OLE释放目标用RegisterFormASOLEDropTarget函数可实现此功能

RegisterFormASOLEDropTarger(Form : TFrom;Const Fmts: array of BOlefrom)

其中Form是OLE对象的释放目标窗体在本章例程中将子窗体传递给Form参数

Fmts是对象格式的数组它是BOLEFormat 类型的数组 所有要释放的数据必须用Fmts数组中相应BOLEFormat元素注册

在本章例程中注册的Fmts 数组与主窗体OnCreate事件 声明的数组相同联接对象格式和嵌入对象格式如果想接收更多类型的释放数据就必须在Fmts数组中加入其它元素例如应用程序要接收释放的文本Fmts需加第三个元素 其fmtId 域为CF_TEXTBOLEMedium域为BOLE_MED_HGLOBL

拖放过程中不需要用BOLEFormat的fmtNamefmtResultName域如果程序只进行拖放操作而不进行对象粘贴可以不初始化两个域

在主窗体的OnCreate事件中可调用RegisterFormAsOLEDropTorget

procedure TOLEFrameFormFormCreate(Sender : TObject)

begin…

Register FormASOleDropTarget(SelfFmts)

end;

返回目录DELPHI基础教程

编辑推荐

Java程序设计培训视频教程

JEE高级框架实战培训视频教程

Visual C++音频/视频技术开发与实战

Oracle索引技术

ORACLEG数据库开发优化指南

Java程序性能优化让你的Java程序更快更稳定

C嵌入式编程设计模式

Android游戏开发实践指南

[] [] [] [] []

               

上一篇:DELPHI基础教程:剪贴板和动态数据交换(二)[1]

下一篇:DELPHI基础教程:对象链接与嵌入(一)[4]