In order for the Constituent Form to open as non-modal, it must be instantiated from a separate Project from the calling application. This is due to the nature of ActiveX. See this Microsoft article for more information: Modeless Forms in VB ActiveX DLL's Don't Display in VC++ Clients.

For example, here is sample code from a simple form application with one button and a reference to Class1 in a separate DLL:

Private moAPI As REAPI
Dim oClass As Class1

Private Sub Command1_Click()

    Set moAPI = New REAPI
    Call moAPI.Init
   
    Set oClass = New Class1
    Call oClass.OpenRecord(280, moAPI.SessionContext)
 
End Sub

Private Sub Form_Terminate()
   
    If Not oClass Is Nothing Then
        Set oClass = Nothing
    End If
   
    If Not moAPI Is Nothing Then
        Set moAPI = Nothing
    End If
   
End Sub

Here is the code for Class1, which resides in a separate Project as a compiled DLL:

Private oForm As CConstituentForm
Private oRec As CRecord

Public Sub OpenRecord(recID As Long, moSC As IBBSessionContext)

    Set oRec = New CRecord
    oRec.Init moSC
    oRec.Load recID
   
    Set oForm = New CConstituentForm
    oForm.Init moSC
   
    Set oForm.ConstituentObject = oRec
    oForm.ShowForm False, Nothing, False
   
End Sub

Private Sub Class_Terminate()

    If Not oForm Is Nothing Then
        oForm.CloseDown
        Set oForm = Nothing
    End If

    If Not oRec Is Nothing Then
        oRec.CloseDown
        Set oRec = Nothing
    End If

End Sub