unit UWord1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, OleServer, Word97, Word2000;

type
  TForm1 = class(TForm)
    RGAlighn: TRadioGroup;
    RGFont: TRadioGroup;
    Memo1: TMemo;
    Edit1: TEdit;
    BInDoc: TButton;
    BPreview: TButton;
    BPrint: TButton;
    BSave: TButton;
    Image1: TImage;
    BNew: TButton;
    BOpen: TButton;
    BWord: TButton;
    procedure BWordClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BNewClick(Sender: TObject);
    procedure BInDocClick(Sender: TObject);
    procedure BSaveClick(Sender: TObject);
    procedure BPrintClick(Sender: TObject);
    procedure BPreviewClick(Sender: TObject);
    procedure BOpenClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  WordApplication1: TWordApplication;
  WordDocument1: TWordDocument;
  WordFont1: TWordFont;
  WordParagraphFormat1: TWordParagraphFormat;

implementation

{$R *.DFM}

uses Clipbrd,OleCtrls{Word_97_SRVR};

procedure Connect;
{Проверка наличия открытого документа}
begin
  if WordApplication1.Documents.Count = 0
   then begin
    Application.MessageBox('В Word нет открытого документа',
                           'Команда не выполнена',
                           MB_OK + MB_ICONEXCLAMATION);
    Abort;
   end;
{Соединение WordDocument1 с активным документом}
  WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
{Делаются доступными кнопки работы с документом}
  Form1.BInDoc.Enabled:=true;
  Form1.BPreview.Enabled:=true;
  Form1.BPrint.Enabled:=true;
  Form1.BSave.Enabled:=true;
end;

procedure TForm1.BWordClick(Sender: TObject);
begin
{Word делается видимым}
 WordApplication1.Visible:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 WordApplication1 := TWordApplication.Create(self);
 WordApplication1.ConnectKind := ckNewInstance;
 WordApplication1.AutoQuit := true;
 {Если при начале работы в Word нет ни одного открытого документа,
 то кнопки работы с документом делаются недоступными}
if WordApplication1.Documents.Count = 0
 then begin
  BInDoc.Enabled:=false;
  BPreview.Enabled:=false;
  BPrint.Enabled:=false;
  BSave.Enabled:=false;
 end;
 WordDocument1 := TWordDocument.Create(self);
 WordFont1 := TWordFont.Create(self);
 WordParagraphFormat1 := TWordParagraphFormat.Create(self);
end;

procedure TForm1.BNewClick(Sender: TObject);
begin
{Создание в Word нового документа}
 if(StrToInt(Copy(WordApplication1.Version,0,Pos('.',WordApplication1.Version)-1)))
  < 9
// if (GetVersion >= $80000000)
 then
//для Word 97
  (WordApplication1.Documents as Word97.Documents).Add(EmptyParam,EmptyParam)
 else
//для Word 2000
  (WordApplication1.Documents as Word2000.Documents).Add(EmptyParam,EmptyParam,
                                                         EmptyParam,EmptyParam);
 Connect;
end;

procedure TForm1.BInDocClick(Sender: TObject);
var Direction:OleVariant;
begin
{Занесение в документ информации}
 Connect;
{Пересылка в документ изображения из Image1}
 WordApplication1.Selection.InsertAfter(' ' + #13);
 Clipboard.Assign(Image1.Picture);
 WordApplication1.Selection.Paste;
 WordApplication1.Selection.InsertAfter(' ' + #13);

{Снятие выделения}
 Direction:=wdCollapseEnd;
 WordApplication1.Selection.Collapse(Direction);

 {Включение в документ текста заголовка}
 WordApplication1.Selection.InsertAfter(' ' + #13);
 WordApplication1.Selection.InsertAfter(
    'Уважаемый ' + Edit1.Text +' !'+ #13);
{Установка курсива и выравнивание заголовка по середине}
 WordFont1.ConnectTo(WordApplication1.Selection.Font);
 WordFont1.Italic := 1;
 WordParagraphFormat1.ConnectTo(
                  WordApplication1.Selection.ParagraphFormat);
 WordParagraphFormat1.Alignment := wdAlignParagraphCenter;
{Снятие выделения}
 WordApplication1.Selection.Collapse(Direction);

 WordApplication1.Selection.InsertAfter(' ' + #13);
 WordApplication1.Selection.InsertAfter(Memo1.Text);
 WordApplication1.Selection.InsertAfter(' ' + #13);

{Установка шрифта и выравнивание основного текста}
 WordFont1.ConnectTo(WordApplication1.Selection.Font);
 WordParagraphFormat1.ConnectTo(
                  WordApplication1.Selection.ParagraphFormat);
 if RGFont.ItemIndex > 1
  then WordFont1.Bold := 1
  else WordFont1.Bold := 0;
 if RGFont.ItemIndex mod 2 = 1
  then WordFont1.Italic := 1
  else WordFont1.Italic := 0;

  case RGAlighn.ItemIndex of
   0: WordParagraphFormat1.Alignment := wdAlignParagraphLeft;
   1: WordParagraphFormat1.Alignment := wdAlignParagraphRight;
   2: WordParagraphFormat1.Alignment := wdAlignParagraphCenter;
   3: WordParagraphFormat1.Alignment := wdAlignParagraphJustify;
  end;
{Снятие выделения}
 WordApplication1.Selection.Collapse(Direction);
 {Включение в документ текста заключительной строки}
 WordApplication1.Selection.InsertAfter('С уважением');
{Установка курсива и выравнивание строки по середине}
 WordFont1.ConnectTo(WordApplication1.Selection.Font);
 WordFont1.Italic := 1;
 WordParagraphFormat1.ConnectTo(
                  WordApplication1.Selection.ParagraphFormat);
 WordParagraphFormat1.Alignment := wdAlignParagraphCenter;
{Снятие выделения}
 WordApplication1.Selection.Collapse(Direction);
end;

procedure TForm1.BSaveClick(Sender: TObject);
var Dial: OleVariant;
begin
{Диалог открытия файла}
 Connect;
 Dial:=wdDialogFileSaveAs;
 WordApplication1.Dialogs.Item(Dial).Show(EmptyParam);
end;

procedure TForm1.BPrintClick(Sender: TObject);
{Печать}
var Dial: OleVariant;
begin
 Connect;
 WordApplication1.Visible:=true;
 Dial:=wdDialogFilePrint;
 WordApplication1.Dialogs.Item(Dial).Show(EmptyParam);
end;

procedure TForm1.BPreviewClick(Sender: TObject);
begin
{Предварительный просмотр}
 Connect;
 WordDocument1.PrintPreview;
 WordApplication1.Visible:=true;
end;

procedure TForm1.BOpenClick(Sender: TObject);
{Открытие файла}
var Dial: OleVariant;
begin
 WordApplication1.Visible := true;
 Dial:=wdDialogFileOpen;
 if WordApplication1.Dialogs.Item(Dial).Show(EmptyParam) = -1
  then Connect;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 WordApplication1.Free;
 WordDocument1.Free;
 WordFont1.Free;
 WordParagraphFormat1.Free;
end;

end.
