''---Class & Collection:---
Public Class PointClass
   X As Double
   Y As Double

   Function SetXY(ByVal dblX As Double, ByVal dblY As Double) As Boolean Begin
      X = dblX: Y = dblY 
   End Function

   Sub WriteToImage(ByRef Target As Variant) Begin
      Target.Pset (X, Y)
   End Sub

   #include{class_stdio.txt}
End Class

Public Collection PointCollection Of PointClass
   #include{collection_stdio.txt}
End Collection

''---Editor Forms:---
Form frmPointClass Edits PointClass
   Intrinsic MDIChild := -1
   #include{form_class_viewer.txt}
End Form

Form frmPointCollection Edits PointCollection
   Intrinsic MDIChild := -1
   #include{form_collection_viewer.txt}
End Form


MDIForm frmMain
   #include{mdiform_class_viewer.txt}
   Intrinsic Width := 10000
   Intrinsic Height := 8000

   Control pic1 As PictureBox Begin
      Height = 2000
      ScaleWidth = 4000
      ScaleHeight = 1000
      DrawWidth = 3
   End Control

   Control mnuShowIt As Menu Begin
      Caption = "&Show Points!"
   End Control

   Sub mnuShowIt_Click Begin  
      Dim Point As PointClass, Editor As frmPointClass
      dim F As Form, booFound As Boolean

      pic1.Cls

     ' Show each point that's not already visible in a new viewer.
      For Each Point in Points
         booFound = False
         For Each F in Forms
            If TypeOf F is frmPointClass Then
               If F.Source Is Point Then  ' point is already displayed
                   booFound = True
                   Exit For
               End If  
            End If
         Next
         If Not booFound Then
            Set Editor = New frmPointClass
            Editor.Edit Point, vbModeless
         End If

         Point.WriteToImage pic1
      Next

     ' Show the collection.
      frmPointCollection.Edit Points, vbModeless
   End Sub

End MDIForm


Module TryIt
   Declarations
      Public Points As New PointCollection
   End Declarations
   
   Sub Main() Begin
      frmMain.Show
   End Sub
End Module


