NEW
Object = NEW Class [ ( Constructor parameters... ) ] [ AS Name ]
Instancie la classe
Class .
Si un nom est indiqué, le nouvel objet sera capable de lever des évènements en appelant une procédure ou fonction publique dans son "parent".
-
Ce parent, ou l'observateur d'évènement par défaut, est l'objet ou la classe où le nouvel objet est instancié.
-
Le nom de ce gestionnaire d'évènement est le nom de l'objet suivit par un trait de soulignement ( _ ) et le nom de l'évènement.
Si vous omettez de spécifier la partie Name , votre objet ne lèvera jamais d’évènement !
NEW
n'est pas un opérateur. Vous pouvez seulement l'utiliser dans une assignation.
Mais vous pouvez utiliser la fonction
Object.New à la place.
Gestionnaires d’évènement communs
Deux objets différents peuvent avoir le même nom d'évènement. Ainsi, vous pouvez gérer les évènements d'objets multiples dans la même procédure d'évènement, tant que ces objets lèvent les même évènements.
Cette caractéristique est utilisée par l’ IDE pour implémenter la propriété Group
.
Exemples
hButton = NEW Button(ME) AS "MyButton"
...
PUBLIC PROCEDURE MyButton_Click()
PRINT "Mon bouton a été cliqué !"
END
' Cet exemple crée des petites [/comp/gb.qt/textbox]-es 9\*9\*9 auxquelles les accès
' sont effectués par le tableau d’Objets[] public objIsImpossible
PUBLIC bIsInitialised AS Boolean
PUBLIC objIsImpossible AS Object[]
PUBLIC SUB Form_Open()
DIM iR AS Integer
DIM iR2 AS Integer
DIM iC AS Integer
DIM iC2 AS Integer
DIM iDigit AS Integer
DIM iX AS Integer
DIM objTextBox AS TextBox
IF NOT bIsInitialised THEN
objIsImpossible = NEW Object[] ' Necessite de créer le tableau
iX = 0
FOR iR = 0 TO 8
FOR iC = 0 TO 8
FOR iDigit = 0 TO 8
iR2 = iDigit MOD 3
iC2 = iDigit / 3
objTextBox = NEW TextBox(ME) ' crée les TextBox 9*9*9 suivantes
objTextBox.X = (iR * 3 + iR2) * 12 + 2
objTextBox.y = (iC * 3 + iC2) * 12 + 2
objTextBox.Width = 10
objTextBox.Height = 10
objIsImpossible.Add(objTextBox, iX)
iX = iX + 1
NEXT ' iDigit
NEXT ' iC
NEXT ' iR
ENDIF
END
Instanciation dynamique
Object = NEW ( ClassName [ , Constructor parameters... ] ) [ AS Name ]
Cette seconde syntaxe permet d'indiquer dynamiquement le nom de classe sous forme de chaîne.
Exemples
' Ceci crée un tableau de flottants 3x3.
DIM MyArray AS NEW Float[3, 3]
' Et ceci aussi
DIM MyArray AS Object
DIM MyClassName AS String
MyClassName = "Float[]"
MyArray = NEW (MyClassName, 3, 3)
Voir aussi