4D v16.3OB Get |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
OB Get
|
OB Get ( objeto ; propriedade {; tipo} ) -> Resultado | ||||||||
Parâmetro | Tipo | Descrição | ||||||
objeto | Objeto, Campo Objeto |
![]() |
Objeto estruturado | |||||
propriedade | Texto |
![]() |
Nome da propriedade a ler | |||||
tipo | Inteiro longo |
![]() |
Tipo ao qual converter o valor | |||||
Resultado | Booleano, Data, Objeto, Ponteiro, Real, Texto |
![]() |
Valor atual de propriedade | |||||
O comando OB Get devolve o valor atual da propriedade do objeto, convertido opcionalmente no tipo definido.
objeto deve ter sido definido com o comando C_OBJECT ou designar um campo objeto 4D..
Nota: este comando suporta definições de atributo em objetos 4D Write Pro, como o comando WP GET ATTRIBUTES (ver o exemplo 9). Mas, diferente de WP GET ATTRIBUTES, OB Get não permite manipular diretamente uma variável ou campo como valor de atributo.
No parâmetro propriedade, passe a etiqueta da propriedade a ler. Tenha em conta que o parâmetro propriedade é sensível a maiúsculas e minúsculas
Por padrão, 4D devolve o valor da propriedade em seu tipo original. Pode "forçar" a escritura do valor devolvido utilizando o parâmetro opcional tipo. Para isso, em tipo passe uma das seguintes constantes que se encontram no tema Tipos de campos e variáveis:
Constante | Tipo | Valor |
Is Boolean | Inteiro longo | 6 |
Is date | Inteiro longo | 4 |
Is longint | Inteiro longo | 9 |
Is object | Inteiro longo | 38 |
Is pointer | Inteiro longo | 23 |
Is real | Inteiro longo | 1 |
Is text | Inteiro longo | 2 |
Is time | Inteiro longo | 11 |
O comando devolve o valor da propriedade. Vários tipos de dados estão suportados. Leve em conta que:
Recuperação de um valor de tipo texto:
C_OBJECT($ref)
C_TEXT($FirstName)
OB SET($ref;"FirstName";"Harry")
$FirstName:=OB Get($ref;"FirstName") // $FirstName = "Harry" (text)
Recuperação de um valor real convertido em inteiro longo:
OB SET($ref ;"age";42)
$age:=OB Get($ref ;"age") // $age é um número real (default)
$age:=OB Get($ref ;"age";Is longint) // $age é um inteiro longo
Recuperação dos valores de um objeto:
C_OBJECT($ref1;$ref2)
OB SET($ref1;"LastName";"Smith") // $ref1={"LastName":"Smith"}
OB SET($ref2;"son";$ref1) // $ref2={"son":{"LastName":"Smith"}}
$son:=OB Get($ref2;"son") // $son={"LastName":"john"} (object)
$sonsName:=OB Get($son ;"name") // $sonsName="john" (text)
Modificando a idade de um empregado duas vezes:
C_OBJECT($ref_john;$ref_jim)
OB SET($ref_john;"name";"John";"age";35)
OB SET($ref_jim;"name";"Jim";"age";40)
APPEND TO ARRAY($myArray;$ref_john) // criamos um objeto array
APPEND TO ARRAY($myArray;$ref_jim)
// mudamos a idade de John de 35 a 25
OB SET($myArray{1};"age";25)
// mudamos a idade de "John" no array
For($i;1;Size of array($myArray))
If(OB Get($myArray{$i};"name")="John")
OB SET($myArray{$i};"age";36) // em troca de 25
// $ref_john={"name":"John","age":36}
End if
End for
Não serialização de uma cadeia de dados com formato ISO:
C_OBJECT($object)
C_DATE($birthday)
C_TEXT($birthdayString)
OB SET($object;"Birthday";"1990-12-25T12:00:00Z")
$birthdayString:=OB Get($object;"Birthday")
// $birthdayString="1990-12-25T12:00:00Z"
$birthday:=OB Get($object;"Birthday";Is date)
// $birthday=25/12/90
Utilização de objetos aninhados:
C_OBJECT($ref1;$child;$children)
C_TEXT($childName)
OB SET($ref1;"firstname";"John";"lastname";"Monroe")
//{"firstname":"john","lastname";"Monroe"}
OB SET($children;"children";$ref1)
$child:=OB Get($children;"children")
//$son = {"firstname":"John","lastname":"Monroe"} (object)
$childName:=OB Get($child;"lastname")
//$childName = "Monroe" (text)
//o
$childName:=OB Get(OB Get($children;"children");"lastname")
// $childName = "Monroe" (text)
Recuperação em 4D de uma hora armazenada em um objeto:
C_OBJECT($obj_o)
C_TIME($set_h;$get_h)
$set_h:=?01:00:00?+1
OB SET($obj_o;"myHour";$set_h)
// $obj_o == {"myHour":3601000}
// The time is stored in milliseconds
$get_h:=OB Get($obj_o;"myHour";Is time)
// $get_h == ?01:00:01?
// A hora é lida corretamente
Exemplos de manipulação de campos objeto 4D:
// Definir um valor
OB SET([People]Identity_OB;"First name";$firstName)
OB SET([People]Identity_OB;"Last name";$lastName)
// Obter um valor
$firstName:=OB Get([People]Identity_OB;"First name")
$lastName:=OB Get([People]Identity_OB;"Last name")
Em um método formulário, pode escrever:
If(Form event=On Validate)
OB SET([MyDocuments]My4DWP;"myatt_Last edition by";Current user)
OB SET([MyDocuments]My4DWP;"myatt_Category";"Memo")
End if
Também pode ler os atributos personalizados dos documentos:
vAttrib:=OB Get([MyDocuments]My4DWP;"myatt_Last edition by")
Produto: 4D
Tema: Objetos (Linguagem)
Número
1224
Criado por: 4D v14
Modificado: 4D v15
Modificado: 4D v15 R4
Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)