# VFormulaEditBrowser

**Hereda de:** [VLineEditBrowser](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vlineeditbrowser).

Esta clase representa al control de edición con un botón que al ser pulsado presenta el cuadro de diálogo de edición de fórmulas.

## Indice de funciones

### **Generales**

void [setFormula](#setformula)( Number lenguaje, String formula )

void [setTable](#void-settable-string-szidreftable)( String szIdRefTable )

## Señales

Value changed

## Enumeraciones

**Lenguajes de fórmulas**

* Velneo = 0
* JavaScript = 1

## Documentación de funciones

### Funciones generales

#### void setFormula( Number lenguaje, String formula ) <a href="#setformula" id="setformula"></a>

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](https://doc.velneo.com/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/formulario/controles-de-edicion/edicion-formula)

```javascript
// Capturamos el formulario
form = theRoot.dataView();

//Capturamos el control
var control = form.control("FRM");

//Establecemos la fórmula
control.setFormula(0, "3*2");

```

### En tiempo de ejecución asignar de forma dinámica una tabla a un control de edición fórmula&#x20;

Tenemos una tabla llamada FORMULAS que contiene con un campo de tipo [objeto fórmula](https://doc.velneo.com/proyectos-objetos-y-editores/proyecto-de-datos/tabla/campo#objeto) 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í:

<figure><img src="https://1800796780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3LV49PQOXXZc5eok6Vpo%2Fuploads%2FrU3n8iIAEisW0peOBSTp%2Fimage.png?alt=media&#x26;token=c225a73f-5b5e-454e-bc68-2857b98505b5" alt=""><figcaption></figcaption></figure>

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](https://doc.velneo.com/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/formulario/controles-de-entrada/combobox) sin contenido.  En dicho combobox cargaremos los idRef de todas las tablas de la solución mediante el siguiente manejador de evento JavaScript:

```javascript
//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);
}
```

Crearemos un control de tipo [edición fórmula](https://doc.velneo.com/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/formulario/controles-de-edicion/edicion-formula) 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:

```javascript
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();
```

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:

```javascript
//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);
```
