VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "Windows"
Attribute VB_Creatable = False
Attribute VB_Exposed = True
Option Explicit

' Create a Windows collection
Private colWindows As New Collection

' Windows object Application property
Public Property Get Application()
    Set Application = modDeclares.Application
End Property

' Windows Add method -- verifies object type
' before adding an object to the collection.
Sub Add(Optional winVal, Optional Key, Optional Before, Optional After)
Attribute Add.VB_HelpID = 1234
Attribute Add.VB_Description = "Add method"
    ' If no form is specified, create a new form.
    If IsMissing(winVal) Then
        ' Create a new instance of the Window class.
        Dim Window As New Window
        ' Tell the Window to create itself and
        ' add it to the collection.
        colWindows.Add _
            Window.Create(SOURCE_INTERNAL), _
            Window.Index
        Exit Sub
    End If
    ' If the object is a form, add it to
    ' the collection.
    If TypeName(winVal) = "Window" Then
        ' Make sure object has been initialized.
        If Len(winVal.Index) Then
            colWindows.Add winVal, Key, Before, After
        ' If it hasn't, use the Create function to create it.
        Else
            colWindows.Add _
                winVal.Create(SOURCE_INTERNAL), _
                winVal.Index
        End If
    ' Cause a type mismatch error.
    Else
        Error 13
    End If
End Sub

' Standard Remove method.
Sub Remove(Index)
    ' Delete the form -- SOURCE_INTERNAL argument
    ' indicates that Delete is used internally, so
    ' Remove is not called to remove the Window from
    ' the collection (causing infinite loop).
    If colWindows.Count Then
        colWindows.Item(Index).Delete SOURCE_INTERNAL
        ' Remove the object from the collection.
        colWindows.Remove Index
    End If
End Sub

' Standard Item method.
Function Item(Index) As Object
    ' Use the Set statement to return an object
    ' reference. Simple assignment would return
    ' the default property for the object
    Set Item = colWindows.Item(Index)
End Function

' Standard Count property.
Property Get Count() As Integer
    Count = colWindows.Count
End Property

' Arrange all of the child windows in the
' MDI parent.
Sub Arrange(arrangement As Integer)
    mdiApplication.Arrange arrangement
End Sub


