其他语言

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

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


发布日期:2018年02月18日
 
DELPHI基础教程:对象链接与嵌入(二)[1]

在应用程序中释放OLE对象

当一个对象释放到一个窗体该窗体发生OnDragDrop 事件该对象定义为TDragDropEvent方法中的Source参数而TDragDropEvent 方法是用来处理OnDragDrop事件 如果Source 是一个OLE 对象 那么它是TOLEDropNotify 对象的派生类型 TOLEDropNotify对象有一个与OLE包容器部件PInitInfo属性相对应的PIniInfo属性 如果一个OLE对象被释放PInitInfo指向OLE对象的初始化信息结构要实现释放功能只需将TOLEDropNotify的PInitInfo属性赋给OLE包容器部件的PInitInfo属性

以下为处理OnDragDrop事件的代码

procedure TOLEFrameFormFormDragDrop(Sender Source: TObject; X

Y: Integer)

var

NewChild: TOLEObjectForm;

begin

if Source is TOLEDropNotify then

begin

NewChild := CreateChild;

with Source as TOLEDropNotify do

NewChildOLEContainerPInitInfo := PInitInfo

end

end;

注意不要用ReleaseOLEInitInfo释放分配给PInitInfo属性的内存Delphi自动释放这块内存

文件中的OLE对象

在OLE应用程序中要保存对OLE对象的修改需将对象数据保存在文件中 如果对象是链接的数据Delphi将自动的保存在源文件中当对象被修改时文件中的数据自动修改 如果对象是嵌入的数据贮存在应用程序程序的窗体要保存对嵌入对象的修改 应用程序应把数据保存在特殊的OLE文件中如果要对已存文件的对象进行编辑应用程序必须从文件中装入OLE对象

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

OleCntainerSaveToFile(C: \SALEsOLE

OLE包容器部件的loadFromFile方法可把文件中的对象装入OLE包容器部件

OleContainerloadFromFile(C:\SALEsOLE

本章例程使用了保存对话框和打开对话框来实现运行状态的对象保存和对象装入

在OLEObjectForm窗体加入保存对话框部件和打开对话框部件其主要属性如表:

保存对话框的属性及取值

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

属性 值

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

Name SaveAsDialog

DefaultExit ole

FileName OLE

Filter OLE files (*OLE)|*OLE

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

打开对话框的属性及取值

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

属性 取值

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

Name OpenDialog

DefaultExit ole

FileName OLE

Filter OLE files (*OLE)|*OLE

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

用户单击文件|保存菜单项实现OLE对象的保存代码如下

procedure TOLEObjectFormSaveAsClick(Sender: TObject)

begin

if SaveAsDialogExecute then

OLEContainerSaveToFile(SaveAsDialogFilename)

end;

用户单击文件|打开菜单项实现对象文件装入

procedure TOLEFrameFormOpenClick(Sender: TObject)

var

NewChild: TOLEObjectForm;

begin

f OpenDialogExecute then

begin

NewChild := CreateChild;

NewChildOLEContainerLoadFromFile(OpenDialogFileName)

end

end;

OLE自动化

OLE自动化是Windows应用程序操纵另一个程序的一种机制OLE 提供了一种方法来集成应用程序这就是应用程序之间的命令操作

[] [] [] []

               

上一篇:DELPHI基础教程:对象链接与嵌入(二)[2]

下一篇:DELPHI基础教程:Delphi拖放编程[2]