FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9235
Вход
OLE: работа с MS Word и IE

Мы не будем здесь влезать в дебри OLE, его сути и различных тонкостей и отличий от аналогичных технологий. OLE есть OLE и применять его иногда бывает очень полезно. Что же он дает ?


 
Прислал: Неизвестно   Категория: Foxpro и другие приложения


Часть 1.Работа с Word

Мы не будем здесь влезать в дебри OLE, его сути и различных тонкостей и отличий от аналогичных технологий. OLE есть OLE и применять его иногда бывает очень полезно. Что же он дает ? Последнне время, большая часть софтверных компаний (по-крайней мере Microsoft) пишут свои приложения как OLE-объекты. Следовательно, мы можем из Foxpro полностью управлять работой таких программ. К таким программам относятся Word, Excel и другие из MS Office, так же Outlook Express и много других. Достаточно хорошо, что можно легко ввести данные в фокспрошную программу, там их обработать, сделать отчет в формате MS Word и отдать начальнику. Так как Word является намного более используемой программой, с него и начнем.
Перед началом работы с ЛЮБЫМ OLE объектом его сначала нужно проиницилизировать. Для Wordа это выглядит следующим образом:
  
  oword=create('word.application')  
  oword.documents.add()  
  
Здесь происходит загрузка Word в память и создание нового(пустого) документа. Теперь можно указать заголовок окна Wordа:
  
  oword.caption='Word97 Test'  
  
В принципе, можно и не указывать заголовок окна, но возможность такая есть. Это была обязательная часть кода (исключая заголовок) для работы с Wordом. Теперь будем работать непосредственно с созданным документом. Для вставки текста в документ используется метод INSERTAFTER(text), где text - необходимый для вставки текст ;-)
Пример вствки текста в документ:
  
  oword.Selection.insertafter(chr(13)) && вставляем ENTER  
  oword.Selection.insertafter('DATE: ')  
  oword.Selection.insertafter(date()) && ... и текущую дату  
  
Точно также можно вставлять несколько ENTERов (отделяя блоки текста)
  
  FOR i = 1 to 3  
  oword.Selection.insertafter(chr(13))  
  ENDFOR  
    
  
И сразу вставлять текст и перевод курсора на следующую строку:
  
  oword.selection.insertafter('Thank you,'+chr(13))  
  
Также можно вставлять разделительные полосы:
  
  oword.selection.insertafter(repl('_',25))
И осталось только снять выделение с введенного текста:
  
  END=oword.activedocument.Bookmarks("\ENDOFDOC").select
Теперь придадим форму самому окну Wordа и сделаем его видимым:
  
  oword.top = 1  
  oword.left = 1  
  oword.width = 500  
  oword.height = 450  
  oword.visible= .t.   
  

Урок 2. Работа с IE.


Теперь по аналогии работы с Word, мы нмного поуправляем Internet Explorerом. Вообще, чтобы управлять любым OLE объектом достаточно просто узнать все его совйства и методы, но для этого нужно уметь владеть мало-мальским отладчиком (хотя бы отладчиком от фокспро). Для IE есть несколько следующих методов: переход на нужную страницу и заполнение форм.
Попробуем сделать небольшой пример работы с IE.
Сначала нужно определить запущем-ли уже браузер из нашего примера, для этого проверяется определена-ли переменная oie, если нет, то определяем ее как ссылку на объект IE.
  
  IF type ('oie')='U'  
  PUBLIC oie  
  oie=createobject('internetexplorer.application')  
  ENDIF  
  
Теперь с помощью метода Navigate переходим на страничку поиска людей в Yahoo!
  
  oie.navigate('http://www.yahoo.com/search/people')  
  
Делаем небольшую паузу, чтобы бровзер открыл сайт. Если в работе программы будут ошибки из-за медленного Интернет-соединения, то это время нужно увеличть.
  
  lntime=seconds()  
  DO while seconds()-lntime< 6  
  ENDDO  
  
Теперь делаем окно IE видимым и заполняем форму.
  
  oie.visible= .t.  
  
Нижеследующие обращения к IE весьма напоминают синтаксис JavaScript, и вы можете почерпнув оттуда свойства сделать с IE что-нибудь ужасное ;-). А что происходит тут: идет обращение(заполнение) полей формы forms(1) значениями имени, фамилии и т.д., где firstname - поле имя и т.п.
  
  oie.document.script.window.document.forms(1).firstname.value = "john"   
  oie.document.script.window.document.forms(1).lastname.value = "harvey"  
  oie.document.script.window.document.forms(1).city.value = "memphis"   
  oie.document.script.window.document.forms(1).state.value = "tn"  
  oie.document.script.window.document.forms(1).submit()  
    
  
Ну а последняя строка кода "нажимает" на кнопку отправить. Вы можете ее временно убрать, чтобы посмотреть как заполняются поля формы.
 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (4.798) Вложение [0.71]kb
Дополнения пользователей
OLE: работа с MS Word и IE
[+][?]
Александр
04.04.01 02:25:35

А как вставлять строки с указанием их форматирования в Word?
Юрий Re:
Каким образом я могу вводить диакритические знаки из шрифтов Unicode в полях таблицы VFP? >Юрий
Александр
04.04.01 02:26:14

А как вставлять строки с указанием их форматирования в Word?
Доброжелатель
16.11.01 06:36:16

написано что это "Часть 1.Работа с Word"
а остальные части когда появятся :-)
Антон
29.01.03 17:54:19

Можно вместо выдачи WORD'у строчек с данными сформировать текст по старинке (через FCREATE,
FGETS,FPUTS и т.д.), а потом вызвать WORD и загрузить в него сформированный файл,выставив опцию
подтверждения преобразования при открытии.
Пример:

# INCLUDE word8.h
# DEFINE True .T.
# DEFINE False .F.

LOCAL loWord, lcOldError,lcDOC
lcOldError=ON("ERROR")

ON ERROR loWord=.NULL.
 * loWord=GETOBJECT(lcDoc,"Word.application") // Так    
 * открывать тоже можно.
 loWord=GETCOMInstance(lcDoc,"Word.application")
ON ERROR &lcOldError

IF TYPE('loWord')<>'O'
	loWord=CREATEOBJECT("Word.application")
	ON ERROR &lcOldError
ENDIF

loWord.visible=.t.
WITH loWord
  .documents.OPEN("C:\OUT\TEST.TXT",True,True,False,"","",False,"","",wdOpenFormatAuto)
 * .ActiveDocument.Pagesetup.Orientation=wdOrientLandscape  
 *  Если нужен пейзаж
ENDWITH

* 
Paska
25.07.05 04:35:09

Подскажите, как вставить картинку в Word?
Paska
25.07.05 05:30:52

Подскажите, как вставить картинку в Word?
Paska
25.07.05 05:42:26

Подскажите, как вставить картинку в Word?
[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика