HDI 4DVP Colección y Objeto en Funciones Personalizadas
Las funciones personalizadas son una potente característica de 4D View Pro que le permite ampliar su funcionalidad y realizar cálculos u operaciones personalizadas adaptadas a sus necesidades específicas. Ahora puede aceptar colecciones como parámetros de funciones personalizadas que contengan valores de rangos de celdas especificados por el usuario.
Gestión de colecciones
Creación de la función personalizada
En primer lugar, crearemos la función llamada por 4D View Pro. Esta función, llamada _averageNonZeroValues(), toma un parámetro de colección y se define así:
Function _averageNonZeroValues($values : Collection) : Real
// Average of the non zero and non null values in the range
// Sum of all the collection values
var $total:=$values.flat().sum()
// Calculates the number of cells containing a value other than 0 or NUll
var $NonZeroValueNumber : Integer:=$values.flat().count()-$values.flat().countValues(0)
// Returns the calculation result to be displayed in the cell
return $NonZeroValueNumber>0 ? $total/$NonZeroValueNumber : 0
Habilitar la función personalizada en 4D View Pro
Function averageNonZeroValues()->$customFunction : Object
var $this : Object
$customFunction:={}
$this:=This // Capture This for the formula
// formula that will be called when the custom function is used in the spreadsheet
$customFunction.formula:=Formula($this._averageNonZeroValues($1))
// If a parameter is of collection type, the declaration of the custom function parameters is mandatory
$customFunction.parameters:=[{name: "Values"; type: Is collection}]
// Summary of the custom function using in the autocomplete popup
$customFunction.summary:="Returns the average of non zero values"
// Expected number of parameters
$customFunction.minParams:=1
$customFunction.maxParams:=1
Gestión de objetos
- Establecer una función destinada a ser ejecutada por 4D View Pro para realizar el cálculo.
- Formular un objeto para especificar las opciones de la función personalizada.
Para este ejemplo, completaremos la clase CustomFunctionCreator .
Creación de la función personalizada
En primer lugar, crearemos la función llamada por 4D View Pro. Esta función, llamada _modifiedProperties(), toma un parámetro de objeto y se define así:
Function _modifiedProperties($object: Object) : Text
// Comparison between the properties in the Form.people object and the properties in the spreadsheet
var $myObject : Object:=$object.value
// Search the object attributes modified between the people data and the data in the spreadsheet
For each ($property; $myObject)
// comparison between the object returned by the spreadsheet and the Form.people object
If ($myObject[$property]#Form.people[$property])
return "Data modified."
End if
End for each
return ""
Habilitar la función personalizada en 4D View Pro
Function modifiedProperties()->$customFunction : Object
var $this : Object
$customFunction:={}
$this:=This // Capture This for the formula
// formula that will be called when the custom function is used in the spreadsheet
$customFunction.formula:=Formula($this._modifiedProperties($1))
// If a parameter is of collection type, the declaration of the custom function parameters is mandatory
$customFunction.parameters:=[{name: "Values"; type: Is object}]
// Summary of the custom function using in the autocomplete popup
$customFunction.summary:="Returns a message when the object is modified by the user"
// Expected number of parameters
$customFunction.minParams:=1
$customFunction.maxParams:=1
Declaración de la función personalizada
El último paso es llamar a VP SET CUSTOM FUNCTIONS al evento«on Load » del formulario utilizando las funciones averageNonZeroValues() y modifiedProperties():
Case of
: (FORM Event.code=On Load)
var $customFunctions:={}
// Declaration of authorized custom functions in the 4D View Pro area
var $creator:=cs.CustomFunctionsCreator.new()
$customFunctions.MY_AVERAGENONZEROVALUES:=$creator.averageNonZeroValues()
$customFunctions.MY_MODIFICATIONS:=$creator.modifiedProperties()
VP SET CUSTOM FUNCTIONS("ViewProArea"; $customFunctions)
End case
Ahora, tiene 2 nuevas funciones utilizables en su área 4D View Pro:
- «MY_AVERAGENONZEROVALUES»:
- «MIS_MODIFICACIONES»:
En conclusión, el uso de funciones personalizadas en 4D View Pro eleva la funcionalidad de la hoja de cálculo a nuevas cotas, permitiendo cálculos y operaciones a medida. Consulte nuestra documentación para más información.