Создание простого документа. Выделение текста

   
На этом шаге мы рассмотрим способы выделения фрагмента текста.

   
На 47 шаге мы говорили, что для работы с текстом используется объект Range,
принадлежащий объекту-документу. Там мы рассмотрели методы объекта Range, предназначенные для вставки
фрагментов текста в начало или конец или в определенную позицию документа. Так можно создавать простой текст.
Но чтобы создавать сложные документы с определенной структурой, заполняемой при формировании документа,
требуются методы, позволяющие выделять фрагменты и работать с ними. Также необходимы функции поиска
фрагментов и подстановки текста, методы для перемещения курсора в начало, конец или определенную позицию
документа. Все эти методы реализованы в объектах Range и Selection. Selection - объект,
ассоциированный с выделенным в данный момент времени объектом. Выделенным объектом может быть не только
фрагмент текста, но и ячейки таблиц, таблицы целиком, надписи, рисунки и т. д. Исходя из этого, объект Selection
может обладать свойствами любого визуального объекта, входящего в документ, и даже свойствами самого документа
(если он выделен полностью). Но сейчас нас интересует только текст, и мы будем рассматривать Selection только применительно к нему.

   
Для того чтобы получить доступ к выделенному объекту, необходимо выделить весь текст документа или его фрагмент.
Выделим фрагмент текста. Для этого можно использовать метод Select объекта Range. Рассмотрим
два способа использования этого метода.

  • Первый способ выделения фрагмента текста в документе.
    var 
       MyRange: variant;
       st, ed: integer;
    .    .     .     .
        MyRange:=W.ActiveDocument.Range(st, ed); 
        MyRange.Select;
    
  • Второй способ выделения фрагмента текста в документе.
      var 
        st, ed: integer;
    .    .     .     .
        W.ActiveDocument.Range(st, ed).Select;
    
  •    
    Результаты применения этих способов абсолютно идентичны и основаны н функции Range(a, b), возвращающей усеченный объект
    Range. Иногда удобно использовать первый способ, особенно если в дальнейшем предполагается работа с усеченным объектом.

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

    procedure TForm1.Button2Click(Sender: TObject);
    //Выделение текста
    begin
     W.ActiveDocument.Range(1,15).Select;
    end;
    

       
    Откроем любой документ и вызовем эту процедуру, нажав кнопку. Результат ее выполнения отображен на рисунке 1.


    Рис.1. Результат работы приложения

       
    Полный тест приложения приведен ниже:

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComObj, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        CheckBox1: TCheckBox;
        OpenDialog1: TOpenDialog;
        Button4: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure CheckBox1Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    var
      W:Variant;
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      W:=CreateOleObject('Word.Application');
    end;
    
    procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
      W.Visible:=CheckBox1.Checked;
    end;
    
    procedure TForm1.Button4Click(Sender: TObject);
    //Открытие документа
    begin
      if OpenDialog1.Execute then
          W.Documents.Open(OpenDialog1.FileName);
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    //Выделение текста
    begin
     W.ActiveDocument.Range(1,15).Select;
    end;
    
    end.
    

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

       
    Таким образом, мы получили объект Selection. Пусть он содержит только текст, но мы уже можем
    исследовать методы и свойства этого объекта.

       
    На следующем шаге мы рассмотрим объект Selection.



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

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