Object.Attach (gb)
Static Sub Attach ( Object As Object, Parent As Object, Name As String )
Attach an object to its parent.
Name is the name used for searching event handlers in the
Parent object.
Every event raised by the object will be managed by an event-handler
located in its parent.
If the parent is a class, then the the event-handlers will be static
methods of the class.
The following code:
hObject = NEW MyClass
Object.Attach(hObject, ME, "EventName")
is equivalent to:
hObject = NEW MyClass AS "EventName"
Examples
PUBLIC Process1 AS Process
...
Process1 = SHELL "find /" FOR READ
Object.Attach(Process1, ME, "Process1")
...
PUBLIC SUB Process1_Read()
Message.Info("Got output from Process1!")
' and then read and do something with the output...
END
The next example will create 8 PictureBoxes and each time one of the picture boxes is clicked (MouseUp) then the on/off state in the Tag property and the
Picture are toggled.
Here is demonstrated how an array of control elements can receive a signal, in this example the signal "MouseUp"
Private $picOn As Picture = Picture["icon:/32/connect"]
Private $picOff As Picture = Picture["icon:/32/disconnect"]
Public Sub Form_Show()
Dim i As Integer
Dim hSwitch As PictureBox
' Align all PictureBoxes neatly in a row
Me.Arrangement = Arrange.Row
' Create 8 PictureBoxes
For i = 1 To 8
hSwitch = New PictureBox(Me)
hSwitch.Resize(32, 32)
' The Tag indicates if the switch is on or off
hSwitch.Tag = False
hSwitch.Picture = $picOff
' Note: Instead of Object.Attach() you should assign the event name at object creation,
' i.e. hSwitch = New PictureBox(Me) As "Switch"
Object.Attach(hSwitch, Me, "Switch")
Next
End
Public Sub Switch_MouseUp()
Dim hSwitch As PictureBox = Last ' get the box that raised the event (was clicked on)
' Flip switch and assign the appropriate picture
hSwitch.Tag = Not hSwitch.Tag
If hSwitch.Tag Then
hSwitch.Picture = $picOn
Else
hSwitch.Picture = $picOff
Endif
End