Object.Attach (gb)

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

Adjunta un objecte al seu pare.

Name és el nom usat per cercar manipuladors d'esdeveniments a l'objecte Parent.

Cada esdeveniment provocat per l'objecte serà administrat per un manipulador d'esdeveniments situat a l'objecte pare.

Si el pare és una classe, llavors els manipuladors d'esdeveniments seran mètodes estàtics de la classe.

El següent codi:

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

és equivalent a aquest:

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("Sortida del procés 1!")
   ' podeu llegir i fer alguna cosa amb la sortida...

END

L'exemple a continuació crearà 16 controls PictureBox i cada vegada que es faci clic a una de les imatges (MouseUp), la informació subjacent a iSwtch i la imatge Picture, seran alternades.

Amb l'exemple es demostra com una matriu de controls poden rebre una senyal, "MouseUp" en l'exemple concret.

PUBLIC pbSwtch AS Object[16]

PUBLIC iSwtch AS Integer ' L'estat dels 16 commutadors

PUBLIC imgSwtchOff AS Picture ' Aquesta imatge mostra un commutador apagat
PUBLIC imgSwtchOn AS Picture ' Aquesta imatge mostra un commutador encès


PUBLIC SUB Form_Show()

DIM i AS Integer
DIM pb AS Object

imgSwtchOff = Picture["imgSwtchOff.png"]
imgSwtchOn = Picture["imgSwtchOn.png"]

FOR i = 0 TO 15
  pb = NEW PictureBox(ME) ' creació d'un control PictureBox, retornar el punter a pb
  pb.= 20 + 40 * (15 - i)
  pb.= 60
  pb.Width = 32
  pb.Height = 32

  pb.Picture = imgSwtchOff
  pb.Name = "pbSwtch"
  pbSwtch[i] = pb
  Object.Attach(pbSwtch[i], ME, "pbSwtch")
NEXT
END

PUBLIC SUB pbSwtch_MouseUp()
DIM i AS Integer
DIM togglemask AS Integer

= (Mouse.ScreenX - 20) / 40 ' determinar a quin dels 16 commutadors s'ha fet click ?

IF i >= 0 AND i < 16 THEN
  i = 15 - i
  togglemask = Shl(1, i)
    iSwtch = iSwtch XOR togglemask
  IF iSwtch AND togglemask THEN
    pbSwtch[i].Picture = imgSwtchOn
  ELSE
    pbSwtch[i].Picture = imgSwtchOff
  ENDIF
ENDIF
END