unit word;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WordXP, OleServer, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
RichEdit1: TRichEdit;
WordDocument1: TWordDocument;
WordApplication1: TWordApplication;
WordFont1: TWordFont;
WordParagraphFormat1: TWordParagraphFormat;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
procedure EnterText;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//连接Word COm服务,新建一个Word文件,并向这个文件中写入指定格式的内容
procedure TForm1.Button1Click(Sender: TObject);
begin
WordApplication1.Connect;
WordApplication1.Visible := True;
//新建一个Word文件夹
WordDocument1.ConnectTo(WordApplication1.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam));
EnterText;//向新建文档中添加指定内容
end;
procedure TForm1.EnterText;
var
S: WordSelection;
begin
S:= WordApplication1.Selection;
WordFont1.ConnectTo(S.Font);
S.TypeText('程序创建的新文件(页标题)');
S.TypeParagraph;
S.TypeText('COM服务器(页的小标题)');
S.TypeParagraph;
//加入一个书签,后面粘贴时用到
WordDocument1.Bookmarks.Add('FirstPara',EmptyParam);
S.TypeText('内容:这是个示例程序,用于介绍COM服务组件的使用');
S.TypeText('Delphi7的联机帮助中没有介绍这个组件页中的组件的使用方法');
S.TypeText('甚至没有基本的');
WordFont1.Italic := wdToggle;
S.TypeText('希望这本书,及本程序对大家有所帮助');
S.TypeText('更多的资料,可以通过Google在网上搜索');
S.TypeParagraph;
end;
//将richedit中的内容插入到程序新建的WORD文件中
procedure TForm1.Button2Click(Sender: TObject);
var
BKMK: Range;
BMName,Formal: OleVariant;
begin
RichEdit1.SelectAll; //将框中内容全部选中
RichEdit1.CopyToClipboard;//将选定的内容拷贝到系统剪贴板中
RichEdit1.SelStart := RichEdit1.SelLength;
//将剪贴板中的内容粘贴到FirstPara书签处
BMName := 'FirstPara';
Formal := wdPasteRTF;
BKMK := WordDocument1.Bookmarks.Item(BMName).Range;
BKMK.PasteSpecial(EmptyParam,EmptyParam,EmptyParam,EmptyParam,Formal,EmptyParam,EmptyParam);
end;
//改变新建文件中的内容和格式和保存Word文件
procedure TForm1.Button3Click(Sender: TObject);
var
Body: Range;
HowFar,Extend: OleVariant;
begin
WordApplication1.ScreenUpdating := False;
try
//改变头(标题)的格式
WordParagraphFormat1.ConnectTo(WordDocument1.Paragraphs.Item(1).Format);
WordFont1.ConnectTo(WordDocument1.Paragraphs.Item(1).Range.Font);
WordParagraphFormat1.Alignment := wdAlignParagraphCenter;//设置段的对齐方式
WordParagraphFormat1.SpaceAfter := 24;
WordParagraphFormat1.Borders.Item(LongWord(wdBorderTop)).LineStyle := wdLineStyleSingle;
WordParagraphFormat1.Borders.Item(LongWord(wdBorderBottom)).LineStyle := wdLineStyleDouble;
WordFont1.Size := 36;
WordFont1.Name := 'Arial';
WordFont1.Bold := integer(True);
//改变后面一个段(页的小标题)的格式
WordParagraphFormat1.ConnectTo(WordDocument1.Paragraphs.Item(2).Format);
WordFont1.ConnectTo(WordDocument1.Paragraphs.Item(2).Range.Font);
WordParagraphFormat1.SpaceAfter := 12;
WordFont1.Size := 16;
WordFont1.Italic := integer(True);
WordFont1.Bold := integer(True);
//改变其他内容的当前格式,该部分可能包括多个段
Body := WordDocument1.Paragraphs.Item(3).Range;
HowFar := wdStory;
Extend := wdExtend;
//Body.Endof(HowFar.Extend);
WordParagraphFormat1.ConnectTo(BOdy.paragraphFormat);
WordFont1.ConnectTo(Body.Font);//改变字体
WordParagraphFormat1.FirstLineIndent := 24;
WordParagraphFormat1.LineSpacing := WordFont1.Size*1.2;
finally
WordApplication1.ScreenUpdating := True;
end;
end;
//首先通过对话框获得保存路径及文件名,然后保存
procedure TForm1.Button4Click(Sender: TObject);
begin
try
WordApplication1.Dialogs.Item(wdDialogFileSaveAs).Show(EmptyParam);
finally
Show;
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
SaveChanges: OleVariant;
begin
SaveChanges:= wdDoNotSaveChanges;
WordApplication1.Quit(SaveChanges);
WordApplication1.Disconnect;//断开与COM服务器的连接
Close;
end;
end.