Gambas Documentation
Aperçu du Langage
À traduire
Code Snippets
Comment faire ...
Compilation et installation
Composants
gb
.Array.Bounds
.Stat.Perm
.Stream.Lines
.Symbol
Application
Args
Array
Boolean[]
Byte[]
Class
Classes
Collection
Component
Components
Date[]
Enum
Env
Error
File
Float[]
gb
Integer[]
Long[]
Object
Address
Attach
Call
Class
Count
Detach
GetProperty
Is
IsLocked
IsValid
Lock
New
Parent
SetProperty
SizeOf
Type
Unlock
Object[]
Observer
Param
Pointer[]
Process
Short[]
Single[]
Stat
Stream
String
String[]
System
Timer
User
Variant[]
gb.args
gb.cairo
gb.clipper
gb.complex
gb.compress
gb.crypt
gb.db
gb.db.form
gb.dbus
gb.debug
gb.desktop
gb.desktop.gnome.keyring
gb.eval
gb.eval.highlight
gb.form
gb.form.dialog
gb.form.editor
gb.form.mdi
gb.gmp
gb.gsl
gb.gtk
gb.gtk3
gb.gui
gb.image
gb.image.effect
gb.image.imlib
gb.image.io
gb.inotify
gb.libxml
gb.media
gb.mysql
gb.net
gb.net.curl
gb.net.smtp
gb.openal
gb.opengl
gb.opengl.glsl
gb.opengl.glu
gb.opengl.sge
gb.option
gb.pcre
gb.pdf
gb.qt4
gb.qt4.ext
gb.qt4.opengl
gb.qt4.webkit
gb.qt5
gb.qt5.opengl
gb.report
gb.scanner
gb.sdl
gb.sdl.sound
gb.settings
gb.signal
gb.util
gb.util.web
gb.v4l
gb.vb
gb.web
gb.web.feed
gb.xml
gb.xml.html
gb.xml.rpc
gb.xml.xslt
Controls pictures
Derniers changements
Dépôt d'applications
Documentation de l'Environnement de développement
Documentation des développeurs
Documents
Indenter
Index de tous les Documents
Index du langage
Lexique
LISEZ-MOI
Manuel du wiki
Messages d'erreur
Tutoriels
Wiki License

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