使用TWordApplication控件控制WORD的问题(封装成一个类)

happy243 2002-06-22 03:43:31
我想写一个WordControl类
内部封装TwordApplication和TwordDocument

主要属性
CurrentDoc:OleVariant;//当前文档的数据 只读 (GetDocData)
CurrentDocIndex:integer;//当前文档索引
CurrentDocName:String; //当前文档名称
DocCount:integer; 当前打开的文档数目
DocsStly::array [0.. DocCount-1] of Char //文档的打开类型;由L:由对象打开 R:由用户手工打开
Document: TwordDocument; //当前文档对象

希望能够实现以下方法

Create:初始化对象,并创建WORD
Destory:释放对象内的所有资源
OpenDoc:打开一个文档
GetDocData:获得指定文档的数据
SaveDocToDisk:保存文档的磁盘
ReplaceTextToDoc:替换文档中的指定信息
WriteTextToDoc: 向文档指定位置添加指定文字
PrintDoc:打印指定文档
RefreshDoc:刷新指定文档


希望各位高手不吝赐教,集思广益,一起来完善
...全文
93 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilovewill 2002-06-23
  • 打赏
  • 举报
回复
UP
happy243 2002-06-22
  • 打赏
  • 举报
回复
我先写点吧,感觉效果不大好

unit WordControl;

interface

uses
Classes, SysUtils, Variants, Word2000, Office2000;

type
TWordControl = class
private
FCurrentDocIndex: Integer;
FCurrentDocName: String;
FDocCount: Integer;
FDocument: TWordDocument;
protected
FWordApplication: TWordApplication;
FWordDocument: TWordDocument;
public
FDocsStyle: array of Char;
//文档的打开类型 L :由对象打开 R: 由应用程序打开

constructor Create(shown: Boolean = True); //是否显式调用,默认为是
destructor Destroy; override;

function GetDocData(): OleVariant;
function OpenDoc(ADocName:WideString): Integer; overload; //打开外部文件
function OpenDoc(ADocName:WideString ;ADocData: OleVariant): Integer; overload; //打开数据库文件
function SaveDocToDisk(ADocName: WideString): Integer;
function ReplaceTextToDoc(AdocName,AOldText,ANewText:String): Boolean;
procedure PrintDoc(); //打印当前活动文档
procedure PrintViewDoc(); //打印预览当前活动文档
procedure RefreshDoc(); //刷新文档


published
property CurrentDoc: OleVariant read GetDocData; //获得当前文档的内容
property CurrentDocIndex: Integer read FCurrentDocIndex; //当前文档索引
property CurrentDocName: String read FCurrentDocName; //当前文档名称
property DocCount: Integer read FDocCount; //当前打开的文档数目
property Document: TWordDocument read FDocument;
//当前的文档对象,此外是为方便实际应用中进一步的对文档的控制要求。
//property DocsStyle: array of char read FDocsStyle;
end;

implementation

{ TWordControl }

constructor TWordControl.Create(shown: Boolean);
//var
// Template, NewTemplate, ItemIndex: OleVariant;
begin
inherited Create;
FWordApplication := TWordApplication.Create(nil);
FWordDocument := TWordDocument.Create(nil);
// FWordApplication.AutoQuit := True;
FWordApplication.Visible := shown;
FDocCount := 0;
end;

destructor TWordControl.Destroy;
begin
if Assigned(FWordApplication) then
FWordApplication.Free;
if Assigned(FWordDocument) then
FWordDocument.Free;
inherited;
end;

function TWordControl.GetDocData: OleVariant;
begin
Result := Variant(FWordDocument.Content as IDispatch);
end;

function TWordControl.OpenDoc(ADocName: WideString): Integer;
var
FileName,i : OleVariant;
begin
FileName := ADocName;
FDocCount := FDocCount + 1;
i := FDocCount;
FWordApplication.Documents.Open(FileName,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
FWordDocument.ConnectTo(FWordApplication.Documents.Item(i));
Result := 0;
end;

function TWordControl.OpenDoc(ADocName: WideString;
ADocData: OleVariant): Integer;
begin
// FWordDocument.Content := (ADocData as IDispatch);
Result := 0;
end;

procedure TWordControl.PrintDoc();
var
i: OleVariant;
begin
FWordDocument.PrintOut;
end;

procedure TWordControl.PrintViewDoc();
begin
FWordDocument.PrintPreview;
end;

procedure TWordControl.RefreshDoc;
begin
FWordDocument.Reload;
{ i := FDocCount;
FWordDocument.Disconnect;
FWordDocument.ConnectTo(FWordApplication.Documents.Item(i)); }
end;

function TWordControl.ReplaceTextToDoc(AdocName, AOldText,
ANewText: String): Boolean;
var
FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike,
MatchAllWordForms, _Forward, Wrap, Format, ReplaceWith, Replace: OleVariant;
begin
FindText := AOldText;
MatchCase := False;
MatchWholeWord := False;
MatchWildcards := False;
MatchSoundsLike := False;
MatchAllWordForms := False;
_Forward := True;
Wrap := wdFindContinue;
Format := False;
ReplaceWith := ANewText;
Replace := wdReplaceAll;

Result := FWordDocument.Content.Find.Execute(FindText, MatchCase, MatchWholeWord,
MatchWildcards, MatchSoundsLike, MatchAllWordForms,
_Forward, Wrap, Format, ReplaceWith,
Replace, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;

function TWordControl.SaveDocToDisk(ADocName: WideString): Integer;
var
SaveChanges: OleVariant;
FileName: OleVariant;
begin
SaveChanges := wdSaveChanges;
FileName := ADocName;
//FWordApplication.Quit(SaveChanges);
FWordDocument.SaveAs(FileName);
FWordDocument.Close(SaveChanges);
//FWordApplication.Visible := False;
//FDocCount := FDocCount - 1;
Result := 0;
end;



end.
happy243 2002-06-22
  • 打赏
  • 举报
回复
UP

5,927

社区成员

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

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