Макросы в Delphi

altХочется немного поговорить о макросах (думаю, ты знаешь, что это такое). Так вот, забегая вперед скажу, что сначала мы попробуем создать макрос в Microsoft Office, а потом претворим это чудо в Дельфи.

Макросы не только облегчают жизнь рядовому пользователю, но и открывают просторы для заподлянщика (как то нехорошо звучит..), я отношуть к разряду тех программистов, кто не прочь выдать на Дельфи этакое, что будет радовать мой глаз и приводить в ужас или в шок пользователей (думаю многие тоже относят себя к этой категории). В дополнение к выше сказанному скажу, что просмотрев статистику по запросам почерпнул много интересного для себя, а именно: что большинство запросов относиться к поиску приколов на Дельфи, а также касается такого понятия, как продвижение сайтов. Ну, что… предлагаю еще одну статью в копилку юному программисту.

Введение

Все началось с того, что я изучал (на первом курсе…) Microsoft Office и тема как раз шла о макросах. Если кто не знает, что это объясняю в двух словах. Если какая-либо задача часто выполняется в Microsoft Word, ее выполнение можно автоматизировать с помощью макроса. Макрос — это набор команд и инструкций, выполняемых как одна команда.

Цели для создания макросов разные:

* Для ускорения часто выполняемых операций редактирования или форматирования;
* Для объединения нескольких команд, например, для вставки таблицы с указанными размерами и границами и определенным числом строк и столбцов;
* Для упрощения доступа к параметрам в диалоговых окнах;
* Для автоматизации обработки сложных последовательных действий в задачах;

Но сегодня тема у нас другая и мы будем говорить о совершенно других целях, а именно — о приколах.

Теория или… знакомство с макросами

Раскажу как работает макросы. В Microsoft Word средство записи макросов работает как магнитофон. С его помощью записываются нажатия клавиш и кнопок мыши, которые переводятся макросом в код Microsoft Visual Basic для приложений. При записи нового макроса допускается применение мыши только для выбора команд и параметров. Для записи такого действия, как выделение текста, необходимо использовать клавиатуру. Например, с помощью клавиши F8 можно выделить текст, а с помощью клавиши END — переместить курсор в конец строки.

Итак, несколько слов о самом создании макроса. Ваши действия:

* В меню «Сервис» выделите пункт «Макрос», а затем выберите команду Начать запись.
* В поле «Имя макроса» введите имя нового макроса.
* В списке «Макрос» доступен для выберите шаблон или документ, в котором будет храниться макрос.
* Введите описание макроса в поле «Описание». // это действие лишнее, но если вы намерены и дальше совершенствоваться в созлании макросов, то думаю забывать этот пункт не стоит.. комментарий никогда не лишний..

Имеется возможность создать кнопку для макроса, но мы этого делать не будем хотя можете попробовать.

* Нажмите кнопку «Закрыть», чтобы начать запись макроса.
* Выполните действия, которые следует включить в макрос.

Приведу свой пример, того что получилось у меня (что бы просмотреть свой макрос, выберите в меню «Сервис» команду «Макрос», а затем — команду «Макросы». Выделяете свой макрос и жмете «Изменить» и… попадаете в Visual Basic, для редактирования макроса).

Пример:
Sub Макрос1()

‘ Макрос2 Макрос
‘ Макрос создан 29.05.2008 Admin

Selection.TypeText Text:=»Привет всем любителям Дельфи!»
End Sub
Здесь мы выводим текст — «Привет всем любителям Дельфи!». Теперь изменим немного это — создадим программу в Дельфи, которая будет открывать наш документ и выводит последовательно, букву за буквой текст…

Кодим

Запускай Дельфи, кидай на форму Таймер и на создание формы переписывай код, представленный в Листинге 1. Объяви пересенные которые нам пригодяться в будущем. Еще не забудь прописать в «uses» ComObj, без него ничего не выйдет.

var
Form1: TForm1;
ms:olevariant; //объект
str,str_s:string;
i:integer; //для счетчика
Листинг1
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=1;
str_s:=’Привет всем любителям Дельфи… ‘;
str:=’C:2.doc’; //путь до файла
//исключительная ситуация
try
ms:=createoleobject(‘Word.Application’); //создаем объект
except
exit; //в случае ошибки выходим
end;
try
ms.documents.open(str); //открываем документ
ms.visible:=true; //его видимость ставим на true
except
ms.quit; //в случае ошибки закрываем документ
exit;
end;
end;
В принципе все должно быть понятно, обращу внимание лишь на связку «try» и «except» — это исключительная ситуация, т.е. она не будет выводить системные ошибки, а просто выполнит действия после «except», а там у нас прописан «exit», так что наша прога просто выйдет в случае ошибки…

Теперь разберемся с таймером, интервал ставь на 500, так быстрее будет… и на событие OnTimer переписывай листинг 2.

Листинг2.

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if i=34 then i:=1 else //если строка закончилась выводим строку заново
begin
ms.Selection.Text:=str1[i]; //посимвольный вывод строки
ms.Selection.MoveDown; //если этого не написать, то следующая буква просто затерет предыдущую…
inc(i); //счетчик
end;
end;
Собственно ничего сложного в этом коде нет, да и сам прикол с Вордом скажем мягко не тянет, но я надеюсь, что эта статья поможет вам, но у уже для создания своих шуток.