Задача из lblText Frm3 перенести значение в lblText инициирующей формы.
Например : Frm3(Parent) -> Frm2(Child)
Frm3(Parent) -> Frm2(Child/Parent) -> Frm1(Child)
Frm2(Parent) -> Frm1(Child)
Реализация:
Создаем класс clsFrom для обработки событий OnLoad и OnUnload
- Код: Выделить всё
Private WithEvents clsFrm As Form '
Private blnUnloadFrm Boolean ' Разрешение на закрытие формы
Private strNmParent As String ' Имя Parent-а
' Свойства формы
Public Property Set Form(Value As Form)
Set clsFrm = Value
clsFrm.OnLoad = "[Event Procedure]" ' Загрузка
clsFrm.OnUnload = "[Event Procedure]" ' Выгрузка
End Property
Public Property Get Form() As Form
Set Form = clsFrm
End Property
Private Sub clsFrm_Load()
Dim strNmFrom As String
On Error Resume Next
' Если форма открыта путем создания переменной класса этой формы,
' то обратиться к ней через семейство Forms невозможно.
strNmFrom = Forms(clsFrm.Name).Name
If Err.Number = 0 Then
blnUnloadFrm = True
Else
blnUnloadFrm = False
End If
End Sub
Private Sub clsFrm_Unload
If not blnUnloadFrm then
clsFrm.Visible = False
Cancel = True
end if
End sub
На каждую форму добавляю :
- Код: Выделить всё
Private mFrm As clsFrom
Private Sub Form_Open(Cancel As Integer)
Set mFrm = New clsTFrm ' создаем класс
Set mFrm.Form = Me.Form ' устанавливаем ссылку
End Sub
Для кнопок :
- Код: Выделить всё
Private Sub cbtOk _Click()
Call FrmCmdOpen(New Form_Frm2, Me.Name)
End Sub
- Код: Выделить всё
Public Sub FrmCmdOpen(frm As Form , strNmParent As String)
frm.Visible = True
While frm.Visible
DoEvents
Wend
End Sub
Вопрос заключаеться в слудющем:
Нужно передать в форму два параметра, чтобы к ним можно было обратиться в процедуре FrmCmdOpen :
1. NmParen as string
2. UnloadFrm as boolean
т.е.
- Код: Выделить всё
Public Property Let NmParen (strValue as string)
strNmParen= strValue
End Property
Public Property Get NmParen () as string
NmParen =strNmParen
End Property
Public Property Let UnloadFrm (blnValue as boolean)
blnUnloadFrm= blnValue
End Property
Public Property Get UnloadFrm () as boolean
UnloadFrm = blnUnloadFrm
End Property
Пытаюсь вставить в класс но при обращение к форме пишет что не задан объект. Подскажите как их правильно добавить ?