Адрес этой странички:
http://d1cv8.narod.ru/top_005/d1cv8_20090926_001/d1cv8_20090926_001.htm Дата: 26.09.2009 Интернет-приложение к книге "Delphi и 1С:Предприятие.Программирование информационного обмена" |
Часть |
Глава 5. Расширение
функционала 1С.
ActiveFormX в среде
1Cv8.
Создание
ActiveFormX и "внедрение" ее в форму внешней обработки
1Cv8
|
|
Для
того, чтобы ActiveX (элемент управления или
форма) были доступны в контексте 1Cv8, их нужно
зарегистрировать в операционной системе.
Один из вариантов - использовать утилиту RegSvr32.exe.
Например :
RegSvr32 My_ActiveFormX_01_afx.ocx
Прежде, чем создавать ActiveX-форму
(или элемент) нужно, ест-нно, хорошо представлять себе ее назначение, а также
функционал, который будет реализован в контексте этой формы (элемента).
Затем нужно придумать идентификатор (имя) этой формы (элемента).
В нашем случае, мы создаем простую (тестовую)
ActiveX-форму (обладающую определенными свойствами и
методами) в контексте которой посмотрим, каким образом можно из 1Cv8
обращаться к свойствам и методам этой формы.
Идентификатор нашей ActiveX-формы:
My_ActiveFormX_01
Для создания ActiveX-формы (в среде Delphi 7) нужно выбрать меню (в Delphi) :
File -> New -> Other
Перейти на вкладку ActiveX и сделать двойной щелчок левой кнопкой мыши по пиктограмме "Active Form" :
В открывшемся диалоговом окне нужно произвести следующие изменения :
В результате, получим "пустую" ActiveX-форму.
Теперь
нужно открыть свойства проекта (меню: Project -> Options)
и на вкладке Application
проконтролировать, чтобы расширение файлы (нашей формы) было
ocx :
Затем, нужно сохранить
проект.
Файлы проекта :
Далее, скомпилировать проект (результирующий файл : My_ActiveFormX_01_afx.ocx).
И зарегистрировать в операционной системе :
RegSvr32 My_ActiveFormX_01_afx.ocx
Если удачно, то сообщение :
Желательно (но не
обязательно) создать на диске отдельный каталог (например, с именем OCX),
где размещать используемые ocx-файлы
AciveX-форм (элементов).
И регистрировать в операционной системе новые ActiveX-формы
(элементы) уже "из этого каталога".
Как видно, процесс создания ActiveX-формы в среде
Delphi предельно прост.
Теперь, нужно открыть конфигуратор 1Cv8 :
И, в контексте какой-либо конфигурации 1C, создать "внешнюю обработку" (меню: "Файл" -> "Новый") :
В
контексте внешней обработки, нужно создать форму обработки :
Указать ее идентификатор (имя) и нажать на кнопку "Готово":
Результат (пустая, по умолчанию, форма "внешней обработки" :
Далее, нужно сохранить созданную "внешнюю обработку" в файл на диске :
Затем, нужно выбрать соотв.пункт меню (в конфигураторе 1Cv8) :
В списке доступных ActiveX-форм (и элементов управления) найти нашу ActiveX-форму и нажать на кнопку OK :
И, с помощью левой кнопки мыши, указать местоположение и размеры нашей ActiveX-формы на форме "внешней обработки" 1Cv8 :
Получится примерно так :
Далее, с помощью правой кнопки мыши (в области ActiveX-формы), нужно открыть всплывающее меню и выбрать пункт "Свойства" :
На странице свойств "внедренной" ActiveX-формы найти раздел : "События".
Теперь вернемся к нашему Delphi-проекту, выберем пункт меню "View" -> "Type Library" и откроем "ветку событий" нашей ActiveX-формы (которая была создана по умолчанию при создании новой ActiveX-формы) :
Как видно "заглушки" к обработчикам событий (для "внедряемых"
ActiveX-форм), созданные системой 1Cv8
(по умолчанию), в основном
совпадают с аналогичными "заглушками", созданными средой Delphi
(по умолчанию) .
Чтобы поэкспериментировать с обработчиками событий (нашей ActiveX-формы) в контексте формы "внешней обработки" 1Cv8, нужно создать (кнопка ) и "привязать" соотв. "пустые" методы (реакция на события, происходящие в контексте нашей ActiveX-формы).
Ниже - реализация этих методов (обработчики событий от "внедренной" ActiveX-формы) :
Теперь нужно сохранить изменения (во внешней обработке) на диск.
Далее, нужно запустить программу 1С:Предприятие.
Найти и открыть файл созданной "внешней обработки" (Тест_My_ActiveFormX_01_afx_ocx_01.epf)
:
И "пощелкать" левой кнопкой мышки в области внедренной
ActiveX-формы (а затем "по-нажимать" на клавиши
клавиатуры).
Результат будет примерно таким :
Исходники этого примера можно скачать здесь : Delphi-проект (336 кб) , "Внешняя обработка" (1Cv8) (3.9 кб).