На этом шаге мы приведем общие сведения об объекте Selection.
Oбъект Selection может обладать свойствами любого выделяемого объекта. В нашем случае выделен текст, поэтому было бы интересно для начала прочитать этот текст. Весь выделенный текст содержится в свойстве Text объекта Selection. Прочитаем этот текст, используя средства Delphi и ссылку W на объект Application. Разместим в нашей форме новую кнопку и напишем следующий фрагмент программы в процедуре обработки ее нажатия.
procedure TForm1.Button3Click(Sender: TObject); //Чтение текста var S: String; begin S:=W.Selection.Text; MessageBox (handle, pchar(S), 'Чтение текста из выделенного фрагмента!',0); end;
Оператор S:=W.Selection.Text; помещает выделенный текст в строковую переменную.
Результат выполнения этой процедуры представлен на рисунке 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; Button3: TButton; procedure Button1Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(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; end.
Для чтения текста из документа можно воспользоваться не только объектом Selection, но и свойствами и полями объекта Range. Например, оператор S:=W.ActiveDocument.Range(l, 15).Text; поместит в переменную S текст с первого по пятнадцатый символ документа. Это справедливо, потому что объект Selection обладает свойствами и методами любых видимых элементов документа, в том числе и свойствами фрагмента текста. Конечно, можно напрямую работать с объектами документа, не выделяя их, но в некоторых случаях просто не обойтись без выделения, а также без свойств и методов объекта Selection.
На следующем шаге мы продолжим знакомиться с объектом Selection.