Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Option Compare Database
- Option Explicit
- Public mcolFormInstances As New Collection
- Public Function CheckForFormInstance(strFormName As String, Optional strFilter As String) As Form
- On Error GoTo Err_Handler
- Dim i As Integer
- Set CheckForFormInstance = Form_Empty
- For i = 1 To mcolFormInstances.Count
- If mcolFormInstances(i).Name = strFormName Then
- If mcolFormInstances(i).Filter = strFilter Then
- Set CheckForFormInstance = mcolFormInstances(i)
- GoTo Code_Exit
- Else
- Select Case strFormName
- Case "frmStudentList"
- Set CheckForFormInstance = mcolFormInstances(i)
- GoTo Code_Exit
- End Select
- End If
- End If
- Next_Loop:
- If i = mcolFormInstances.Count Then
- Exit For
- End If
- Next i
- Code_Exit:
- Exit Function
- Err_Handler:
- If Err.Number = 2467 Then ' object is broken
- mcolFormInstances.Remove i
- i = i - 1
- GoTo Next_Loop
- End If
- DisplayUnexpectedError Err.Number, Err.Description
- Resume Code_Exit
- 'Resume Next
- End Function
- Public Sub CloseFormInstance(frm As Form)
- On Error GoTo Err_Handler
- mcolFormInstances.Remove CStr(frm.Hwnd)
- Code_Exit:
- Set frm = Nothing
- Exit Sub
- Err_Handler:
- If Err.Number = 5 Then ' the hWnd key doesn't exist in mcolFormInstances
- Resume Code_Exit
- End If
- DisplayUnexpectedError Err.Number, Err.Description
- Resume Code_Exit
- 'Resume Next
- End Sub
- Public Function OpenFormInstance(strFormName As String, Optional strFilter As String) As Form
- On Error GoTo Err_Handler
- Dim frm As Form
- Dim mdl As Module
- Set frm = CheckForFormInstance(strFormName, strFilter)
- If frm Is Form_Empty Then
- ' THIS IS THE PART - START
- Select Case strFormName
- Case "frmStudAgenda"
- Set frm = New Form_frmStudAgenda
- Case "frmStudentList"
- Set frm = New Form_frmStudentList
- Case "frmStudInfo"
- Set frm = New Form_frmStudInfo
- Case "frmStudRecords"
- Set frm = New Form_frmStudRecords
- Case "frmUnitInfo"
- Set frm = New Form_frmUnitInfo
- Case Else
- DoCmd.OpenForm strFormName, , , strFilter
- GoTo Code_Exit
- End Select
- ' THIS IS THE PART - END
- If strFilter <> "" Then
- frm.Filter = strFilter
- frm.FilterOn = True
- End If
- mcolFormInstances.Add Item:=frm, Key:=CStr(frm.Hwnd)
- frm.Visible = True
- Else
- frm.Visible = True
- frm.SetFocus
- End If
- Code_Exit:
- Set OpenFormInstance = frm
- Set frm = Nothing
- Exit Function
- Err_Handler:
- DisplayUnexpectedError Err.Number, Err.Description
- Resume Code_Exit
- 'Resume Next
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement