Object.Attach (gb)

Static Sub Attach ( Object As Object, Parent As Object, Name As String )

Unisce un oggetto (object) al suo genitore.

Name è il nome utilizzato per la ricerca dei gestori degli eventi nell'oggetto Parent.

Ogni evento generato dall'oggetto sarà gestito da un gestore di eventi situato nel suo genitore.

Se il genitore è una classe, i gestori degli eventi saranno metodi static della classe.

Il seguente codice:

hObject = NEW MyClass
Object.Attach(hObject, ME, "EventName")

è equivalente a:

hObject = NEW MyClass AS "EventName"

Esempi

PUBLIC Process1 AS Process
...
Process1 = SHELL "find /" FOR READ
Object.Attach(Process1, ME, "Process1")
...

PUBLIC SUB Process1_Read()

   Message.Info("Ottenuto output da Process1!")
   ' e poi legge e fa qualcosa con l'output ...

END

L'esempio successivo creerà 8 PictureBox e ogni volta che si fa clic su una delle caselle immagine (MouseUp), lo stato on/off nella proprietà Tag e Picture vengono attivati.

Qui viene dimostrato come una matrice di elementi di controllo può ricevere un segnale, in questo esempio il segnale "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

  ' Allinea ordinatamente tutti i PictureBox di fila
  Me.Arrangement = Arrange.Row
  ' Crea 8 PictureBoxes
  For i = 1 To 8
    hSwitch = New PictureBox(Me)
    hSwitch.Resize(32, 32)
    ' Il tag indica se l'interruttore è acceso o spento
    hSwitch.Tag = False
    hSwitch.Picture = $picOff
    ' Nota: Invece di Object.Attach() puoi assegnare il nome dell'evento alla creazione dell'oggetto,
    ' cioè: hSwitch = New PictureBox(Me) As "Switch"
    Object.Attach(hSwitch, Me, "Switch")
  Next
End

Public Sub Switch_MouseUp()
  Dim hSwitch As PictureBox = Last ' ottiene la casella che ha generato l'evento (è stato cliccato)

  ' Sposta l'interruttore e assegnare l'immagine appropriata
  hSwitch.Tag = Not hSwitch.Tag
  If hSwitch.Tag Then
    hSwitch.Picture = $picOn
  Else
    hSwitch.Picture = $picOff
  Endif
End