Servers组件页中word类组件相关实例

本文介绍了一个使用 Delphi 进行 COM 编程的例子,演示了如何创建并格式化 Word 文档,包括插入文本、设置样式及保存文件等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值