最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

delphi COM调用

来源:动视网 责编:小OO 时间:2025-09-27 21:14:22
文档

delphi COM调用

在Delphi中使用CreateOleObject方法  对WORD文件进行操作 使用CreateOleObject方法对WORD文档操作具有先天所具备的优势,与delphi所提供的那些控件方式的访问相比,CreateOleObject方法距离WORD核心的操作“更近”,因为它直接使用OFFICE所提供的VBA语言对WORD文档的操作进行编程。以下是我在本机上所做的实验,机器软件配置如下:WindowsXP+delphi7.0+OFFICE2003这个程序很简单,在页面上放置了一个edit和一
推荐度:
导读在Delphi中使用CreateOleObject方法  对WORD文件进行操作 使用CreateOleObject方法对WORD文档操作具有先天所具备的优势,与delphi所提供的那些控件方式的访问相比,CreateOleObject方法距离WORD核心的操作“更近”,因为它直接使用OFFICE所提供的VBA语言对WORD文档的操作进行编程。以下是我在本机上所做的实验,机器软件配置如下:WindowsXP+delphi7.0+OFFICE2003这个程序很简单,在页面上放置了一个edit和一


在Delphi中使用CreateOleObject方法  

对WORD文件进行操作

 

使用CreateOleObject方法对WORD文档操作具有先天所具备的优势,与delphi所提供的那些控件方式的访问相比,CreateOleObject方法距离WORD核心的操作“更近”,因为它直接使用OFFICE所提供的VBA语言对WORD文档的操作进行编程。

以下是我在本机上所做的实验,机器软件配置如下:

Windows XP+delphi7.0+OFFICE 2003

这个程序很简单,在页面上放置了一个edit和一个button,每单击一次按钮,就会自动把edit中的内容添加在后台中的word文档中,程序关闭时文件自动保存在当前程序的主目录中。

unit main;

interface

//如果要使用CreateOleObject的办法对WORD文档进行操作,应该在uses

//语句中加入Comobj声明和WordXP声明

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Comobj, WordXP, Dialogs, StdCtrls;

type

  TForm1 = class(TForm)

    Button1: TButton;

    Edit1: TEdit;

    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

//    procedure Button2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

  //把这两个变量声明为全局变量

  FWord: Variant;

  FDoc: Variant;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

FWord.Selection.TypeParagraph;

FWord.Selection.TypeText(Text := form1.Edit1.Text);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

//首先创建对象,如果出现异常就作出提示

try

FWord := CreateOleObject('Word.Application');

//WORD程序的执行是否可见,值为False时程序在后台执行

FWord.Visible := False;

except

ShowMessage('创建word对象失败!');

Exit;

end;

//先在打开的Word中创建一个新的页面,然后在其中键入"Hello,"+回车+"World!"

try

FDoc := FWord.Documents.Add;

FWord.Selection.TypeText(Text := 'Hello,');

FWord.Selection.TypeParagraph;

FWord.Selection.TypeText(Text := 'World! ');

except

on e: Exception do

ShowMessage(e.Message);

end;

end;

//在程序关闭时把文件内容保存到当前目录中,并以test.doc命名

//同时关闭WORD程序

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

FDoc.SaveAs(ExtractFilePath(application.ExeName) +'test.doc');

FWord.Quit; 

FWord := Unassigned;

end;

end.

此外,对OFFICE其他文件的操作都比较类似,不在赘述。通过对WORD文件中更复杂的VBA宏的引用,这个方法还可以完成更复杂的文档操作。

元旦闲来无事,学习一下DELPHI怎样编写COM组件.结果一试才发现问题多多,要么是找不到接口,要么是找不到方法.查了很多资料,发现说的都不清楚.现在把我所学到的和大家分享一下,希望新学的人能少走弯路.

         1、什么是COM

         COM是微软定的一种组件编写的规范,目的是为了实现组件的重用,不管你是用C、DELPHI、VB什么语言写的,只要遵守这种规范就是COM组件,就能相互之间调用。那这个规范是什么呢,最简单的,就是按规定使用接口,微软定了个IUnkown接口,只要实现了这个接口的类,就可以称为COM组件。在此基础上可以加上自己的接口,实现特定的功能,这就成了有用的COM组件了。

         2、DELPHI中如何创建COM组件

         两个步骤:

         (1)创建一个ActiveX Library,这是个DLL

         (2)创建一个COM Object或者Automation Object,二者选其一,这两者都是COM组件,但是当然还是有区别的,差在调用的方法上,这个后面再说

         3、DELPHI中如何调用COM组件

         两种方法,分别是用接口来调和用名称来调,第一种适用于支持接口的语言,如C、DELPHI,VB就不行了,好处是速度快,因为不用根据名称去查找了,还有开发时编译器能检查,缺点是要导入类型库。第二种适用于所有的语言,好处是不用导入类型了,缺点是调用的速度慢,还有开发时编译器不检查。

          前面说的COM Object只能通过第一种方法调,Automation Object两种方法都可以调。举例如下:

           我创建了一个ActiveX Library,名叫mylib。一个Automation Object,名叫myobj。并且编译注册过了。

         用第一种方法调用时,需要如下操作:在use里加上mylib_TLB类型库(如果不是自己开发的没有TLB可以从DLL导入生成的),代码是var myobj:Imyobj;myobj=Comyobj.create();之后就可以用了。如果有兴趣可以看看类型库的代码里,Comyobj.create里调用了CreateComObject,这函数返回的是IUnkown接口,再用as操作转成你需要的Imyobj接口。

         用第二种方法不需要类型库了,代码是var myobj:variant;myobj=CreateOleObject('mylib.myobj');之后就可以用了,这个方便吧。其实为了实现用名字调用,需要加上IDispatch接口,不过delphi都自动给我们加好了,不用管直接用就行。

文档

delphi COM调用

在Delphi中使用CreateOleObject方法  对WORD文件进行操作 使用CreateOleObject方法对WORD文档操作具有先天所具备的优势,与delphi所提供的那些控件方式的访问相比,CreateOleObject方法距离WORD核心的操作“更近”,因为它直接使用OFFICE所提供的VBA语言对WORD文档的操作进行编程。以下是我在本机上所做的实验,机器软件配置如下:WindowsXP+delphi7.0+OFFICE2003这个程序很简单,在页面上放置了一个edit和一
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top