Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 14
На сайте нет зарегистрированных пользователей

Пользователей: 13,362
новичок: uvapke
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование процесса обработки заданий на вычислительном центре на GP...
Обработка задач на ЭВМ на GPSS + Пояснительная записка
Моделирование процесса обеспечивающего надежность функционирования АСУ Т...

Объект Selection



Исследуем объект Selection. Как уже сказано, этот объект может обладать
свойствами любого выделяемого объекта. В нашем случае выделен текст,
поэтому было бы интересно для начала прочитать этот текст. Весь выделен-
ный текст содержится в свойстве Text объекта Selection.
Прочитаем этот текст, используя средства Delphi и ссылку W на объект
Application. Разместим в нашей форме новую кнопку и напишем следующий
фрагмент программы в процедуре обработки ее нажатия.
Чтение (импорт) выделенного текста из документа Word
procedure TForml.Button5Click(Sender: TObject);
var eee_:string;
begin
eee_:=W.Selection.Text;
messagebox(handle,pchar(eee_) ,'Чтение текста из выделенного фрагмента!',0);
end;



Оператор eee_:=W.Selection.Text; помещает выделенный текст в строковую
переменную.
Результат выполнения этой процедуры представлен на рис. 6.2.
Для чтения текста из документа можно воспользоваться не только объектом
Selection, но и свойствами и полями объекта Range. Например, оператор
eee_:=W.ActiveDocument.Range(l, 23).Text; поместит в переменную еее_
текст с первого по двадцать третий символ документа. Это справедливо, по-
тому что объект Selection обладает свойствами и методами любых видимых
элементов документа, в том числе и свойствами фрагмента текста. Конечно,
можно напрямую работать с объектами документа, не выделяя их, но в не-
которых случаях просто не обойтись без выделения, а также без свойств и
методов объекта Selection.


Рис. 6.2. Чтение выделенного фрагмента текста

Рассмотрим некоторые свойства и методы этого объекта, в том числе при-
надлежащие ему объекты. В табл. 6.1 перечислены наиболее часто исполь-
зуемые свойства и методы объекта Selection, их типы и краткое описание.

Таблица 6.1. Свойства и методы объекта Selection



Рассмотрим подробней некоторые свойства объекта 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. Вот фраг-
мент исходного текста программы.
Задание диапазона выделенного объекта
procedure TForml.Button6Click(Sender: TObject);
begin
W.Selection.Start:=13;
W.Selection.End:=25;
end;



Результат выполнения данной процедуры показан на рис. 6.3.


Рис. 6.3. Процедура устанавливает границы выделения
Также нетрудно убедиться, что положение курсора будет изменяться при
изменении свойств Start и End объекта Selection. Если их значения устано-
вить в ноль, то курсор переместится в начало документа, и переместится в
конец документа, когда их значения будут равны количеству символов до-
кумента. Следующий фрагмент программного кода показывает, как пере-
местить курсор в начало и конец документа.

Перемещение курсора в начало и конец документа
W.Selection.Start:=0;
W.Selection.End:=0;
W.Selection.Start:=W.ActiveDocument.Characters.Count;
W.Selection.End:=W.ActiveDocument.Characters.Count;



Манипуляции с полями Start и End — не единственный способ перемеще-
ния курсора или выделения объекта.
Рассмотрим метод Move(Unit, Count) объекта Selection. Он позволяет пере-
мещать курсор на определенное количество символов, слов, предложений
или абзацев, в конец или начало документа, а также по ячейкам таблицы.
Этот метод позволяет достичь начала или конца документа, если вызывать
его неоднократно (до тех пор, пока возвращаемое им значение не равно 0).
У метода есть два аргумента (табл. 6.2): первый определяет выполняемое
действие, а второй — величину и направление перемещения курсора (при
отрицательном значении курсор перемещается по направлению к началу
текста).

Таблица 6.2. Действия метода Move при разных значениях аргументов


Если вызвать метод Move без аргументов, то по умолчанию его выполнение
переместит курсор вперед по тексту на один символ.
Рассмотрим использование метода Move в синтаксисе языка Delphi. Созда-
дим в форме кнопку и поместим в процедуру обработки ее нажатия сле-
дующий программный код.

Перемещение курсора по тексту
procedure TForml.Buttonl5Click(Sender: TObject);
const wdCharacter=l;
begin
W.Selection.Move(wdCharacter, 3) ;
end;




Задавая разные значения первого аргумента (см. табл. 6.2), можно прове-
рить работу этого метода и на более сложных документах, содержащих таб-
лицы, рисунки и т. п.
Рассмотрим другие методы объекта Selection.
Когда курсор установлен в необходимое положение и выделен текст (как
объект Range), можно поместить этот текст в буфер обмена или наоборот,
вставить текст из буфера обмена на место выделенного текста. Для этого
используются два метода объекта Selection — Сору и Paste. Метод Сору ко-
пирует выделенный текст в буфер обмена, метод Paste извлекает текст из
буфера и вставляет его в текст, начиная от положения курсора. Если до вы-
полнения метода Paste был выделен объект, то текст вставляется на место
этого объекта. Эти методы можно применять к объекту любого типа (в дан-
ном случае в качестве объекта мы рассматриваем текст).
Синтаксис вызова этих методов в Delphi показан в следующем программ-
ном коде.

Использование методов Paste и Сору
procedure TForml.Button8Click(Sender: TObject);
begin
W.Selection.Copy;
end;
procedure TForml.Button9Click(Sender: TObject);
begin
W.Selection.Paste;
end;



Наряду с этими двумя методами можно упомянуть метод CopyAsPicture, ко-
торый может быть очень полезен в некоторых задачах. Он помещает в бу-
фер обмена графическое изображение (битовый рисунок) выделенного объ-
екта. Его также можно вызывать из приложений Delphi. Рассмотрим сле-
дующий пример.
Использование метода CopyAsPicture
procedure TForml.Buttonl6Click(Sender: TObject);
begin
W.Selection.CopyAsPicture;
end;



Выделим часть текста (рис. 6.4) и вызовем вышеописанную процедуру на-
жатием кнопки.


Рис. 6.4. Выделим текст перед тем, как вызвать метод CopyAsPicture
Запустив графический редактор Paint и выполнив операцию вставки из бу-
фера обмена, получим результат, показанный на рис. 6.5.


Рис. 6.5. Анализ скопированного в буфер как рисунок (методом CopyAsPicture)
выделенного фрагмента документа


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

Для этого предназначен метод ConvertToTable объекта Selection. У этого ме-
тода имеется несколько аргументов, которые задают форматы и режимы
преобразования. Пожалуй, один из основных аргументов — Separator (сим-
вол-разделитель). В таблицах, набранных в DOS, таким символом был эле-
мент псевдографики. Используя этот аргумент, можно без труда преобразо-
вать таблицы, оформленные до этого в обычном текстовом редакторе. Дру-
гой не менее важный параметр — Format (формат представления таблицы).
Этот аргумент представлен переменной типа integer и может принимать не-
сколько значений. При преобразовании текста в таблицу можно также за-
дать количество столбцов (NumColumns), строк (NumRows) и начальную
ширину столбцов (InitialColumnWidth). Если не задавать все эти параметры,
то преобразование произойдет в режиме "по умолчанию".
Рассмотрим спецификацию вызова метода ConvertToTable в Visual Basic.

Вызов метода ConvertToTable в Visual Basic
Selection.ConvertToTable(Separator, NumRows, NumColumns,
InitialColumnWidth, Format, ApplyBorders, ApplyShading,
ApplyFont, ApplyColor, ApplyHeadingRows, ApplyLastRow,
ApplyFirstColumn, ApplyLastColumn, AutoFit)




Вызов этого метода в приложении Delphi будет выглядеть иначе в соответ-
ствии с принятой спецификацией языка программирования Pascal.
Например, требуется преобразовать выделенный текст в таблицу из пяти
столбцов. В качестве разделителя текста используем символ пробела, фор-
мат таблицы зададим константой wdTableFormatGrid2=17 и используем
значения выбранных характеристик в качестве аргументов метода
ConvertToTable. Смотрите исходный текст.

Преобразование выделенного текста в таблицу (Delphi)
procedure TForml.Buttonl7Click(Sender: TObject);
const wdTableFormatGrid2=17;
begin
W.Selection.ConvertToTable(Separator:=' ',NumRows:=5,NumColumns:=5,
Format:=wdTableFormatGrid2);
end;



Откроем произвольный документ и выделим фрагмент текста, как на
рис. 6.6.
После применения к выделенному тексту метода ConvertToTable получим
результат, представленный на рис. 6.7.


Рис. 6.6. Выделяем фрагмент текста


Рис. 6.7. Текст преобразован в таблицу

Возможно, нам придется удалять некоторые фрагменты текста. Это можно
сделать несколькими способами. Поскольку мы рассматриваем работу
с объектом Selection, то используем для этой цели его метод Delete или Cut.

Вызов методов Delete и Cut для удаления выделенного фрагмента текста
W.Selection.Delete;
W.Selection.Cut;



Отличие этих методов заключается в том, что первый метод удаляет выде-
ленный объект целиком, а второй помещает его в буфер обмена, а только
потом удаляет. Второе отличие этих методов определяется их действием на
текст, если последний не выделен. В этом случае первый метод удаляет
один символ после курсора, а второй просто вызовет ошибку выполнения.

Примечание
Для удаления выделенного фрагмента можно также воспользоваться объектом
Range. Так как у объектов Range и Selection много общего, методы удаления
фрагментов текста у них одноименные:
W.ActiveDocument.Range(1,20).Delete;
W.ActiveDocument.Range(1,20).Cut;




При создании документов не обойтись и без методов, позволяющих встав-
лять текст. В предыдущей главе были рассмотрены два метода объекта
Range — InsertAfter и InsertBefore. Эти методы есть и у объекта Selection.
Дополнительно можно рассмотреть метод TypeText, позволяющий вставлять
текст начиная с позиции курсора (если нет выделенного текста) или заме-
щать выделенный текст. У этого метода только один аргумент — текстовая
строка.
Вызов этого метода в среде Delphi выглядит так:

Использование метода TypeText и приложений MSWord в Delphi
procedure TForml.Buttonl8Click(Sender: TObject);
begin
W.Selection.TypeText('<— Заменяем выделенный фрагмент данным текстом — > ' ) ;
end;



Вставить текст в положение курсора или вместо выделенной области можно
и более простым способом. Достаточно записать нужный текст в свойство
Text объекта Selection, при этом результат будет таким же, как при выпол-
нении метода TypeText.

Использование свойства Text
procedure TForml.Button7Click(Sender: TObject);
begin
W.Selection.Text:= <-- Заменяем выделенный фрагмент данным текстом --> ;
end;



Результат применения любой из этих двух процедур к выделенному фраг-
менту текста (см. рис. 6.2) представлен на рис. 6.8.
Иногда требуется получить размер выделенной области (фрагмента) в сим-
волах или словах, скопировать определенные символы или слова, а также
задать или получить параметры шрифта для выделенной области текста.
Выделенная область (определяемая объектом Selection), как и область текста
(определяемая объектом Range), обладает аналогичными одноименными
свойствами. Коллекция Characters, входящая в объект Selection, позволяет
работать с отдельными символами области, в частности получить ее размер.
Коллекция Words объекта Selection содержит отдельные слова области и оп-
ределяет ее размер в словах. Объект Font, принадлежащий выделенной об-
ласти, определяет или задает для нее параметры шрифта.
Еще один полезный параметр объекта Selection — Style типа integer, содер-
жащий информацию о стиле выделенного текста. Если ему присвоить ка-
кое-либо значение из допустимых (существует около сотни стилей), то вы-
деленный текст будет отображен в соответствующем стиле. Можно разрабо-
тать и использовать свой стиль.
Разберем следующий пример: выделим текст и выполним оператор
W.Selection.Style:=WdStyleHyperlinkFollowed; (значение константы
WdStyleHyperlinkFollowed = -87). Выполнение данного оператора установит
стиль текста, который представлен на рис. 6.9.


Рис. 6.8. Результат выполнения метода замены выделенного фрагмента текста в документе


Рис. 6.9. Установка стиля для выделенного фрагмента текста
Опубликовал Kest September 14 2009 10:24:07 · 1 Комментариев · 18038 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Евгений May 27 2017 16:03:52
Супер статья, но шрифт мелковат
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Animated Menus
DemoEdit [Исходни...
Bitmap [для кнопок]
Анекдоты с ostrie.ru
Основы программир...
Разработка интерн...
Работа с картотеками
3D Октаэдр
C# 2005 и платфор...
Обучение Borland ...
Domen Name IP
AlignEdit
Print Grid
RAS
PHP 5
Использование Lis...
IconCut [Исходник...
Exe in exe
Открытие Cd-ROM'a...
Srinilist

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97829
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10290
Turbo Pascal fo... 7373
Калькулятор [Ис... 5981
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Операции с битами...
Параллелизм и комп...
Закон поглощения л...
FIXED
Поиск чисел удовле...
Модуль Link. Прило...
Процедура FloodFil...
Выбираем значение ...
Первый алгоритм ре...
Datum в Чикаго
Jet Casino
Введение в Object ...
Удостоверьтесь, чт...
Casino ROX
Введенную с клавиа...
Обновление баз дан...
Безопасный и удобн...
Регистрация в ката...
Модуль Server-side...
5.1. Автоматизация...
Microsoft проявляе...
Эта конфигурация н...
Полная пропускная ...
Разработать програ...
Оптимизация алгоритма
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?