Object.Attach (gb)
Static Sub Attach ( Object As Object, Parent As Object, Name As String )
Attache un objet à son parent.
Name est le nom utilisé pour chercher le gestionnaire d'Evènement dans l'objet
Parent.
Chaque événement déclenché par un objet sera géré par le gestionnaire d'événement situé dans son parent.
Si le parent est une classe, alors les gestionnaires d'événements seront
des méthodes statiques de la classe.
Le code suivant :
hObject = NEW MyClass
Object.Attach(hObject, ME, "EventName")
est équivalent à :
hObject = NEW MyClass AS "EventName"
Exemples
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
L’exemple qui suit créera 16 boîtes d’image et chaque fois que l’une d’entre elle sera cliquée (évènement MouseUp) le bit de donnée sous jacent de iSwtch et l’
image sont inversés.
On montre ici comment un tableau d’éléments de contrôle peut recevoir un signal ; dans cet exemple le signal est "MouseUp"
PUBLIC pbSwtch AS Object[16]
PUBLIC iSwtch AS Integer ' L’état des 16 interrupteurs de données
PUBLIC imgSwtchOff AS Picture ' L’image montre un interrupteur quand elle est éteinte
PUBLIC imgSwtchOn AS Picture ' L’image montre un interrupteur quand elle est allumée
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) ' crée une nouvelle boîte d’image, retourne sa poignée (handle) à 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 ' lequel des 16 interrupteurs à été cliqué ?
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