UtterAccess HomeUtterAccess Wiki

Welcome Guest ( Log In | Register )

Custom Search
Edit Discussion
> Instance    

clsInstance helps to create and manage form instances. Using Form instances is an alternate technique for opening forms. Using a form instance makes it possible to open a second copy of a form that is already open in Form View so the application can show two records from the same table simultaneously for example.

Enumerated Variables: ddForms

Properties: Visible FormType Form

Methods: fCreateInstance CreateForm Move

Events Completed

Notes about implementing this class:

Declare a global constant in the application

Global Const gcEVNTPROC = "[Event Procedure]"

Create properties in each form to be instance UserChoice - long This property is used to pass a value back to the calling form Caller - used to identify the form that created the instance


enum ddForms should be modified so that there is one member for each form that will be instanced in the application.

objects should be declared a the module level of the form that will be using it: dim WithEvents frm as clsInstance

Qualifying the declaration with WithEvents allows the calling form to handle the close event of the form instance.

A sample application using clsInstance can be download from here: Media:Demo_EventsAndCollections.zip.


Synopsis

Help with creating form instances

CODE
' Instance
' http://www.utteraccess.com/wiki/Instance
' Code courtesy of UtterAccess Wiki
' Licensed under Creative Commons License
' http://creativecommons.org/licenses/by-sa/3.0/
'
' You are free to use this code in any application,
' provided this notice is left unchanged.
'
' rev  date                          brief descripton
' 1.0  {{{YYYY-MM-DD}}}                    
'
' Module    : clsInstance
' DateTime  : 3/6/2014 11:47
' Author    : UA Contributor
' Purpose   : manage form instances
'
' The enums in this class are application dependant
' modify fcreateinstance and enum definition to reflect forms in the application
' to be instanced using this class
'
' additional properties and methods added by UA Contributor
'
' move - call form's move method
'---------------------------------------------------------------------------------------
Option Compare Database
Option Explicit


Private Const cstrModule As String = "clsInstance"

Public Enum ddForms
'declare enum variables here to correspond to the name of each form that will be instanced
'replace these identifiers with names that correspond to table names in the application
'where you are deploying clsInstance:

   frmNewPeople = 1
   frmDemoEvents
   frmDemoCollections
   
End Enum

Public Event Completed(Result As Long)


Private WithEvents mfrm As Form

Private mFormType As ddForms
Private mlngstrUserChoice As Long
Private Property Get strUserChoice() As Long
   On Error GoTo HandleExit
   
   strUserChoice = mlngstrUserChoice
HandleExit:
End Property
Private Property Let strUserChoice(rData As Long)
   On Error GoTo HandleExit
   
   mlngstrUserChoice = rData
HandleExit:
End Property


Public Sub Move(Left As Long, Optional Top As Variant, Optional Width As Variant, Optional Height As Variant)
' Procedure: move
' DateTime: 3/7/2014 9:51:46 AM
' Author: UA Contributor
' Description: call the form's move method to position it
'--


   Const cstrProcedure = "move"
   Dim lngTop As Long
   Dim lngWidth As Long
   Dim lngHeight As Long

On Error GoTo HandleError

If IsMissing(Top) Then
 lngTop = Form.WindowTop
Else
 lngTop = Top

End If

If IsMissing(Width) Then
 lngWidth = Form.Width
Else
 lngWidth = Width
End If

If IsMissing(Height) Then
 lngHeight = Form.InsideHeight
Else
 lngHeight = Height
End If


mfrm.Move Left, Top, Width, Height

HandleExit:

Exit Sub

HandleError:
End Sub


Public Property Get Visible() As Boolean
   If Not mfrm Is Nothing Then
       Visible = mfrm.Visible
   End If
End Property

Public Property Let Visible(pSetting As Boolean)
   If Not mfrm Is Nothing Then
       mfrm.Visible = pSetting
   End If
End Property

Public Property Get Form() As Form
   Set Form = mfrm
End Property

Public Property Let FormType(pForm As ddForms)
   mFormType = pForm
End Property

Public Property Get FormType() As ddForms
   FormType = mFormType
End Property

Public Sub CreateForm(Optional pForm As ddForms)
   
   If pForm > 0 Then
       mFormType = pForm
   End If
   
   Set mfrm = fCreateInstance(mFormType)
   mfrm.OnClose = gcEVNTPROC
   
End Sub

Private Sub mfrm_Close()
   
   RaiseEvent Completed(Nz(mfrm.UserChoice, 0))
   'Set mfrm = Nothing
   
End Sub

Private Function fCreateInstance(pForm As ddForms) As Form
   Const cstrProcedure = "fCreateInstance"


Select Case pForm
   
   'use enums from ddForms to control which form gets instanced
   'use the Class Objects for each form to instance
   Case frmNewPeople
 Set fCreateInstance = New Form_frmNewPeople
Case frmDemoCollections
 Set fCreateInstance = New Form_frmDemoCollections
Case frmDemoEvents
 Set fCreateInstance = New Form_frmDemoEvents

End Select

End Function
'
' Demonstration Function
'
{{{FunctionBody}}}

Creative Commons License
Instance by UtterAccess Wiki is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Editing and revision of the content is freely encouraged; for details, see Expected Usage.

Edit Discussion
Custom Search
Thank you for your support!
This page has been accessed 2,809 times.  This page was last modified 16:04, 30 May 2014 by Glenn Lloyd.   Disclaimers