Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как получить ссылку на экземпляр класса? / 6 сообщений из 6, страница 1 из 1
06.11.2009, 15:57
    #36295164
testing22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на экземпляр класса?
'код модуля класса clsControlSH
Public SH_Toggle As Boolean
Public SH_form As frmSH

'в коде есть форма frmSH

'создаю экземпляр класса
Set ControlSH = New clsControlSH '(сам экземпляр)
ControlSH.SH_Togglee = True '(устанавливаю свойство)
Set ControlSH.SH_form = New frmSH (то есть при создании экземпляра класса создается также экземпляр формы, который принадлежит экземпляру этого класса)

Как из формы обратиться к свойствам и методам экземпляра класса, в котором содержится эта форма? Через имя_экземпляра_класса нельзя, так как экземпляр не один. Я так понимаю, надо как то получить ссылку на текущий экземпляр?
...
Рейтинг: 0 / 0
06.11.2009, 18:11
    #36295645
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на экземпляр класса?
testing22,

да, нужно получить ссылку. Можно ввести в модуле формы свойство, ссылающееся на экземпляр класса (получается жёсткая взаимная ссылка). Либо можно сделать в форме событие, при обработке которого класс возвращает форме ссылку на себя. Эта связь мягче.
...
Рейтинг: 0 / 0
06.11.2009, 21:07
    #36295853
testing22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на экземпляр класса?
Бенедикт,

Cпасибо! Теперь полная ясность, буду делать.
...
Рейтинг: 0 / 0
07.11.2009, 13:27
    #36296389
testing22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на экземпляр класса?
Бенедикт,

Что-то не получается у меня сделать такое свойство формы.

Я объявляю в форме паблик свойство с типом в виде класса, ссылку на экземпляр которого нужно туда записать, или с типом Object.
Public MyObject As Object

При создании экземпляра класса я записываю ссылку в это свойство:
Set имя_экз_класса.form.MyObject = имя_экз_класса

В обработчиках кнопок формы обращение к свойства экземпляра вот такого типа:
Private Sub ToggleButton2_Click()
MyObject.MyToggle = False 'устанавлаю булевое свойство экземпляра класса в false
End Sub

Но при создании и инициализации формы я получаю ошибку, так как при инициализации форма не знает что такое MyObject, а передать ссылку в виде параметра при создании формы я не могу.
...
Рейтинг: 0 / 0
09.11.2009, 12:26
    #36298416
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на экземпляр класса?
testing22Но при создании и инициализации формы я получаю ошибку, так как при инициализации форма не знает что такое MyObject, а передать ссылку в виде параметра при создании формы я не могу.Не знает, но а) зачем торопиться, почему нельзя выполнить эти действия не в Initialize, а позже (но перед показом формы), б) если уж невтрепёж, ссылку, как и любой другой параметр, можно передать неявно, например через глобальную сущность (переменную/функцию/свойство Get/объект).

Пара замечаний:
1) По
Код: plaintext
1.
2.
3.
'создаю экземпляр класса
Set ControlSH = New clsControlSH '(сам экземпляр)
ControlSH.SH_Toggle = True '(устанавливаю свойство)
Set ControlSH.SH_form = New frmSH '(то есть при создании экземпляра класса создается также экземпляр формы, который принадлежит экземпляру этого класса)
Если форма является подчинённым объектом класса, то лучше бы внести управление формой внутрь класса, а не управлять ей напрямую снаружи.
2) По
Код: plaintext
1.
2.
3.
'В обработчиках кнопок формы обращение к свойства экземпляра вот такого типа:
Private Sub ToggleButton2_Click()
 MyObject.MyToggle = False 'устанавлаю булевое свойство экземпляра класса в false
End Sub
Не лучше бы здесь сгенерировать событие изменения значения переключателя, которое класс бы сам обрабатывал?
...
Рейтинг: 0 / 0
09.11.2009, 15:28
    #36299024
testing22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить ссылку на экземпляр класса?
Бенедикт, Спасибо!

Советы Ваши обязательно учту.

Со свойством не получалось потому, что у меня была ошибка в коде. При инициализации формы я устанавливал дефолтные значения контролов на ней, а в обработчиках этих контролов были события Change. Вот и получалось что у меня при создании формы срабатывал код из обработчиков, а в обработчках использовалось свойство формы, которое должно было содержать ссылку на экземпляр класса. А так как это свойство еще не было установлено, то получалась ошибка.

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


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