Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Вниз

Компонент ActiveX   Найти похожие ветки 

 
olookin ©   (2004-03-17 11:12) [0]

После создания компонента ActiveX и его регистрации в системе (что, надеюсь, выполнено), в ряде приложений не могу увидеть его в списке установленных объектов ActiveX. Например, в Delphi, VBA и ActiveX Control Test Container свой объект вижу великолепно - это означает, что могу просматривать и редактировать его свойства. В Excel, Word и в ряде других программ я не вижу своего объекта в списке установленных объектов. При попытке загрузить его из файла (*.ocx) не вижу ни самого объекта, ни его свойств (хотя он и загружается), при этом объект именуется не так, как я его назвал при разработке (скажем, ACXCntrl1), а Пакет1(2,3 и т.д.).

Почему такое может происходить? Заранее спасибо.


 
Digitman ©   (2004-03-17 11:22) [1]

открываешь VBA-редактор любого приложения MSOffice
жмешь меню "Сервис -> Ссылки ..", открывается диал.окно со списком, находишь в списке свой объект, отмечаешь его галкой, жмешь ОК


 
olookin ©   (2004-03-17 12:07) [2]

Digitman ©   (17.03.04 11:22) [1]

Это как раз я и делал (чтобы убедиться что можно обращаться к свойствам компонента - убедился что можно). Однако даже и в этом случае мой компонент не присутствует в списке Available References (т.е. библиотек типов и компонентов), его призодится вручную грузить из файла. Не говоря уже о том, чтобы в том же офисе вставить "Объект". Там его тоже в списке нет, тоже приходится из файла грузить, но в отличие от VBA, тут я уже не могу обратиться к свойствам объекта. И кроме того, если в VBA он именуется как надо (например ACXCtrl1), то в офисе после вставки как "Объект"а он называется просто "Пакет".

Вероятно, недостаточно просто зарегистрировать Com-объект в реестре, нужно где то еще прописать его, чтобы он отображался в списке установленных компонент ActiveX (например, как это происходит для "Клип мультимедиа" или "Рисунок MSWord").


 
Digitman ©   (2004-03-17 12:37) [3]

проверь у себя в реестре

после корректной и полной регистрации реестр должен содержать след.ключи

1. Класс библ-ки типов, которая встроена в OCX

HKEY_CLASSES_ROOT\TypeLib\{06572E46-9B74-4949-8204-FF20AC603476}

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{06572E46-9B74-4949-8204-FF20AC603476}

2. GUID класса АХ-контрола

HKEY_CLASSES_ROOT\CLSID\{B3CD47FD-608F-4751-A854-AC35B6F93DB9}

3. ProgId твоего АХ-контрола

HKEY_CLASSES_ROOT\TypeLibName.AXControlName


 
olookin ©   (2004-03-17 14:11) [4]

Digitman ©   (17.03.04 12:37) [3]

Проверял, и не раз. Все на месте, но проблема как была так и осталась. Думаю, что либо нужно воспользоваться какой-то службой регистрации OLE-объектов, либо в том же реестре найти раздел, в котором размещены объекты, появляющиеся в списке по умолчанию.


 
olookin ©   (2004-03-17 14:15) [5]

Digitman ©   (17.03.04 12:37) [3]

Проверял, и не раз. Все на месте, но проблема как была так и осталась. Думаю, что либо нужно воспользоваться какой-то службой регистрации OLE-объектов, либо в том же реестре найти раздел, в котором размещены объекты, появляющиеся в списке по умолчанию.


 
olookin ©   (2004-03-18 08:25) [6]

Методом проб и ошибок нашел ответ на свой вопрос. Надо в реестр в разделы для моего компонента добавить еще и раздел Insertable в пустым значением. Обнаружил же я это следующим образом. Создал и зарегистрировал ActiveX объект через VC, и обнаружил, что в этом случае мой компонент отображается в списке установленных. Сравнил ветки в реестре для прежнего компонента, и для компонента, созданного через VC - и нашел, что в последнем случае имеется раздел Insertable. Вывод - хоть в плане удобства разработки программ VC сильно уступает (с моей точки зрения) Delphi, в ряде случаев VC помогает избежать лишних проблем, в частности при создании ActiveX компонентов.


 
Cobalt ©   (2004-03-18 09:17) [7]

Вывод, имхо, неправильный.
"В Excel, Word и в ряде других программ" имеется ряд особенностей, о которых ты не знал!


 
Digitman ©   (2004-03-18 09:29) [8]

не знаю почему, но разработанные мной AX-формы успешно взаимодействуют с любыми средами (в т.ч. - офисными приложениями) и никакого ключа Insertable при этом классом TActiveForm не создается в ходе регистрации


 
olookin ©   (2004-03-18 12:21) [9]

Digitman ©   (18.03.04 09:29) [8]

Я это заметил, что при разработке ActiveX через Delphi не создается ключ Insertable. А вот "успешно взаимодействуют с любыми средами" - хотелось бы уточнить что имеется в виду. Как я проверяю правильную с моей точки зрения регистрацию компонента? Запускаю Excel, выбираю "Вставка-Объект", выделяю вкладку "Новый", и если в списке "Тип объекта" вижу компонент - то считаю его зарегистрированным. Всего этого не происходит, если в Delphi 5 я создаю ActiveForm, выбираю в его меню "Run"->"Register ActiveX Server" и регистрирую (сообщение об этом появляется). Правда с помощью ActiveX Control Test Container я вижу свой компонент в списке сразу же.

Зато если теперь в реестре я добавляю поле Insertable, мой компонент появляется в искомом списке в Excel (равно как и в других программах).


 
Digitman ©   (2004-03-18 12:35) [10]

попробуй иные варианты

1. регистрировать готовый OCX с ком.строки "regsvr32 myAXctl.ocx"
2. переопределить метод TActiveXControl.UpdateRegistry, где собссно и вносить недостающий ключ в реестр



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.034 c
3-1078331930
Fixxxer
2004-03-03 19:38
2004.04.04
вопрос по Quick Report


3-1078234286
Denis
2004-03-02 16:31
2004.04.04
Грид не отображает значения поля до щелчка мышкой.


14-1078675942
Натуся
2004-03-07 19:12
2004.04.04
Проблемы с Linux


1-1079453089
alless
2004-03-16 19:04
2004.04.04
CreateProcess


4-1075402288
OlegY
2004-01-29 21:51
2004.04.04
HOOK - как заблокировать сообщение.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский