Saltar para o conteúdo principal
Versão: 20 R7 BETA

This

This : Object

ParâmetroTipoDescrição
ResultadoObjectCurrent element or object

Descrição

The This command returns a reference to the currently processed object.

Na maioria dos casos, o valor de Isso é determinado pela forma como uma função é chamada. Não pode ser definido por atribuição durante a execução e pode ser diferente de cada vez que a função é chamada.

This command can be used in different contexts, described below. Within these contexts, you will access object/collection element properties or entity attributes through This.<propertyPath>. For example, This.name or This.employer.lastName are valid pathes to object, element or entity properties.

Em qualquer outro contexto, o comando retorna Null.

Função de classe

Quando uma função construtor de classe é usada (com a new()), sua This estará ligada ao novo objeto que está sendo construído.

//Class: ob

Class Constructor

// Create properties on This as
// desired by assigning to them

This.a:=42
// num método 4D  
$o:=cs.ob.new()
$val:=$o.a //42

Quando chamar o construtor da superclasse num construtor utilizando a palavra-chave Super , esteja atento que This não deve ser chamado antes do construtor da superclasse, caso contrário é gerado um erro. Veja este exemplo.

Em qualquer caso, This refere-se ao objeto em que o método foi chamado, como se o método estivesse no objeto.

//Class: ob

Function f() : Integer
return This.a+This.b

Depois pode escrever num método projecto:

$o:=cs.ob.new()
$o.a:=5
$o.b:=3
$val:=$o.f() //8

Neste exemplo, o objeto atribuído à variável $o não tem sua própria propriedade f, herda-o de sua classe. Uma vez que f é chamado como um método de $o, o seu This refere-se a $o.

Objecto fórmula

In the context of the execution of a formula object created by the Formula or Formula from string commands, This returns a reference to the object currently processed by the formula.

For example, you want to use a project method as a formula encapsulated in an object:

 var $person : Object := New object
$person.firstName:="John"
$person.lastName:="Smith"
$person.greeting:=Formula(Greeting)
$g:=$person.greeting("hello") // returns "hello John Smith"
$g:=$person.greeting("hi") // returns "hi John Smith"

With the Greeting project method:

 #DECLARE($greeting : Text) : Text
return $greeting+" "+This.firstName+" "+This.lastName

List box

In the context of a list box associated to a collection or an entity selection, during the On Display Detail or the On Data Change events, This returns a reference to the collection element or entity accessed by the list box to display the current row.

nota

If you use a collection of scalar values in a list box, 4D creates an object for each element with a single value property. Thus, the element value is returned by the This.value non-assignable expression.

Exemplo 1

A collection of objects, each with this structure:

{  
"ID": 1234
"name": "Xavier",
"revenues": 47300,
"employees": [
"Allan",
"Bob",
"Charlie"
]
},{
"ID": 2563
"name": "Carla",
"revenues": 55000,
"isFemale": true
"employees": [
"Igor",
"Jane"
]
},...

In the list box, each column refers to one of the properties of the object, either directly (This.name), indirectly (This.employees.length), or through an expression (getPicture) in which can be used directly. O list box parece com:

The GetPicture project method is automatically executed during the On display detail event:

  //GetPicture Method
#DECLARE -> $genderPict : Picture
If(This.isFemale)
$genderPict:=Form.genericFemaleImage
Else
$genderPict:=Form.genericMaleImage
End if

Once the form is executed, you can see the result:

Exemplo 2

You want to display entities from the following structure in a list box:

You build a list box of the "Collection or entity selection" type with the following definition:

Note que:

  • This.ID, This.Title and This.Date directly refers to the corresponding attributes in the ds.Event dataclass.
  • This.meetings is a related attribute (based upon the One To Many relation name) that returns an entity selection of the ds.Meeting dataclass.
  • Form.eventList is the entity selection that is attached to the list box. The initialization code can be put in the on load form event:
 Case of  
:(Form event code=On Load)
Form.eventList:=ds.Event.all() //returns an entity selection with all entities
End case

Once the form is executed, the list box is automatically filled with the entity selection:

Veja também

Self
Super