在应用程序中释放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 提供了一种方法来集成应用程序这就是应用程序之间的命令操作
[] [] [] []