Кину исходник работы с Word. Можешь от него отталкиваться. И не забывай, что есть F1. 
| Код | 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. | |