У меня есть основная форма с регистром и несколькими подчиненными формами.Я использую модули классов и сохраняю названия форм в них, чтобы облегчить доступ к ним.Соответствующая переменная для доступа к классу сохраняется в модуле и устанавливается (new) on_load в форме (clsMod).Перед первым доступом моя основная форма вызывает функцию, которая «инициализирует» значения в модуле класса (initial_form), чтобы сделать их доступными.Это работает как шарм, пока.
Но когда я сейчас пытаюсь получить доступ к значению, например, с помощью clsMod.detailsControl или clsMod.detailsControl! FieldXy, мой модуль класса снова инициализируется и, таким образом, теряет все связанные объекты.Я полагаю, мне не разрешено использовать такие элементы управления / формы?Нет ошибки, за исключением, конечно, «объектной переменной или с неустановленной переменной блока», которая возникает впоследствии.
Private m_ctldetailsControl As control
Public Sub initial_form()
Set detailsControl = Forms!mainForm_ufoMainForm
End Sub
Public Property Get detailsControl() As control
Set detailsControl = m_ctldetailsControl
End Property
Public Property Set detailsControl(ctlDetailsControl As control)
Set m_ctldetailsControl = ctlDetailsControl
End Property
Я сузил ее до того факта, что модуль класса просто снова инициализируется, когдаЯ получаю доступ к объекту управления извне (я помещаю метку времени в Class_Initialize () и вижу, когда происходит новая инициализация), я просто не знаю почему.То же самое происходит, когда я использую Form-Objects вместо Control-Objects.
Я могу исключить мой код, сбрасывающий модуль класса, потому что он устанавливается только один раз во время процесса загрузки (set clsMod = new clsModification).Все остальное внутри этого класса работает нормально, я могу получить доступ к свойству изнутри класса без повторной инициализации.
Буду очень признателен за любые идеи или дальнейшие чтения по этой теме, любые другие детали просто спросите!
Несколько дополнений:
- Переменная класса расположена как "public clsMod As clsModuleXy" в модуле
- она устанавливается в Событии onLoad моей формы (установите clsMod= new clsModuleXy)
- set-property отлично работает (как описано выше)
- get свойство отлично работает внутри модуля класса (как описано выше)
- , когда я используюполучить свойство вне модуля класса, произойдет новое создание экземпляра (если я установлю локальное управление / форму для этого свойства или захочу получить доступ к полю)