Адрес этой странички: http://d1cv8.narod.ru/top_005/d1cv8_20090926_001/d1cv8_20090926_002.htm
Дата: 26.09.2009
Интернет-приложение
к книге
"Delphi и 1С:Предприятие.Программирование информационного обмена"
           Часть

Глава 5. Расширение функционала 1С.
ActiveFormX в среде 1Cv8.
(продолжение)

Свойства и методы ActiveFormX (доступ из 1Cv8)

Тема этой статьи НЕ отражена в контексте содержания книги ...


Информацию о назначении технологии
ActiveX в контексте системы 1Cv8 можно посмотреть на сайте фирмы 1С : http://v8.1c.ru/overview/IntegrationActiveX.htm
 

 

1 Создание ActiveFormX и "внедрение" ее в форму внешней обработки 1Cv8
2 Продолжение. Свойства и методы ActiveFormX (доступ из 1Cv8)
3 Продолжение. События ActiveFormX. Обработчики событий (от ActiveX-формы) в контексте 1Cv8
4 Продолжение. Считывание (в контексте 1Cv8) информации из открытого (в контексте нашей ActiveX-формы) набора данных.

 

Откроем Delphi-проект и доработаем нашу "пустую" ActiveX-форму, "положив" на форму Delphi-компонент (TN1 : TTabbedNotebook) :

 

Наделим нашу форму свойством  "Кол-во вкладок" (атрибут: "ТолькоЧтение") у Delphi-компонента  TN1.
Для этого нужно выбрать пункт меню "View" -> "Type  Library" и, отметив строку IMy_ActiveFormX_01, открыть всплывающее меню  (по правой кнопке мыши), где выбрать  пункт "Property" :


После того, как будет создано две новые строки (новое свойство), нужно переименовать (одну из них), указав идентификатор (имя) нужного свойства (в нашем случае
PagesCount).

При создании нового свойства - в списке свойств и методов появляются ДВЕ строки (одна - метод, реализующий чтение значения свойства, а другая - метод, реализующий запись значения свойства).

В нашем случае, свойство PagesCount ("Кол-во вкладок") имеет атрибут "ТолькоЧтение".
Поэтому, мы должны "найти" и удалить метод, реализующий запись значения этого свойства :

 

Реализация метода, "отвечающего" за чтение значения этого свойства :

 

Теперь добавим метод, "отвечающий" за чтение наименования вкладки (компонента TN1) по заданному индексу (номеру) вкладки.
Идентификатор (имя) метода будет PageName_Get.
Метод будет иметь один входной параметр (номер вкладки компонента TN1) и возвращаемое значение (имя вкладки TN1).

Чтобы создать новый метод, нужно точно также (как в предыдущем пункте)  открыть всплывающее меню  (по правой кнопке мыши), где выбрать  пункт "Method" :


Затем, нужно указать идентификатор (имя) метода (в нашем случае: PageName_Get) и перейти на вкладку "Parameters" :

Нажать на кнопку "Add".


В таблице параметров появится новая строка. Нужно переименовать параметр (хотя это и НЕ принципиально), указав ему какой-то "ясный по смыслу" идентификатор :

Это - входной параметр (атрибут Modifier имеет значение in) :  "номер вкладки" компонента TN1.
Тип параметра : long (integer).


Теперь, добавим еще один параметр (кнопка Add) - (возвращаемое значение).

Идентификатор параметра:
Res (созвучно с Result).
Тип параметра :
BSTR (string) :


В результате получим это :


Реализация метода 
PageName_Get :

 

Точно также (как и в предыдущем пункте) создадим метод, "отвечающий" за изменение наименования вкладки (компонента TN1) по заданному индексу (номеру) вкладки.
Идентификатор (имя) метода будет PageName_Set.
Метод будет иметь два входных параметра (номер и новое имя вкладки компонента TN1) и возвращаемое значение (результат операции: <=0 - ошибка, >0-успешно).

 


Реализация метода
PageName_Set :

 

Далее, скомпилировать проект (результирующий файл : My_ActiveFormX_01_afx.ocx).

Закрыть конфигуратор (и программу) 1Cv8.

Заменить ocx-файл с предыдущей версией нашей ActiveX-формы (в каталоге OCX) - на новый.

Зарегистрировать (если это еще не производилось с предыдущей версией ocx-файла) : RegSvr32 My_ActiveFormX_01_afx.ocx


 

Теперь, нужно открыть конфигуратор 1Cv8 :

 

Далее, открыть нашу "внешнюю обработку" (файл Тест_My_ActiveFormX_01_afx_ocx_01.epf) и доработать следующим образом :


 

Реализация методов (обработчиков событий) в контексте формы "внешней обработки" :

 

Сохранить изменения в новый файл:  Тест_My_ActiveFormX_01_afx_ocx_02.epf

 


Теперь нужно запустить программу 1С:Предприятие и открыть файл внешней обработки Тест_My_ActiveFormX_01_afx_ocx_02.epf :


Как видно (см.рис. выше), наш
"тандем" (1Cv8 <-> ActiveX-форма)  успешно функционируют.

 

Попробуем сделать изменение наименования НЕсуществующей вкладки :

Результат - "на лице" ...

 

Теперь попробуем изменить наименование существующей вкладки :

Результат - (опять же) "на лице"  ...

 

 

 

Исходники этого примера можно скачать здесь : Delphi-проект (354 кб) , "Внешняя обработка" (1Cv8) (5.3 кб).

 

 

 

Продолжение  ...

1 Создание ActiveFormX и "внедрение" ее в форму внешней обработки 1Cv8
2 Продолжение. Свойства и методы ActiveFormX (доступ из 1Cv8)
3 Продолжение. События ActiveFormX. Обработчики событий (от ActiveX-формы) в контексте 1Cv8
4 Продолжение. Считывание (в контексте 1Cv8) информации из открытого (в контексте нашей ActiveX-формы) набора данных.

 


(c) Сергей Попов, респ.Коми, г.Усинск, 2007  Письмецо написать ...


Hosted by uCoz