运行期嵌入ole对象

wm 2000-04-24 08:17:00
请各位高手指点:
我在使用TOleContainer组件在运行期嵌入ole对象时(对象为文件),我用了CreateObjectFromFile方法,编译无错,运行时产生EOleError:80030002,我不知是什么问题,请各位多指教!
...全文
223 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wm 2000-04-28
  • 打赏
  • 举报
回复
929:你说的这几种方法我都试过,实现的不是太好。但现在我已经解决了这个问题,我是先用CreateOleObject函数创建Word对象,将数据库中的相应内容用String变量通过对象的Insert方法传递到Word对象中,再用SaveAs方法保存到一个Word的Doc文件中,以后在OLE容器中就可以用CreateObjectFromFile创建该文件的Ole对象了。
929 2000-04-26
  • 打赏
  • 举报
回复
对于TOLECONTAINER,有方法:
procedure LoadFromStream(Stream: TStream);
procedure SaveToStream(Stream: TStream);
对于TBLOBFIELD,也有方法:
procedure LoadFromStream(Stream: TStream);
procedure SaveToStream(Stream: TStream);

比如:
由BLOB中得到字段所存内容后,可将其转为流
var

MS: TMemoryStream;
begin
MS := TMemoryStream.Create;
try
Query1Images.SaveToStream(MS);
Image1.Picture.Bitmap.LoadFromStream(MS);
finally
MS.Free;
end;

end;
也可从文件或由TOLECONTAINER的SAVETOSTREAM来产生流,然后由TBLOBFIELD读入
var

FS: TFileStream;
begin
if not (Query1.State in [dsInsert, dsEdit]) then Query1.Insert;
FS := TFileStream.Create('c:\Windows\Winlogo.bmp', fmOpenRead);
try
Query1Images.LoadFromStream(FS);
finally
FS.Free;
end;
Query1.Post;

end;
wm 2000-04-25
  • 打赏
  • 举报
回复
929:您的回答很有道理,非常感谢!我是Delphi的初学者,我在程序中首先创建了一个文件,然后企图将其嵌入到TOleContainer组件中,出了错误。如您所说,我在运行期创建的文件,该怎样又在运行期将其在机器上注册为一个对象?能否请您教教我这个Delphi
的新手,非常感谢!
929 2000-04-25
  • 打赏
  • 举报
回复
STG_E_FILENOTFOUND = HRESULT($80030002);
{$EXTERNALSYM STG_E_FILENOTFOUND}
此错误代码代表文件未找到。另外再验证一下所用文件是否已在机器上被注册为一个对象。我在试验时,先在设计时由文件创建了一个对象,然后又由代码创建,没问题。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtnrs;

type
TForm1 = class(TForm)
OleContainer1: TOleContainer;
OleContainer2: TOleContainer;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
OleContainer2.CreateObjectFromFile('c:\jing\电子讲稿.ppt',false);
end;

end.
wm 2000-04-25
  • 打赏
  • 举报
回复
929:很抱歉,现在才回复您的帖子。我所遇到的问题是这样的,我想在我的程序中用TOleContainer嵌入一个Word文档对象,可以将数据库的某一Text字段的内容在其中编辑,并可将其编辑后的结果再存回数据库当中。因为我不能直接将Ole对象直接存入数据库中,所以我想用临时文件的形式来中介,先将数据库中该字段的内容存入一个新建的临时文件(该文件是我用FileCreate函数创建的,后缀为 .doc),再将该文件嵌入到TOleContainer中编辑,完成后保存。然后,再从该文件中读取内容存入到数据库的Text字段中。我不知我的这种想法是否可行,能否请您在百忙中给予我帮助,我非常感谢您的热心!谢谢!
929 2000-04-25
  • 打赏
  • 举报
回复
在程序中嵌入对象或链接对象不是很容易的,因为一个对象的显示编辑,都需要一个与之联系的服务器程序(OLE SERVER)来完成,TOLECONTAINER只是一个包含对象的容器,它本身不具备显示编辑对象的能力。想在程序中运用OLE,我想可以做一个能够处理这种文件的SERVER程序出来,并且注册。这时在程序中生成文件就可以当做对象进行处理了
因文件超过20M不能上传,所以拆分为两个文件分次上传 第1章 COM背景知识 1.1 COM的起源 1.1.1 软件业面临的挑战 1.1.2 传统解决方案 1.1.3 面向对象程序设计方法 1.1.4 最终解决方案:组件软件 1.1.5 面向对象的组件模型——COM 1.2 COM的发展历程 1.2.1 COM以前的对象技术:DDE、OLE 1、VBX控件 1.2.2 COM首次亮相:OLE2 1.2.3 Microsoft拥抱Internet:ActiveX 1.2.4 更多的新名词:Windows DNA和COM+ 1.2.5 远程对象:ORBs和DCOM 1.2.6 COM的最新版本:COM+ 1.3 COM技术现状 1.3.1 COM与CORBA 1.3.2 COM与Enterprise Java Beans 1.3.3 Windows之外的COM 小结 第2章 从C++到COM 2.1 C++客户重用C++对象——例程DB 2.1.1 C++对象 2.1.2 客户程序 2.2 将C++对象移进DLL中——例程DB_cppdll 2.2.1 成员函数的引出 2.2.2 内存分配 2.2.3 Unicode/ASCII兼容 2.2.4 例程实现 2.2.4.1 修改接口文件 2.2.4.2 修改对象程序 2.2.4.3 修改客户程序 2.3 C++对象使用抽象基类——例程DB_vtbl 2.3.1 问题:私有数据成员被暴露 2.3.2 解决方案:抽象基类 2.3.2.1 什么是抽象基类(Abstract Base Class) 2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用抽象基类 2.3.4 例程实现 2.3.4.1 修改接口文件 2.3.4.2 修改对象程序 2.3.4.3 修改客户程序 2.4 改由COM库装载C++对象——例程dbalmostcom 2.4.1 COM库 2.4.2 对象创建的标准入口点 2.4.3 标准对象创建API 2.4.4 标准对象注册 2.4.5 例程实现 2.4.5.1 修改接口文件 2.4.5.2 修改对象程序 2.4.5.3 修改客户程序 2.5 将C++对象变成COM对象 2.5.1 引用计数 2.5.2 多接口 2.5.3 IUnknown接口 2.5.4 标准类厂接口:IClassFactory 2.5.5 对象代码的动态卸载 2.5.6 自动注册 2.5.7 例程实现 2.5.7.1 修改接口文件 2.5.7.2 修改对象程序 2.5.7.3 修改客户程序 2.6 为COM对象添加多接口支持 2.6.1 多接口 2.6.2 DEFINE_GUID 2.6.3 例程实现 2.6.3.1 修改接口文件 2.6.3.2 修改对象程序 2.6.3.3 修改客户程序 小结 第3章 COM基础知识 3.1 对象与接口 3.1.1 COM对象 3.1.2 COM接口 3.1.3 IUnknown接口 3.1.3.1 生存控制:AddRef和Release 3.1.3.2 接口查询:QueryInterface 3.1.4 全球唯一标识符GUID 3.1.5 COM接口定义 3.1.6 接口描述语言IDL 3.2 COM应用模型 3.2.1 客户/服务器模型 3.2.2 进程内组件 3.2.3 进程外组件 3.2.4 COM库 3.2.5 HRESULT返回值 3.2.6 COM与注册表 3.3 COM组件 3.3.1 实现类厂对象 3.3.2 类厂对象的创建 3.3.3 实现自动注册 3.3.4 实现自动卸载 3.4 COM客户 3.4.1 COM对象创建函数 3.4.1.1 CoGetClassObject 3.4.1.2 CoCreateInstance 3.4.1.3 CoCreateInstanceEx 3.4.2 如何调用进程内组件 3.4.3 COM客户调用进程外组件 3.5 进一步认识COM 3.5.1 可重用机制:包容和聚合 3.5.2 进程透明性 3.5.3 安全性机制 小结 第4章 COM扩展技术 4.1 可连接对象机制 4.1.1 客户、接收器与可连接对象 4.1.1.1 接收器 4.1.1.2 可连接对象 4.1.1.3 客户 4.1.2 实现可连接对象 4.1.3 实现接收器 4.1.4 建立接收器与连接点的连接 4.1.5 获得出接口的类型信息 4.2 结构化存储 4.2.1 什么叫结构化存储和复合文件 4.2.2 存储对象和IStorage接口 4.2.2.1 IStorage接口 4.2.2.2 获得IStorage指针 4.2.2.3 释放STATSTG内存 4.2.2.4 枚举存储对象中的元
Visual Basic 6编程技术大全 是非常详细和深入的Vb6学习教程,无论对初学者还是有经验的开发人员,都非常有帮助 第一部分基础篇1 第1章 VB6入门1 1.1 集成开发环境1 1.1.1 运行IDE1 1.1.2 选择工程类型1 1.1.3 IDE窗口2 1.1.4 菜单5 1.1.5 工具栏6 1.1.6 Toolbox7 1.2 第一个VB应用程序9 1.2.1 向窗体添加代码9 1.2.2 设置控件的属性10 1.2.3 为控件命名12 1.2.4 移动及重新调整控件尺寸13 1.2.5 设置Tab顺序13 1.2.6 添加代码14 1.2.7 运行和调试程序15 1.2.8 优化示例程序16 1.2.9 准备、编译、运行18 第2章关于窗体20 2.1 通用属性20 2.1.1 Left、Top、Width和Height属性21 2.1.2 ForeColor和BackColor属性21 2.1.3 Font属性23 2.1.4 Caption和Text属性24 2.1.5 Parent和Container属性25 2.1.6 Enabled和Visible属性25 2.1.7 hWnd属性26 2.1.8 TabStop和Tablndex属性26 2.1.9 MousePointer和Mouselcon属性27 2.1.10Tag属性28 2.1.11其他属性28 2.2 通用方法29 2.2.1 Move方法29 2.2.2 Refresh方法30 2.2.3 SetFocus方法30 2.2.4 ZOrder方法31 2.3 通用事件31 2.3.1 Click和DblClick事件31 2.3.2 Change事件32 2.3.3 GotFocus和LostFocus事件33 2.3.4 KeyPress、KeyDown和KeyUp事件33 2.3.5 MouseDown、MouseUp和 MouseMove事件35 2.4 Form对象37 2.4.1基本的Form属性37 2.4.2微调窗体的性能38 2.4.3 Form的生存39 2.4.4 Controls集合43 2.4.5 Screen对象44 2.4.6打印文本45 2.4.7图形方法48 2.4.8 DrawMode属性51 2.4.9 ScaleMode属性54 2.4.10调色板支持56 第3章内部控件58 3.1TextBox控件58 3.1.1 运行时属性59 3.1.2捕获键盘活动60 3.1.3数字的校验例程61 3.1.4 CausesValidation属性和Validate事件63 3.1.5自动跳格字段65 3.1.6格式化文本65 3.1.7多行TextBox控件69 3.2 Label和Frame控件70 3.2.1 Label控件70 3.2.2 Frame控件71 3.3 CommandButton、CheckBox和 OptionButton控件71 3.3.1 CommandButton控件72 3.3.2 CheckBox控件72 3.3.3 OptionButton控件73 3.3.4使用图形化控件73 3.4 ListBox和ComboBox控件74 3.4.1 ListBox控件74 3.4.2 ComboBox控件81 3.5 PictureBox和Image控件83 3.5.1 PictureBox控件83 3.5.2 Image控件86 3.6滚动条控件86 3.7 DriveListBox、DirListBox和FileListBox控件89 3.8其他控件91 3.8.1Timer控件91 3.8.2 Line控件92 3.8.3 Shape控件92 3.8.4 OLE控件92 3.9菜单93 3.9.1运行时访问菜单94 3.9.2弹出式菜单95 3.10控件数组96 3.11共享事件过程97 3.11.1运行时创建控件97 3.11.2迭代控件数组中的项目98 3.11.3菜单项数组98 第4章变量与过程100 4.1变量的作用域和生存100 4.1.1全局变量100 4.1.2模块级的变量101 4.1.3动态局部变量102 4.1.4静态局部变量102 4.2内置数据类型概述103 4.2.1整型数据类型103 4.2.2长整型数据类型104 4.2.3布尔数据类型104 4.2.4字节数据类型104 4.2.5单精度数据类型104 4.2.6双精度数据类型105 4.2.7字符串数据类型105 4.2.8货币数据类型106 4.2.9日数据类型106 4.2.10对象数据类型106 4.2.11变量数据类型107
Visual Basic 6编程技术大全 是非常详细和深入的Vb6学习教程,无论对初学者还是有经验的开发人员,都非常有帮助 第一部分基础篇1 第1章 VB6入门1 1.1 集成开发环境1 1.1.1 运行IDE1 1.1.2 选择工程类型1 1.1.3 IDE窗口2 1.1.4 菜单5 1.1.5 工具栏6 1.1.6 Toolbox7 1.2 第一个VB应用程序9 1.2.1 向窗体添加代码9 1.2.2 设置控件的属性10 1.2.3 为控件命名12 1.2.4 移动及重新调整控件尺寸13 1.2.5 设置Tab顺序13 1.2.6 添加代码14 1.2.7 运行和调试程序15 1.2.8 优化示例程序16 1.2.9 准备、编译、运行18 第2章关于窗体20 2.1 通用属性20 2.1.1 Left、Top、Width和Height属性21 2.1.2 ForeColor和BackColor属性21 2.1.3 Font属性23 2.1.4 Caption和Text属性24 2.1.5 Parent和Container属性25 2.1.6 Enabled和Visible属性25 2.1.7 hWnd属性26 2.1.8 TabStop和Tablndex属性26 2.1.9 MousePointer和Mouselcon属性27 2.1.10Tag属性28 2.1.11其他属性28 2.2 通用方法29 2.2.1 Move方法29 2.2.2 Refresh方法30 2.2.3 SetFocus方法30 2.2.4 ZOrder方法31 2.3 通用事件31 2.3.1 Click和DblClick事件31 2.3.2 Change事件32 2.3.3 GotFocus和LostFocus事件33 2.3.4 KeyPress、KeyDown和KeyUp事件33 2.3.5 MouseDown、MouseUp和 MouseMove事件35 2.4 Form对象37 2.4.1基本的Form属性37 2.4.2微调窗体的性能38 2.4.3 Form的生存39 2.4.4 Controls集合43 2.4.5 Screen对象44 2.4.6打印文本45 2.4.7图形方法48 2.4.8 DrawMode属性51 2.4.9 ScaleMode属性54 2.4.10调色板支持56 第3章内部控件58 3.1TextBox控件58 3.1.1 运行时属性59 3.1.2捕获键盘活动60 3.1.3数字的校验例程61 3.1.4 CausesValidation属性和Validate事件63 3.1.5自动跳格字段65 3.1.6格式化文本65 3.1.7多行TextBox控件69 3.2 Label和Frame控件70 3.2.1 Label控件70 3.2.2 Frame控件71 3.3 CommandButton、CheckBox和 OptionButton控件71 3.3.1 CommandButton控件72 3.3.2 CheckBox控件72 3.3.3 OptionButton控件73 3.3.4使用图形化控件73 3.4 ListBox和ComboBox控件74 3.4.1 ListBox控件74 3.4.2 ComboBox控件81 3.5 PictureBox和Image控件83 3.5.1 PictureBox控件83 3.5.2 Image控件86 3.6滚动条控件86 3.7 DriveListBox、DirListBox和FileListBox控件89 3.8其他控件91 3.8.1Timer控件91 3.8.2 Line控件92 3.8.3 Shape控件92 3.8.4 OLE控件92 3.9菜单93 3.9.1运行时访问菜单94 3.9.2弹出式菜单95 3.10控件数组96 3.11共享事件过程97 3.11.1运行时创建控件97 3.11.2迭代控件数组中的项目98 3.11.3菜单项数组98 第4章变量与过程100 4.1变量的作用域和生存100 4.1.1全局变量100 4.1.2模块级的变量101 4.1.3动态局部变量102 4.1.4静态局部变量102 4.2内置数据类型概述103 4.2.1整型数据类型103 4.2.2长整型数据类型104 4.2.3布尔数据类型104 4.2.4字节数据类型104 4.2.5单精度数据类型104 4.2.6双精度数据类型105 4.2.7字符串数据类型105 4.2.8货币数据类型106 4.2.9日数据类型106 4.2.10对象数据类型106 4.2.11变量数据类型107
ComponentOne Studio for ActiveX 目前包括以下产品: SizerOne 通过这一4合1的构建集合ezai您的应用程序中增加缩放、标签和parsing的功能。 SizerOne是VS-OCX的最新版,包含两个缩放构件,可处理简单和复杂的缩放,一个可创建笔记本型和Outlook型的标签,以及一个用于自动对字符串进行parsie的parsing构件。 其他的功能允许您更快递设计网格和表单、在子控件中增框架、灰度图片等。 True DataControl 在您的桌面和网络应用程序的数据源中指定业务逻辑。 True DataControl 是一个ActiveX 控件,可作为OLE DB/ADO 数据源来创建应用程序。 它不仅仅是数据源,还是一个具备逻辑的数据源—可替换MS ADO 数据控件等标准数据源—允许程序员在数据源中将业务逻辑指定为一套业务规则,从而使应用程序更耐用、可扩展和可管理。 True DBGrid Pro 在您的应用程序中加入强大的数据绑定网格。 True DBGrid Pro (由ComponentOne及以前的APEX 软件公司开发)允许最终用户以列表格式浏览、编辑、添加和删除数据。 True DBGrid Pro 可对数据库的界面进行全面管理,使程序员把精力集中在与应用程序有关的重要任务上。 True DBGrid Pro 还可以通过程序员自己的数据源用于非绑定或存储模式。 True DBInput Pro 收集准确、格式化的用户输入。 True DBInput Pro 集成了8个高质量、面向数据的ActiveX 输入控件和5个可为程序员提供所需工具的对象,以创建企业范围内的互联网/内部网前端数据库应用。 这些强化的控件可替换Visual Basic的文本、日历、屏蔽、编辑框和框架控件来进行数据的输入,并可为金融应用程序增加定制的对象。 True DBList Pro 在您的应用程序中加入多列列表和组合框。 True DBList Pro 是一个由两个面向数据的ActiveX构件套,可为您的应用程序提供耐用的数据访问、数据表示和用户界面功能,使其能像网格一样运行,但却对列表有轻量化的要求。 功能包括对原始OLE DB和 ADO的支持、格式化的预览和打印、多列排序和搜索、导出为HTML等。 ComponentOne WebChart (包括表单) 为动态服务器页(ASP)创建独立于浏览器的动态表单。 True WebChart是一个企业图表工具,允许您开发图表或图形,并作为JPEG或PNG文件应用于任何浏览器。 你还可以将表单用作ActiveX控件,以便让最终用户对图表样式和数据的值进行更改。 True WebChart 具有两个服务器端的图表构件- 1个用于2D图表,另一个用于3D构件。 ASP 的web服务器可进行图表的创建并将完整的图表和图形发送到服务器。 VSFlexGrid Pro 增加灵活的网格,以显示列表数据。 VSFlexGrid Pro是对随Visual Basic附带的MSFlexGrid 的升级,可向您提供全范围的功能,以便为数据库应用程序创建灵活、强大的前端。 用一系列新方法在您的Windows、互联网或内部网项目中对动态数据的显示和表示进行定制化,以进行显示、编辑、格式化、组织、汇总和列表数据的打印。 VSSPELL 为任何Visual Basic 应用程序增加拼写检查和同义词词典功能。 VSSPELL 是一个定制化的库,由vsSpell和 vsThesaurus组成。 只需将控件置于您的表单中,您的最终用户即可立即拥有收录25万多个美国英语单词的VSSPELL字典的功能。 该字典具有为错误单词提供建议的功能,并可根据现有词典创建新的主词典(例如,微软Word),并且可忽略或改正所有错误单词,并且具有创建和维护字典的功能。 VSVIEW (包括典型版本) 可对文本进行自动格式化,以便显示或导出。 VSVIEW 允许您在创建表格时将文本进行多列格式化,包括增加表头、页脚、文本框、边框和文本环绕等。 您可以对图片、嵌入的RTF字符串进行渲染并导出到RTF或HTML中。 您甚至还可以在您的应用程序中增加所见即所得的预览,提供无级缩放、缩略图及页面的并排预览。 用户可完全控制缩放和页面的方向。 ComponentOne Query 可在您的应用程序中加入临时查询功能并可被用户直接使用。 ComponentOne的查询构件是一个基于COM,用于应用程序集成的构件,您的最终用户无需为此学习新的技能。 该构件与强大的查询生成引擎、查询引擎和schema 设计器完全兼容。 功能包括: 支持SQL数据库、 Simple DataSour

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧