- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Delphi. Трюки и эффекты - Валерий Борисок
Шрифт:
Интервал:
Закладка:
В этом разделе мы более подробно остановимся на рассмотрении практических примеров использования СОМ-сервера редактора Microsoft Word. Достаточно популярный редактор обладает обширным набором возможностей, которые можно использовать вручную (традиционное создание и редактирование документов) и с применением технологии СОМ. Основное удобство последнего метода заключается в автоматизации рутинной работы, например составления отчетов. Следующий пример поможет нам разобраться в принципах построения контроллеров автоматизации, которые ранее уже упоминались. Контроллер автоматизации с точки зрения СОМ представляет собой приложение, которое посредством вызова процедур сервера проводит различные манипуляции над документом. В Microsoft Word это может быть написание текста в установленном формате и т. д.
Рассмотрим пример приложения, которое будет создавать новый документ Microsoft Word, записывать в него некоторый текст, добавлять таблицу и сохранять полученный документ в файл. В целях наилучшего понимания принципов использования объектов СОМ первый пример не будет использовать компонент среды разработки. Итак, приступим к созданию приложения. Для начала создаем новый проект и помещаем на форму следующие кнопки:
• открытия приложения Microsoft Word;
• вывода текста;
• добавления таблицы;
• сохранения документа;
• завершения работы Microsoft Word.
Мы не будем использовать компоненты, поэтому добавляем в секцию uses модуль ComOb j. Для работы с СОМ-сервером редактора нам понадобится объект OLE. Добавляем переменную типа OleVariant:
...var
//Объект OLE
Wrd: OleVariant;
Обработчик кнопки запуска редактора имеет следующий вид (листинг 9.2).
...Листинг 9.2.
Запуск редактора Microsoft Word
procedure TFormWord.bnOpenWordClick(Sender: TObject);
begin
//Создаем объект
Wrd := CreateOleObject('Word.Application');
//Делаем видимым приложение
Wrd.Visible := true;
//Добавляем новый документ
Wrd.Documents.Add;
end;
После инициализации объекта создаем новый документ, предварительно активизировав (отобразив на экране) приложение. После того как Microsoft Word запущен и в нем создан новый документ, можно записывать текст. Для этого определяем обработчик кнопки вывода текста (листинг 9.3).
...Листинг 9.3.
Вывод текста в Microsoft Word
procedure TFormWord.bnSetTextClick(Sender: TObject);
begin
//Процедура записи текста
//Устанавливаем шрифт
Wrd.Selection.Font.Size := 20;
Wrd.Selection.Font.Bold := true;
//Пишем текст
Wrd.Selection.TypeText('Технология COM является одной из современных');
Wrd.Selection.TypeText('технологий организации межпроцессного взаимодействия'#13#10#13#10);
//Задаем новые параметры шрифта
Wrd.Selection.Font.Size := 12;
Wrd.Selection.Font.Bold := false;
Wrd.Selection.Font.Italic := true;
Wrd.Selection.TypeText('Подпись: ');
Wrd.Selection.Font.Bold := true;
Wrd.Selection.TypeText('Delphi'#13#10#13#10);
end;
Особой сложности данный фрагмент вызывать не должен, так как настройка шрифта и вывод теста производятся посредством интуитивно понятных функций и заданием соответствующих свойств. Но надо пояснить, что набор символов # 13 # 10 эквивалентен переходу на новую строку.
Процедура добавления таблицы является достаточно простой и выглядит следующим образом (листинг 9.4).
...Листинг 9.4.
Добавление таблицы
procedure TFormWord.bnAddTableClick(Sender: TObject);
begin
//Процедура добавления новой таблицы
Wrd.ActiveDocument.Tables.Add(Wrd.Selection.Range,3,3);
end;
Таблица содержит три столбца и столько же строк. Далее следует пояснить обработчик нажатия кнопки сохранения документа (листинг 9.5).
...Листинг 9.5.
Сохранение документа Microsoft Word
procedure TFormWord.bnSaveClick(Sender: TObject);
begin
//Сохранение документа
Wrd.ActiveDocument.SaveAs(ExtractFilePath(Application.EXEName) +
'_result.DOC');
end;
Сохранение осуществляется путем вызова MeTOflaSaveAs объекта ActiveDocument, который в качестве параметра принимает путь к файлу. После нажатия кнопки сохранения документ с текстом будет записан в файл (result. doc) каталога, из которого была запущена программа.
Процедура завершения работы основана на вызове метода Quit (листинг 9.6).
...Листинг 9.6.
Завершение работы с Microsoft Word
procedure TFormWord.bnExitWordClick(Sender: TObject);
begin
//Завершение приложения
Wrd.Quit;
end;
Рассмотренное приложение является примитивным контроллером автоматизации и может служить отправной точкой создания более сложных и функциональных программ автоматического составления отчетов и т. п.
Далее приступим к созданию приложения, которое будет подключаться к серверу COM Microsoft Word и выводить текст, дату и время вывода этого текста в активный документ при его смене (переключении между документами). На этот раз мы воспользуемся компонентами WordDocument и WordApplication с вкладки Servers.
Создаем новый проект и на главную форму приложения помещаем компоненты WordDocument nWordApplication. Далее устанавливаем CBoftcTBoConnectKind компонента Wo г dApp licationBc kRunni ng I ns t anc e, а также значение свойства AutoConnect в True. В данном случае приложение Microsoft Word создаваться не будет, а программа подключится к уже существующему серверу. Основную практическую ценность для нас представляет механизм определения активного документа и добавление в него текста, даты и времени (листинг 9.7).
...Листинг 9.7.
Реакция на смену активного документа
procedure TFormActiveWord.WordApplicationActiveDocumentChange
(Sender: TObject);
begin
//Подключаемся к текущему документу
WordDocumentNew.ConnectTo( WordApplicationActive.ActiveDocument);
//Контроллер добавляет новую строку в текущий документ
WordDocumentNew.Range.InsertAfter(#13#10+'Переход к документу'+#13#10+
WordApplicationActive.ActiveDocument.Get_FullName+' произведен :'+ DateTimeToStr(Now));
end;
Как вы заметили, подключение к уже существующему серверу происходит каждый раз после смены активного документа. В этот момент в содержимое документа записывается информация: текстовая строка, дата и время перехода к этому документу.
Чтобы просмотреть работу этого приложения, запустите Microsoft Word и создайте в нем два документа. Запустите созданный пример и поочередно активизируйте документы (щелчком кнопкой мыши на Панели задач).
Трюки в Microsoft Excel
Не менее популярным и функциональным приложением из пакета Microsoft Office является Microsoft Excel. Это программа для работы с электронными таблицами. Как и уже знакомое нам приложение Microsoft Word, Microsoft Excel также обладает возможностью создания и редактирования документов (в данном случае таблиц) посредством СОМ. Преимущества использования Microsoft Excel из других программ очевидны, так как она предоставляет широкий спектр возможностей по построению диаграмм, графиков, произведению различных расчетов и пр. Поэтому в качестве примера создадим приложение, которое будет выполнять запуск Microsoft Excel, добавление новой книги, создание листа и помещение в его ячейки текста и формул.
Как и в случае с Microsoft Word, будет использоваться объект THnaOleVariant. Но методы и свойства СОМ-сервера поменяются. Рассмотрим исходный текст приложения для выполнения несложных операций с сервером Microsoft Excel (листинг 9.8).
...Листинг 9.8.
Работа с Microsoft Excel
unit COMinExcel;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs,
//Включаем модуль работы с COM-объектами
ComObj;
type
TFormCOMExcel = class(TForm)
//Процедура, вызываемая при создании формы
procedure FormCreate(Sender: TObject);
//Процедура, вызываемая при завершении работы приложения
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormCOMExcel: TFormCOMExcel;
//Объявление объекта OleVariant с именем Microsoft Excel
Excel: OleVariant;
implementation
{$R *.dfm}
procedure TFormCOMExcel.FormCreate(Sender: TObject);
begin
//Инициализируем объект
Excel := CreateOleObject('Excel.Application');
//Устанавливаем видимым окно приложения Microsoft Excel
Excel.Visible := true;
//Добавляем новую книгу
Excel.Application.Workbooks.Add;
//Вводим текст в ячейку с индексом E5
Excel.Application.Worksheets.Item['Лист1'].
Cells.Item[5,5].FormulaR1C1 := '! ТЕКСТ !
//Задаем характеристики шрифта
Excel.Application.Worksheets.Item['Лист1'].
Cells.Item[1,1].Font.Bold := true;
//В ячейку с индексом A1 записываем формулу
Excel.Application.Worksheets.Item['Лист1'].
Cells.Item[1,1].FormulaR1C1 := '=18*2
end;
procedure TFormCOMExcel.FormDestroy(Sender: TObject);
begin
//Закрываем приложение Microsoft Excel
Excel.Quit;
end;
end.
Предложенный листинг демонстрирует основы удаленного управления приложением Microsoft Excel. Запуск Microsoft Excel, заполнение ячеек новой таблицы происходит в функции FormCreate.
Во время создания главной формы приложения-примера на экране появится окно программы Microsoft Excel с числом в ячейке с индексом А1 и текстом в ячейке с индексом Е5. Хотя в ячейку с индексом А1 мы записывали =18*2, на экране в этой ячейке будет отображаться 32, так как Microsoft Excel автоматически преобразует выражения в ячейках.
Глава 10 Окна других приложений
• Ловушки Windows
• Программа «Оконный шпион»
Здесь мы будем использовать сведения, приведенные в предыдущих главах (а точнее, в главах 1, 2 и 8), для построения программы, позволяющей проводить различные операции с окнами приложений. Вы также дополнительно познакомитесь с техникой применения ловушек (hook) в Windows и увидите пример реального использования проецирования файла в память для обмена данными между несколькими приложениями. Причем второе в нашем примере обусловлено особенностью работы ловушек, следящих за работой других приложений. Вы также узнаете, как перечислять все открытые окна и, соответственно, получать к ним доступ. Но обо всем по порядку.

