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游戏开发实践指南
[] [] [] [] []