void setFormula( Number lenguaje, String formula )
Asigna una fórmula al control de edición de un campo objeto fórmula.
Parámetros:
lenguaje: ver enum de Lenguajes de fórmula.
formula: texto correspondiente al código de la fórmula.
void setTable( String szIdRefTable )
Asigna una tabla al control de edición fórmula. Esto nos permitirá editar fórmulas con un origen de una tabla que se especifica en tiempo de ejecución.
Parámetros:
szIdRefTable: cadena que contiene el identificador referencia de la tabla.
Ejemplos
Establecer una fórmula de Velneo en un control de edición fórmula
En tiempo de ejecución asignar de forma dinámica una tabla a un control de edición fórmula
Tenemos una tabla llamada FORMULAS que contiene con un campo de tipo objeto fórmula en la que queremos que los usuarios finales puedan crear registros en tiempo de ejecución para componer fórmulas operando con campos de cualquier tabla.
El campo está configurado así:
Así mismo, dispondremos de un campo alfabético para guardar el identificador de la tabla, al que llamaremos ID_REF_TABLA.
En base a la tabla seleccionada, en el control de edición fórmula, el usuario podrá configurar una tabla con los campos de la misma para su posterior uso en otros puntos de la aplicación.
Así, en el formulario de la tabla FORMULAS vamos a añadir:
Un comboBox sin contenido. En dicho combobox cargaremos los idRef de todas las tablas de la solución mediante el siguiente manejador de evento JavaScript:
Crearemos un control de tipo edición fórmula y le asociaremos el campo objeto fórmula.
El siguiente paso es crear un evento de cambio de selección simple, asociado al combobox que lea el ítem seleccionado, se lo asigne al control de edición fórmula y lo guarde en el campo ID_REF_TABLA:
Cuando queramos evaluar la fórmula tendremos que obtener el valor del campo del registro correspondiente en nuestra tabla de fórmulas y, desde un origen ficha de la tabla asociada, ejecutar la formula mediante un manejador de evento JavaScript:
// Capturamos el formulario
form = theRoot.dataView();
//Capturamos el control
var control = form.control("FRM");
//Establecemos la fórmula
control.setFormula(0, "3*2");
//Obtenemos el formulario en curso
var form = theRoot.dataView();
// Accedemos al control combo box. Se resuelve con el identificador del control
var combo = form.control("COM_BOX");
var mainProject = theApp.mainProjectInfo();
for( var nIndex=0; nIndex < mainProject.allTableCount(); nIndex++ )
{
var tableInfo = mainProject.allTableInfo( nIndex );
var nameTable = tableInfo.idRef();
combo.addItem(nameTable, nIndex);
}
var combo = theRoot.dataView().control("COM_BOX");
var controlFormula = theRoot.dataView().control("FRM");
//Obtenemos la posición del ítem seleccionado en el combo
var sel = combo.currentIndex;
//Extraemos el valor del ítem seleccionado (en este caso, el texto del registro, que es el idRef de la tabla)
var tabla = combo.itemText(sel);
//Asignamos el dato leído al campo ID_REF_TABLA
theRegisterIn.setField("ID_REF_TABLA", tabla)
//Asignamos el idRef de la tabla al control de edición fórmula
controlFormula.setTable(tabla);
theRoot.dataView().updateControls();
//La fórmula dinámica la hemos leído en un evento del formulario y la hemos guardado en una variable local llamada FORMULA
var formula = theRoot.varToString("FORMULA");
var resultado = theRoot.calcFormulaVelneo(formula);