Delphi的OFFICE开发[转]
1.引言
在利用delphi开发应用程序的时候,通常我们要设计出很多各种格式的文档、报表,经常要进行文件的创建、编辑及修改,虽然delphi本身提供了很多设计报表的控件或方法,但是存在明显的不足,比如中文输入,数据格式的控制等操作起来比较麻烦。利用大家都很熟悉的office工具结合开发,能够很好的解决这方面的问题。以下就以delphi为例详细介绍怎么利用office完成各种文档、报表的制作。
2.实现方法
利用delphi和office结合开发主要有以下三种方法:
(1) 通过delphi的控件tolecontainer 将office嵌入,这是最简单的ole嵌入,能够直接将office文档调用,只需要使用tolecontainer.run就可以将office文档直接启动。且这样启动的office文档与delphi程序是一个整体(从界面上看),但是它存在不可克服的缺点,即不能通过delphi控制office文档,也就不能实现将灵活操纵office的目的。
(2) 使用delphi提供的servers控件调用office,使用office的属性,使用delphi的servers控件来操纵office,在编程时delphi能够实现代码提示,总体上看能够较好的实现delphi对office的控制,但是还有一些office的功能不能在delphi中调用(比如自己编写的vba宏代码)。且实现功能时本来在vba代码中可选择参数在delphi调用的时候必须添加,否则,连编译都不能通过。这种方式启动的office与delphi程序分属两个窗体。
(3) 使用createoleobject将启动office,然后以ole方式对office进行控制。这种办法是使用以createoleobjects方式调用office,实际上还是ole,但是这种方式能够真正做到完全控制office文件,能够使用office的所有属性,包括自己编写的vba宏代码。与servers控件和com技术相比,本方法能够真正地使用office的各种属性,和在vba中编写自己的代码基本一样,可以缺省的代码也不需要使用。
3.软件实现
3.1第一种方法:通过delphi的控件tolecontainer 将office嵌入,操作方法如下:
(1) 调用delphi中system页控件tolecontainer实现;
(2) 双击olecontainer,出现如下界面:
(3)这时你可以进行选择了,选择“由文件创建”,选择相应的文档,及就简单的实现了将office文档调入的功能;如下图:
3.2第二种方法:使用delphi提供的servers控件调用office;它使得我们很容易地把office中的应用程序(word, excel, powerpoint, outlook and access等)当作一个com应用服务器进行控制,以word为例,介绍其实现方法:
(1) 调用tworddocument
相关文档:
在项目中,需要做一个日期的提醒功能,挺郁闷的,对日期的计算:
很幸运的是在delphi 中有现有的计算函数,DateUtils单元;
路径:*\Delphi7\Source\Rtl\Common 目录下。
贴出一部分:
function IncYear(const AValue: TDateTime;
const ANumberOfYears: Integer = 1): TDateTime;
// function Inc ......
最近一阵子,总是被一个莫名其妙的bug困扰。自己写的ocx(.net2005)在delphi7中调用,明明没有释放主动释放过内存,却被连续释放了两次。结果,程序退出时就down掉了。当然,这是在debug模式下才会出现,但是exe跑的时候会莫名奇妙的down掉,而且出错往往指向ocx,我想一定和ocx的调用有关。
上网找了purify,boundscheck ......
Delphi
Delphi这是一个windows桌面编程软件,现在版本有很多,主要用的还是Delphi7,7以上的版本都需要装.net
静态调用和动态调用,静态调用就是直接往窗体上托控件,而动态调用就是编写代码调用控件的类实现一些功能。
通常情况下都是这两种方式相结合的使用,随着Delphi的深入,就会发现托控件不是万能的,很多时候都 ......
TreeView由节点构成,建树通过对TreeView.items属性进行操作。Items是一个TTreeNodes对象,这是一个TTreeNode集。
一、针对TTreeNodes,也就是 TreeView.Items,有这些属性:
1、count,节点个数。
2、item[index] ,通过index得到节点。
二、针对TTreeNodes,也就是 TreeView.Items,常用的添加节点的操作有:
Add ......
(一) 使用动态创建的方法
首先创建 Excel 对象,使用ComObj:
var ExcelApp: Variant;
ExcelApp := CreateOleObject( 'Excel.Application' );
1) ......