Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование MWord в Delphi [D7, WinXP]


Max Payne ©   (2004-07-25 18:24:00) 

У меня проблема такая: после чтения некоторой информации из текстового документа мне надо бы перевести эту инфу в Word, причём не просто "закинуть", а использовать разный формат текста, форматирование, таблицы и т.д. и т.п. Я даже нашёл компоненты, которые должны быть связаны с этим (WordApplication, WordDocument...), правда, не совсем понимаю, почему они во вкладке Servers (мало опыта: мне 16 лет и работаю в Дельфи всего 4 месяца).
На этом сайте толковой информации я не нашёл (разве что константы какие-то к Word'у и Excel'ю). Если кто-то знает какие-нибудь ссылки с подобной информацией, то я буду очень вам благодарен, если вы мне её передадите. Спасибо


Piter   (2004-07-25 19:48:00) [1]

Мне тоже как-то пришлось работать с Word'ом, правда простенько так, без наворотов. Читать что-то серьезное было влом, да и искать надо.

Мне был нужен маленький пример, вот я тебе даю его:

procedure TForm1.Button1Click(Sender: TObject);
var
 MsWord: Variant;
begin
MsWord:=CreateOleObject('Word.Application');
try
 MsWord.Documents.Add;
 MsWord.Selection.TypeText('Тест1');
 MsWord.Selection.TypeParagraph;
 MsWord.Selection.Text := 'Тест2';
 MsWord.Selection.Font.Bold := 1;
 MsWord.Selection.EndKey;
 MsWord.Selection.Font.Bold := 0;
 MsWord.Selection.TypeText(' тест3');  
finally
 MsWord.Visible := True;  
end;

end;


Не забудь подключить модуль comobj.

Рассказываю:

MsWord:=CreateOleObject('Word.Application');- создается Ole объект вордовский, можно сказать, что это как бы "запуск" Word'а

MsWord.Documents.Add;- в ворде создается новый документ

MsWord.Selection.TypeText('Тест1');- как будто ты в этом новом документе пишешь слово Тест1

MsWord.Selection.TypeParagraph;- как будто ты после написания просто жмешь Enter

MsWord.Selection.Text := 'Тест2';- как будто ты пишешь слово Тест2. В отличии от TypeText ты как бы это слово пишешь и тут же его выделяешь, чтобы к этому выделению применить какие-то действия.

MsWord.Selection.Font.Bold := 1;- ты делаешь выделенную фразу жирной. (а выделено у нас Тест2).

MsWord.Selection.EndKey;- как будто ты жмешь клавишу End. То есть, курсор переходит к концу строки. Выделение снимается.

MsWord.Selection.Font.Bold := 0;- отменяешь стиль"жирный". Чтобы последующие написанные слова были без выделения жирным.

MsWord.Selection.TypeText(' тест3');- как будто просто пишешь слово Тест3

MsWord.Visible := True;- делаешь ворд видимым на экране. Этот пункт надо выполнять обязательно, иначе ворд будет в памяти находится, но на экран не покажется. В тоже время не надо показывать раньше времени, чтобы пользователь не видел как там по полю курсор ползает в соответствии с коммандами.

Ну так вот, элементарный пример я тебе показал - можешь посмотреть его результаты. Все проще простого.

А дальше я делал вот как, чтобы узнать что еще можно делать. Открываеш Word, нажимаешь "Сервис->Макрос->Запись макроса" и делаешь руками что угодно -, оформление и т.д. Потом останавливаешь запись макроса и смотрищь какой макрос получился. Там будет записано все, что ты сделал руками, но на языке VB. При известном умении и пользуясь F1 на непонятных местах переводишь это все в Delphi. Получается все, что ты можешь ручками сделать в Word'е - можно сделать программно.
Тоже и к Excel'у применимо.

P.S. Может и ламерский подход, но за день разбирательств я полностью реализовал нужный мне функционал...


TechnoDreamer   (2004-07-25 19:15:00) [2]

http://www.interface.ru/borland/d5_office/d5_office.htm


Наверх

Титульная страница Поиск, карта сайта Написать письмо