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.X = 20 + 40 * (15 - i)
pb.Y = 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
i = (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