powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перекрестные ссылки на форму и класс
4 сообщений из 4, страница 1 из 1
Перекрестные ссылки на форму и класс
    #39651181
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть класс "clsSuperClass"

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Option Compare Database

Private WithEvents m_appFrm As Form


Public Sub init(ByRef frm As Form)
    Debug.Print "init"
    Set m_appFrm = frm
    
    m_appFrm.OnUnload = "[Event Procedure]"
    m_appFrm.OnClose = "[Event Procedure]"
End Sub

Public Sub deinit()
    Set m_appFrm = Nothing
End Sub

Private Sub m_appFrm_Unload(Cancel As Integer)
    Debug.Print "m_appFrm_Unload"
End Sub

Private Sub m_appFrm_Close()
    Debug.Print "m_appFrm_Close"
End Sub

Private Sub Class_Initialize()
    Debug.Print "Class_Initialize"
    Set m_appFrm = Nothing
End Sub


Private Sub Class_Terminate()
    Debug.Print "Class_Terminate"
    Set m_appFrm = Nothing
End Sub



Есть форма "frmEx":

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Option Compare Database
Option Explicit

Private cls As New clsSuperClass

Private Sub Form_Load()
    cls.init Me
End Sub

Private Sub Form_Unload(Cancel As Integer)
    'Set cls = Nothing
End Sub



Суть в том, что 2010 Аксе код формы в событии Unload(если строчку раскомментировать) - проходит спокойно, тогда как в 97 аксе - вызывает жестокое падение. Тогда как с закомментированной строчкой не проходит событие класса - Terminate.


Почему я храню в формы ссылку на класс: потому что если ее не хранить где-нибудь, класс сразу сделает Terminate.
Почему я храню в классе ссылку а форму: требуется для дальнейшей подписи на события WithEvents


Почему меня это волнует? Таки если не проходит событие Terminate вроде как ссылка где-то должна оставаться, а это плохо.


Пример прикреплен.
...
Рейтинг: 0 / 0
Перекрестные ссылки на форму и класс
    #39651238
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно подвесить инстанс суперкласса методом Мюнхгаузена,
а в процедуре обработки m_appFrm_Close рвать ссылку.
...
Рейтинг: 0 / 0
Перекрестные ссылки на форму и класс
    #39651292
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared, а в чем заключается метод этого самого Мюнхгаузена?
...
Рейтинг: 0 / 0
Перекрестные ссылки на форму и класс
    #39651297
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это когда ссылка на экземпляр хранится в самом экземпляре.

Вот здесь можно почитать, например: 329037
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перекрестные ссылки на форму и класс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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