Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Классы... просветите недалекого / 13 сообщений из 13, страница 1 из 1
01.09.2003, 18:27
    #32253078
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
Подключаю к проекту в AccessXp сторонний компонент, невизуальный,(работает номана). Компонент - это класс. Переменные могу объявить, например: Dim objFTP As DevPowerFTP.FTP.
А вот когда: Set objFTP = New DevPowerFTP.FTP - не хочет, ругается на New. Когда пишешь New, потом список доступных объектов высвечивается и там этого FTP не видать.
Объясните мне, это получается что можно написать невизуальный компонент, который не захочет создаваться динамически, а токо кидать его на форму на этапе проектирования??? или он все таки должен уметь созадаваться динамически коль зовется классом...
...
Рейтинг: 0 / 0
01.09.2003, 18:54
    #32253100
Классы... просветите недалекого
Несколько наводящих вопросов:
Что из себя представляет компонент, DLL-ку, содержащую класс?
В чем написана и где "работает номана"?
На нее установлена ссылка? В ObjectBrouser видна?
В DevPowerFTP.FTP, DevPowerFTP - имя класса, а FTP дочернего класса?

Может класс создан как глобальный? Т.е. обращаться к его свойствам и методам нужно напрямую, как, например, к объекту Application?
...
Рейтинг: 0 / 0
01.09.2003, 19:45
    #32253130
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
Объясните мне, это получается что можно написать невизуальный компонент
Гыыы
Это называется Public Not Createble (в VB)
Ты еще попробуй DAO.Recordset так создать, тоже будешь удивлен. Хоть его и на форму то нельзя кидать.
Или, еще лучше, напиши Set asdf = New Object
...
Рейтинг: 0 / 0
02.09.2003, 09:54
    #32253310
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
2Анатолий: Этот компонент - ocx. DevPowerFTP - название библиотеки, в ней несколько Enum и класс FTP с методами и свойствами (правда еще зачем-то есть класс - pagGeneral - абсолютно пустой)

2Лох Позорный: Слушай, обыдно понимаешь, да... нафиг так делать для обычного невизуального компонента. С Recordset понятно, он сам себе не принадлежит, там строгая иерархия, ну а тут то что?
...
Рейтинг: 0 / 0
02.09.2003, 10:10
    #32253337
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
1 ocx должна быть зарегистрирована в винде делается это с помощью regsvr32
2 ссылка на этот ocx должна быть прописана в референсах

если вышеуказанное сделано и данная библиотека подходит для использования то объекты библиотеки должны появиться браузере объектов и появиться в конструкторе после Set objFTP = New

кроме того необязательно декларировать так как у тебя
Dim objFTP As DevPowerFTP.FTP

можно оставить variant или декларировать как обект
Dim objFTP
Dim objFTP as Object
...
Рейтинг: 0 / 0
02.09.2003, 10:17
    #32253352
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
Да, все выше указанное проделано.

И так тоже пробовал...
...
Рейтинг: 0 / 0
02.09.2003, 10:20
    #32253358
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
кинь библиотеку мне на мыло - посмотрю
...
Рейтинг: 0 / 0
02.09.2003, 10:22
    #32253359
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
2 АлексейК
Да с каких пор ocx-ы можно создавать с помощью конструкции Set asdf = New чтототам? Или я чего-то не понимаю?

2 SergeySV
Примерно так: если компонент можно кидать на форму - то он уже визуальный. Может, он и невидимый, но это пофиг. Кроме как кидать на форму с ним работать не получится.

Слушай, обыдно понимаешь, да
Абыдна канешна! А что делат? Ты уж претензии к разработчикам этого контрола кидай - зачем они его сделали контролом, а не обычным COM-объектом.
...
Рейтинг: 0 / 0
02.09.2003, 10:28
    #32253366
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
да, наверное Лох прав
ocx это ведь библиотека контрола а не COM объекта. а контролы не могут быть отдельными обектами и их надо создавать на формах.
...
Рейтинг: 0 / 0
02.09.2003, 10:34
    #32253375
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
2Лох Позорный: Хмм... значит говоришь сделали контролом, а не обычным COM-объектом...

Почему у меня сомнения-то возникли: смотрю я на Mswinsck.ocx - ocx, на форму кладется и сам невидимый(ну точь в точь как этот FTP), а через New пожалуйста создавай не хочу, проблем нет.

2АлексейК: скинул.
...
Рейтинг: 0 / 0
02.09.2003, 10:59
    #32253408
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
2 SergeySV
Ну значит и так бывает. Жизнь прекрасна и удивительна.
Объект либо Createble, либо нет.
Он либо кидается на форму, либо нет.
А уж визуальный он или нет - дело десятое.
Как его написали - так руки и оборвать
...
Рейтинг: 0 / 0
02.09.2003, 11:07
    #32253413
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
Да уж, потому самому и хотелось написать...
...
Рейтинг: 0 / 0
03.09.2003, 14:40
    #32254775
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы... просветите недалекого
Спасибо АлексейК. С его помощью выход был найден.
В своем обсуждении мы совсем забыли про замечательную функцию CreateObject. Вот такой пример будет работать:

Dim ctl As DevPowerFTP.FTP
Set ctl = CreateObject("DevPowerFTP.FTP")
Debug.Print ctl.Version
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Классы... просветите недалекого / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]