This
This : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
Resultado | Object | ← | Elemento u objeto actual |
Descripción
El comando This
devuelve una referencia al objeto procesado actualmente.
En la mayoría de los casos, el valor de This
está determinado por cómo se llama una función. No se puede definir por asignación durante la ejecución, y puede ser diferente cada vez que se llame a la función.
Este comando puede utilizarse en diferentes contextos, que se describen a continuación. Within these contexts, you will access object/collection element properties or entity attributes through This.<propertyPath>. Por ejemplo, This.name o This.employer.lastName son rutas válidas a propiedades de objetos, elementos o entidades.
En cualquier otro contexto, el comando devuelve Null.
Función de clase
Cuando se utiliza una función constructora de clase (con la función new()
), su This
está vinculado al nuevo objeto que se está construyendo.
//Class: ob
Class constructor
// Crear las propiedades en This
// asignándolas
This.a:=42
// en un método 4D
$o:=cs.ob.new()
$val:=$o.a //42
Al llamar a la superclase del constructor en un constructor utilizando la palabra clave Super, tenga en cuenta que
This
no debe ser llamado antes del constructor de la superclase, de lo contrario se genera un error. Ver este ejemplo.
En todos los casos, This
se refiere al objeto sobre el que se ha llamado el método, como si el método fuera una función del objeto.
//Clase: ob
Function f() : Integer
return This.a+This.b
Entonces puede escribir en un método proyecto:
$o:=cs.ob.new()
$o.a:=5
$o.b:=3
$val:=$o.f() //8
En este ejemplo, el objeto asignado a la variable $o no tiene su propia propiedad f, la hereda de su clase. Como f es llamado como un método de $o, su This
se refiere a $o.
Objeto fórmula
En el contexto de la ejecución de un objeto fórmula creado por los comandos Formula o Formula from string, This
devuelve una referencia al objeto actualmente procesado por la fórmula.
Por ejemplo, desea utilizar un método proyecto como una fórmula encapsulada en un objeto:
var $person : Object := New object
$person.firstName:="John"
$person.lastName:="Smith"
$person.greeting:=Formula(Greeting)
$g:=$person.greeting("hello") // devuelve "hola John Smith"
$g:=$person.greeting("hi") // devuelve "hi John Smith"
Con el método proyecto Greeting:
#DECLARE($greeting : Text) : Text
return $greeting+" "+This.firstName+" "+This.lastName
List box
En el contexto de un list box asociado a una colección o una selección de entidades, durante los eventos On Display Detail
o On Data Change
, This
devuelve una referencia al elemento de colección o entidad a la que accede el list box para mostrar la línea actual.
Si utiliza una colección de valores escalares en un list box, 4D crea un objeto para cada elemento con una única propiedad value. Así, el valor del elemento es devuelto por la expresión no asignable This.value.
Ejemplo 1
Una colección de objetos, cada uno con esta estructura:
{
"ID": 1234
"name": "Xavier",
"revenues": 47300,
"employees": [
"Allan",
"Bob",
"Charlie"
]
},{
"ID": 2563
"name": "Carla",
"revenues": 55000,
"isFemale": true
"employees": [
"Igor",
"Jane"
]
},...
En el list box, cada columna se refiere a una de las propiedades del objeto, ya sea directamente (This.name), indirectamente (This.employees.length), o a través de una expresión (getPicture) en la que se puede usar directamente. El list box se ve así:
El método proyecto GetPicture se ejecuta automáticamente durante el evento On display detail:
//GetPicture Method
#DECLARE -> $genderPict : Picture
If(This.isFemale)
$genderPict:=Form.genericFemaleImage
Else
$genderPict:=Form.genericMaleImage
End if
Una vez ejecutado el formulario, podrá ver el resultado:
Ejemplo 2
Desea visualizar las entidades de la siguiente estructura en un list box:
Se crea un list box de tipo "Collection o entity selection" con la siguiente definición:
Note que:
- This.ID, This.Title y This.Date se refiere directamente a los atributos correspondientes en la base de datos ds.Event.
- This.meetings es un atributo relacionado (basado en el nombre de una relación de Uno a Muchos) que devuelve una selección de entidad de la base de datos ds.Meeting.
- Form.eventList es la selección de entidades que se adjunta al list box. El código de inicialización se puede poner en el evento on load del formulario:
Case of
:(Form event code=On Load)
Form.eventList:=ds.Event.all() //devuelve una selección de entidad con todas las entidades
End case
Una vez ejecutado el formulario, el list box se llena automáticamente con la selección de entidades:
Ver también
Propiedades
Número de comando | 1470 |
Hilo seguro | ✓ |