Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как получить ссылку на существующифй экземпляр класса? / 11 сообщений из 11, страница 1 из 1
09.06.2006, 09:18:27
    #33782341
Витал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на существующифй экземпляр класса?
Суть вопроса.
Создал 2 класса в одной и той же книге Ексель (2003). Упрощенно: cls1 и cls2.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
cls1
Public wbk as Workbook

Private Sub Class_Initialize()
   Set wbk = Workbooks.Open("C:\Temp\fff.xls")
End Sub

cls2
Public c1 as cls1

Private Sub Class_Initialize()
On error goto e
   Set c1 = GetObject(,"cls1") 'здесь то и не хочет работать
Exit Sub
e:
   Set c1 = New cls1
End Sub
Мне не надо при создании каждого экземпляра cls2 заново инициализировать cls1. Но как на него сослаться? Пока не получается.
...
Рейтинг: 0 / 0
09.06.2006, 17:00:28
    #33784054
ТожеВитал
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на существующифй экземпляр класса?
Вроде работает.
...
Рейтинг: 0 / 0
09.06.2006, 21:10:31
    #33784486
Витал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на существующифй экземпляр класса?
Собственно вот так выглядят правильно условия задачи.
...
Рейтинг: 0 / 0
09.06.2006, 21:11:01
    #33784487
Витал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на существующифй экземпляр класса?
Блин! Отвалилось вложение.
...
Рейтинг: 0 / 0
15.06.2006, 09:42:45
    #33791882
хво
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на существующифй экземпляр класса?
ВиталМне не надо при создании каждого экземпляра cls2 заново инициализировать cls1. Но как на него сослаться? Пока не получается.

Так создай в глобальном модуле
Public с1 as cls1
...
set c1=new cls1

и уже в cls2 работай c c1, которая ранее уже была проинициализирована
...
Рейтинг: 0 / 0
15.06.2006, 10:09:44
    #33791960
Витал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на существующифй экземпляр класса?
хво ВиталМне не надо при создании каждого экземпляра cls2 заново инициализировать cls1. Но как на него сослаться? Пока не получается.

Так создай в глобальном модуле
Public с1 as cls1
...
set c1=new cls1

и уже в cls2 работай c c1, которая ранее уже была проинициализирована

Так то я и сделал. Но хотел избежать отдельной инициализации первого класса. Так получается, что надо помнить о том, что перед использованием второго класса обязательно необходимо создать экземпляр первого и передать во второй ссылку на него.
...
Рейтинг: 0 / 0
15.06.2006, 17:19:01
    #33793752
хво
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на существующифй экземпляр класса?
Витал хво ВиталМне не надо при создании каждого экземпляра cls2 заново инициализировать cls1. Но как на него сослаться? Пока не получается.

Так создай в глобальном модуле
Public с1 as cls1
...
set c1=new cls1

и уже в cls2 работай c c1, которая ранее уже была проинициализирована

Так то я и сделал. Но хотел избежать отдельной инициализации первого класса. Так получается, что надо помнить о том, что перед использованием второго класса обязательно необходимо создать экземпляр первого и передать во второй ссылку на него.

ну так и инициализируй в классе глобальную перемнную и проверяй ее на Nothing
...
Рейтинг: 0 / 0
16.06.2006, 20:11:55
    #33796869
Витал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на существующифй экземпляр класса?
хво Витал хво ВиталМне не надо при создании каждого экземпляра cls2 заново инициализировать cls1. Но как на него сослаться? Пока не получается.

Так создай в глобальном модуле
Public с1 as cls1
...
set c1=new cls1

и уже в cls2 работай c c1, которая ранее уже была проинициализирована

Так то я и сделал. Но хотел избежать отдельной инициализации первого класса. Так получается, что надо помнить о том, что перед использованием второго класса обязательно необходимо создать экземпляр первого и передать во второй ссылку на него.

ну так и инициализируй в классе глобальную перемнную и проверяй ее на Nothing

Блин! "Что в лоб, что по-лбу". Хотелось, по теме топика, чтобы инициализация первого класса осуществлялась только во втором и нигде больше. Чтобы НЕ ТРЕБОВАЛОСЬ в любых других модулях (кроме модуля второго класса) создавать экземпляр первого. ТАК КАК ЗДЕСЬ РЕКОМЕНДУЕТСЯ Я УЖЕ РЕАЛИЗОВАЛ. Но мне не кажется это красивым решением.
...
Рейтинг: 0 / 0
16.06.2006, 20:29:21
    #33796901
Витал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на существующифй экземпляр класса?
Вероятно, для реализации того, что я хотел, необходим еще один класс-родитель, который содержал бы коллекцию загруженных классов наподобии Workbooks & Workbook.
...
Рейтинг: 0 / 0
20.06.2006, 10:05:42
    #33801666
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на существующифй экземпляр класса?
ВиталТАК КАК ЗДЕСЬ РЕКОМЕНДУЕТСЯ Я УЖЕ РЕАЛИЗОВАЛ. Но мне не кажется это красивым решением.

чего кричать-то? %-)
Если есть объект, который неизвестно когда будет проинициализирован, то надо при обращении к нему смотреть на его Nothing - и либо инициализировать либо рабоnать далее - чего тут некрасивого? Проверка? Оператор IF?
...
Рейтинг: 0 / 0
28.06.2006, 11:47:45
    #33818809
Витал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на существующифй экземпляр класса?
Senin Viktor ВиталТАК КАК ЗДЕСЬ РЕКОМЕНДУЕТСЯ Я УЖЕ РЕАЛИЗОВАЛ. Но мне не кажется это красивым решением.

чего кричать-то? %-)
Если есть объект, который неизвестно когда будет проинициализирован, то надо при обращении к нему смотреть на его Nothing - и либо инициализировать либо рабоnать далее - чего тут некрасивого? Проверка? Оператор IF?

Извини, Виктор, не понял рекомендации. Еще раз тогда из-за чего весь сыр-бор.
Сейчас.
-Создаю экземпляр класса 1
-Создаю экземпляр класса 2
-Передаю объекту 2 ссылку на объект 1
-Работаю со свойствами и методами объекта 2

Хотел.
-Создавать экземпляр класса 2, который проверял бы есть ли уже объект 1 в памяти и, если нет, создавал бы его, а, если да, работал бы с существующим.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как получить ссылку на существующифй экземпляр класса? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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