powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как получить ссылку на экземпляр класса?
6 сообщений из 6, страница 1 из 1
Как получить ссылку на экземпляр класса?
    #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
Как получить ссылку на экземпляр класса?
    #36295645
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
testing22,

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

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

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

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

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

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

Но при создании и инициализации формы я получаю ошибку, так как при инициализации форма не знает что такое MyObject, а передать ссылку в виде параметра при создании формы я не могу.
...
Рейтинг: 0 / 0
Как получить ссылку на экземпляр класса?
    #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
Как получить ссылку на экземпляр класса?
    #36299024
testing22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бенедикт, Спасибо!

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

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

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


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