NEW
Object = NEW Class [ ( Constructor parameters... ) ] [ AS Name ]
Instancia a classe
Class.
Se for especificado um nome, o novo objeto será capaz de gerar eventos chamando um procedimento ou função pública em seu "pai".
-
Este pai, ou observador de eventos padrão, é o objeto ou classe em que o novo objeto é instanciado.
-
O nome deste manipulador de eventos é o nome do objeto seguido por um sublinhado e o nome do evento.
Se você esquecer de especificar a parte Name, seu objeto nunca vai gerar eventos!
NEW
não é um operador. Você só pode usá-lo dentro de uma atribuição.
Mas você pode usar a função
Object.New em seu lugar.
Instanciando Forms (gb.qt4)
A classe Form é, por padrão o seu próprio observador evento, usando o nome do evento
Form
. Isto que devemos escrever.dentro do arquivo de classe de um formulário para interceptar eventos do mesmo formulário.
Public Sub Form_Open()
Print "I'm here"
End
Se você criar uma instância de um formulário usando a sintaxe
New MyForm As Name
, isso não vai mais acontecer. O formulário será ligado ao
objecto actual, e especialmente (uma vez que cada objeto pode ter no máximo um observador evento padrão) ele
não será ligado a si próprio.
Assim, o manipulador de eventos Form_Open () dentro do código do formulário não será mais chamado. Se você quiser várias classes para receber eventos de um único objeto,
use a classe
Observer.
Manipuladores de eventos comuns
Dois objetos diferentes podem ter o mesmo nome de evento. Assim, você pode gerenciar eventos de vários objetos no mesmo procedimento de evento, desde que esses objetos gerem os mesmos eventos.
Este recurso é utilizado pelo IDE para a implementação da propriedade Grupo
.
Exemplos
hButton = NEW Button(ME) AS "MyButton"
...
PUBLIC PROCEDURE MyButton_Click()
PRINT "My button was clicked !"
END
' Este exemplo cria 9 * 9 * 9 pequenas caixas de texto que podem ser acessados por meio do
' public Object[] array 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[] ' Cria a matriz
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) ' cria o próximo dos 9 * 9 * 9 TextBoxes
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
Instancias dinâmicas
Object = NEW ( ClassName [ , Constructor parameters... ] ) [ AS Name ]
Essa segunda sintaxe permite que você especifique o nome da classe dinamicamente como uma string.
Exemplos
' This creates an 3x3 array of float.
DIM MyArray AS NEW Float[3, 3]
' E isso também
DIM MyArray AS Object
DIM MyClassName AS String
MyClassName = "Float[]"
MyArray = NEW (MyClassName, 3, 3)
Veja também