Работа с объектом WordBasic. Поиск и редактирование текста в документе Word

   
На этом шаге мы рассмотрим организацию поиска фрагмента текста в документе Word.

   
Рассмотрим несколько простых процедур, позволяющих редактировать текст в документе. Нам потребуются возможности:
перемещения по тексту документа, поиска фрагмента текста, копирования и вставки текста, вставки текста
из буфера обмена.

   
Сначала рассмотрим процедуры, позволяющие перемещаться по тексту документа. Их нужно вызывать перед
выполнением поиска - для позиционирования курсора. Для поиска фрагмента в документе, скорее всего,
дополнительно понадобятся две процедуры - перемещение в начало документа (для того чтобы начать поиск)
и перемещение в конец документа (для добавления новых записей). Процедура StartOfDocument перемещает
курсор в начало документа, а процедура EndOfDocument - в конец документа.
Пример использования этих процедур в среде Delphi выглядит так:

procedure TForm1.Button4Click(Sender: TObject);
//Перемещение курсора в начало документа
begin
  WB.StartOfDocument;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Перемещение курсора в конец документа
begin
  WB.EndOfDocument;
end;

   
После того как мы переместили курсор в начало документа, можно начать поиск фрагмента текста. Поиск текста производит процедура
EditFind(text: string). В случае успешного поиска данная процедура выделяет искомый фрагмент текста. Для
продолжения поиска по документу необходимо повторно вызвать эту процедуру. Чтобы убедиться в том, что искомый
фрагмент существует и был выделен в результате выполнения процедуры поиска, следует вызвать функцию
EditFindFound - она возвращает значение True в результате успешного поиска. Рассмотрим следующий
фрагмент исходного текста:

procedure TForm1.Button6Click(Sender: TObject);
//Поиск фрагмента текста в документе
var
  t: String;
begin
  t:=InputBox('Введем фрагмент текста для поиска','','');
  WB.EditFind(t);
  if WB.EditFindFound then
      ShowMessage('Фрагмент текста '+''''+t+''''+ ' найден.')
  else
      ShowMessage('Фрагмент текста '+''''+t+''''+ ' не найден.')
end;

   
Используя приведенную процедуру, попробуем найти фрагмент текста в документе. Для этого откроем документ и введем искомое слово
(рисунок 1).


Рис.1. Пример работы приложения

   
После того как слово для поиска введено, процедура WB.EditFind(t) выполнит поиск. В случае успеха она
выделит фрагмент текста, а функция WB.EditFindFound возвратит значение True. Когда заданный
текст не найден, то никакой фрагмент не будет выделен, a WB.EditFindFound возвратит значение False.
Если выполнить представленную выше процедуру дважды, то поиск продолжится с теми же параметрами и будет
выделен следующий фрагмент, удовлетворяющий условиям поиска.

   
Вот полный текст приложения.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  WB: Variant;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//Создание объекта WordBasic
begin
 WB:=CreateOleObject('Word.Basic');
end;

procedure TForm1.Button2Click(Sender: TObject);
//Показать окно Word
begin
 WB.AppShow;
end;

procedure TForm1.Button3Click(Sender: TObject);
//Открыть документ Word
begin
  if OpenDialog1.Execute then
     WB.FileOpen(OpenDialog1.FileName);
end;

procedure TForm1.Button4Click(Sender: TObject);
//Перемещение курсора в начало документа
begin
  WB.StartOfDocument;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Перемещение курсора в конец документа
begin
  WB.EndOfDocument;
end;

procedure TForm1.Button6Click(Sender: TObject);
//Поиск фрагмента текста в документе
var
  t: String;
begin
  t:=InputBox('Введем фрагмент текста для поиска','','');
  WB.EditFind(t);
  if WB.EditFindFound then
      ShowMessage('Фрагмент текста '+''''+t+''''+ ' найден.')
  else
      ShowMessage('Фрагмент текста '+''''+t+''''+ ' не найден.')
end;

end.

Текст этого приложения можно взять здесь (6,1 Кб).

   
На следующем шаге мы рассмотрим вставку фрагментов текста в документ Word.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий