На этом шаге мы рассмотрим некоторые свойства и методы объекта Selection.
Рассмотрим некоторые свойства и методы этого объекта, в том числе принадлежащие ему объекты. В таблице 1 перечислены наиболее часто используемые свойства и методы объекта Selection, их типы и краткое описание.
Свойства и методы | Тип | Описание |
---|---|---|
Туре | Число | Тип выделенного объекта (обычный текст Type = wdSelectionNormal = 2) |
StoryType | Число | Тип выделяемого объекта (может быть выделен основной текст, текст в заголовках, комментариях и т. п.) |
Text | Строка | Текстовое содержимое |
Start | Число | Начальная позиция выделенного объекта |
End | Число | Конечная позиция выделенного объекта |
Characters | Коллекция | Символы выделенного объекта, их количество |
ConvertToTable | Метод | Преобразование выделенного текста в таблицу |
Copy | Метод | Копирование текста в буфер обмена |
Paste | Метод | Вставка текста из буфера обмена |
CopyAsPicture | Метод | Копирование выделенного текста (объекта) в буфер обмена с преобразованием его в графический объект в формате BMP |
Cut | Метод | Вырезание выделенного фрагмента текста |
Delete(a, b) | Метод | Удаление выделенного фрагмента текста (вызов без аргументов) или удаление фрагмента из b символов начиная с позиции а |
Find | Объект | Поиск, поиск и замена в документе |
Font | Объект | Шрифт выделенного объекта |
InRange(MyRange) | Метод | Проверка вхождения выделенного объекта в объект MyRange |
InsertAfter | Метод | Вставка текста после объекта Selection |
InsertBefore | Метод | Вставка текста до объекта Selection |
Move(Unit, Count) | Метод | Перемещение объекта Selection в документе (перемещение курсора) |
SetRange(a, b) | Метод | Выделение текста между позициями а и b |
Style | Число | Стиль выделенного текста |
TypeText | Метод | Вставка текста на место выделенного объекта или с позиции курсора |
Words | Коллекция | Слова в выделенном объекте |
Рассмотрим подробнее некоторые свойства объекта Selection.
При работе с текстом требуется уверенность в том, что это именно текст, чтобы не применять методы, свойственные
тексту, к другим объектам, и наоборот. Если применить к выделенному тексту методы, свойственные, например,
ячейкам таблицы, будет получена ошибка выполнения. Определить тип выделенного объекта позволяет свойство
Туре. Если Туре = wdSelectionNormal, это значит, что выделенный объект является текстом, при этом
свойство Text объекта Selection содержит выделенный текст.
Свойства Start и End определяют начальную и конечную позицию (в символах) выделенного
фрагмента текста. Если Selection.Start = Selection.End, то размер выделенного объекта равен нулю, т.е. ничего
не выделено. Но при этом объект Selection все равно существует. Если Selection.Start = Selection.End = 0,
это означает, что курсор находится в начале документа (при условии что наш документ содержит только текст).
Используя свойства Start и End, можно установить курсор в любую позицию документа. Если
Selection.Start <> Selection.End, то это означает, что выделен фрагмент текста между двумя позициями,
значения которых записаны в эти поля. Присваивая им различные значения, можно манипулировать размерами
выделенной области текста. Для примера откроем текст с помощью метода Open коллекции Documents и
установим значения полей Start и End. Вот фрагмент исходного текста программы.
Результат работы приложения изображен на рисунке 1:
Вот полный текст приложения:
procedure TForm1.Button5Click(Sender: TObject);
//Start и End
begin
W.Selection.Start:=13;
W.Selection.End:=20;
end;
Рис.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;
Button3: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(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;
procedure TForm1.Button3Click(Sender: TObject);
//Чтение текста
var
S: String;
begin
S:=W.Selection.Text;
MessageBox (handle, pchar(S), 'Чтение текста из выделенного фрагмента!',0);
end;
procedure TForm1.Button5Click(Sender: TObject);
//Start и End
begin
W.Selection.Start:=13;
W.Selection.End:=20;
end;
end.
Также нетрудно убедиться, что положение курсора будет изменяться при изменении свойств Start и End объекта Selection. Если их значения установить в ноль, то курсор переместится в начало документа, и переместится в конец документа, когда их значения будут равны количеству символов документа. Следующий фрагмент программного кода показывает, как переместить курсор в начало и конец документа.
procedure TForm1.Button6Click(Sender: TObject); //В начало документа begin W.Selection.Start:=W.ActiveDocument.Characters.0; end; procedure TForm1.Button7Click(Sender: TObject); //В конец документа begin W.Selection.End := W.ActiveDocument.Characters.Count; end;
Результат работы приложения изображен на рисунке 2:
Рис.2. Результат работы приложения
Полный текст приложения:
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; Button3: TButton; Button5: TButton; Button6: TButton; Button7: TButton; procedure Button1Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(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; procedure TForm1.Button3Click(Sender: TObject); //Чтение текста var S: String; begin S:=W.Selection.Text; MessageBox (handle, pchar(S), 'Чтение текста из выделенного фрагмента!',0); end; procedure TForm1.Button5Click(Sender: TObject); //Start и End begin W.Selection.Start:=13; W.Selection.End:=20; end; procedure TForm1.Button6Click(Sender: TObject); //В начало документа begin W.Selection.Start:=W.ActiveDocument.Characters.0; end; procedure TForm1.Button7Click(Sender: TObject); //В конец документа begin W.Selection.End := W.ActiveDocument.Characters.Count; end; end.
Манипуляции с полями Start и End - не единственный способ перемещения курсора или выделения объекта.
На следующем шаге мы рассмотрим метод Move объекта Selection.