VFormDataView

Hereda de: VAbstractDataView.

Esta clase representa a un objeto formulario.

Indice de funciones

De atributos

Boolean getRegister( VRegister reg )

Boolean isHardLocked()

Boolean isRegisterModified()

Boolean isSubForm()

Boolean setRegister( VRegister reg )

De widgets

Widget control( Number index )

Widget control( String szIdPrimarioControl )

Number controlCount()

VAbstractDataView dataViewActive()

VFormDataView mainForm()

De foco

void setFocusToFirst()

void setFocusToNext()

void setFocusToPrev()

De comandos

void accept()

void acceptConfirm()

void acceptNoClose()

void cancel()

void cancelConfirm()

void closeForm()

void eliminate()

void eliminateConfirm()

Boolean saveRegister()

void undo()

void undoConfirm()

void updateControls()

void updateRegister()

De maestros

void execEditMaster( String szIdCampoMaes, String szIdRefForm )

void execFindMaster( String szIdCampoMaes, String szIdRefLocaliz )

void execNewMaster( String szIdCampoMaes, String szIdRefForm )

Señales

Item: cambio de seleccionado

Documentación de funciones

Funciones de atributos

Boolean getRegister( VRegister reg )

Devuelve el registro del formulario y se lo pasa la objeto de la clase VRegister especificado.

Parámetros:

  • reg: objeto de la clase VRegister donde se almacenará la ficha del formulario.

Boolean isHardLocked()

Devuelve true si la ficha del formulario está bloqueada.

Boolean isRegisterModified()

Devuelve true si algún dato del registro ha sido modificado.

Boolean isSubForm()

Devuelve true si el formulario está incrustado dentro de otro y se comporta como un subformulario.

Boolean setRegister( VRegister reg )

Asigna un nuevo registro al formulario. Esto permite cambiar de ficha o incluso pasarle una ficha vacía para que el formulario permita dar altas.

Parámetros:

  • reg: objeto de la clase VRegister con el registro de la tabla a asignar al formulario.

Funciones de widgets

Widget control( Number index )

Devuelve un objeto de la clase Widget correspondiente al control especificado.

Parámetros:

  • index: número que corresponde con el índice o posición del control en la lista de controles del formulario.

Widget control( String szIdPrimarioControl )

Devuelve un objeto de la clase Widget correspondiente al control especificado.

Parámetros:

  • szIdPrimarioControl: identificador del control.

Number controlCount()

Devuelve el número de controles que contiene el formulario.

VAbstractDataView dataViewActive()

Devuelve un objeto de la clase VAbstractDataView correspondiente al objeto contenido en un control contenedor como pueden ser el separador, caja o pila de formularios, spliter o vista de datos.

VFormDataView mainForm()

Devuelve un objeto de la clase VFormDataView correspondiente al formulario principal donde está contenido el formulario. Esta función es útil cuando un formulario está siendo usado como subformulario de otro y deseamos conocer el formulario principal. Independiente del número de niveles de amalgama en los que se encuentre un subformulario esta función siempre devuelve el objeto formulario principal que contiene a todo el resto.

Funciones de foco

void setFocusToFirst()

Sitúa el foco en el primer control del formulario.

void setFocusToNext()

Sitúa el foco en el siguiente control del formulario según el orden de tabulación establecido.

void setFocusToPrev()

Sitúa el foco en el anterior control del formulario según el orden de tabulación establecido.

Funciones de comandos

void accept()

Equivale al comando de botón Aceptar que graba el registro y cierra el formulario.

void acceptConfirm()

Equivale al comando de botón Aceptar controlado que graba el registro y cierra el formulario previa confirmación por parte del usuario.

void acceptNoClose()

Equivale al comando de botón Aceptar que graba el registro y no cierra el formulario. Esta función está pensada para dar altas continuas sin cerrar el formulario.

Esta función sólo es válida para formulario en cuadro de diálogo.

void cancel()

Equivale al comando de botón Cancelar que cierra el formulario sin guardar los cambios.

void cancelConfirm()

Equivale al comando de botón Cancelar controlado que cierra el formulario sin guardar los cambios previa confirmación por parte del usuario.

void closeForm()

Esta función sólo cierra el formulario. No guarda la información del registro. Si deseamos almacenar la información del registro antes de cerrar el formulario debemos usar la función saveRegister().

void eliminate()

Equivale al comando de botón Eliminar que borra el registro y cierra el formulario.

void eliminateConfirm()

Equivale al comando de botón Eliminar que borra el registro y cierra el formulario previa confirmación por parte del usuario.

Boolean saveRegister()

Guarda todos los cambios del registro. Esta función no cierra el formulario por lo que equivale a aplicar los cambios y seguir editando.

void undo()

Equivale al comando de botón Deshacer que retrocede todas las operaciones de la transacción en curso y cierra el formulario.

void undoConfirm()

Equivale al comando de botón Deshacer controlado que retrocede todas las operaciones de la transacción en curso y cierra el formulario previa confirmación por parte del usuario.

void updateControls()

Mueve los datos existentes en los campos del registro a los controles y refresca la información en el formulario. Es muy útil para refrescar los controles del formulario tras haber realizado cambios en la información de los registros que se están visualizando. Esta función no cierra el formulario.

void updateRegister()

Mueve los datos de los controles a los campos del registro y realiza la actualización del mismo. Esta función no cierra el formulario.

Funciones de maestros

void execEditMaster( String szIdCampoMaes, String szIdRefForm )

Ejecuta el comando de botón Edición de maestro asociado a un control.

Parámetros:

  • szIdCampoMaes: identificador del campo maestro.

  • szIdRefForm: identificador del formulario que se mostrará para la edición del registro.

void execFindMaster( String szIdCampoMaes, String szIdRefLocaliz )

Ejecuta el comando de botón Localizar maestro asociado a un control.

Parámetros:

  • szIdCampoMaes: identificador del campo maestro.

  • szIdRefForm: identificador del localizar que se mostrará para la selección del registro.

void execNewMaster( String szIdCampoMaes, String szIdRefForm )

Ejecuta el comando de botón Alta de maestro asociado a un control.

Parámetros:

  • szIdCampoMaes: identificador del campo maestro.

  • szIdRefForm: identificador del formulario que se mostrará para la edición del registro.

Ejemplos

1. Habilita todos los controles de un formulario

/**
 * --------------------------------------------------------------------------------
 * Habilita los controles del formulario
 *
 * @param {VFormDataView} formularioParam Formulario a procesar
 * --------------------------------------------------------------------------------
 */
var habilitaControles = function ( formularioParam )
{
    if ( formularioParam )
    {
        var control;

        for ( var numControl = 0; numControl < formulario.controlCount(); numControl ++ )
        {
            control = formulario.control( numControl );

            if ( control )
            {
                control.enabled = true;
            };
        };
    };
};

2. Deshabilita todos los controles de un formulario

/**
 * --------------------------------------------------------------------------------
 * Deshabilita los controles del formulario
 *
 * @param {VFormDataView} formularioParam Formulario a procesar
 * --------------------------------------------------------------------------------
 */
var deshabilitaControles = function ( formularioParam )
{
    if ( formularioParam )
    {        
        var tiposEnabled = [ VMainWindow.WTypeDataView, VMainWindow.WTypeMdiView, 
                             VMainWindow.WTypeWebView, VMainWindow.WTypeTabWidget,
                             VMainWindow.WTypeStackedWidget, VMainWindow.WTypeToolBox,
                             VMainWindow.WTypeSplitter, VMainWindow.WTypeGroupBox ];
        var control;

        for ( var numControl = 0; numControl < formulario.controlCount(); numControl++ )
        {
            control = formulario.control( numControl );

            if ( control )
            {
                tipo = theMainWindow.widgetType( control );
                if ( tiposEnabled.indexOf( tipo ) === -1 )
                {
                    control.enabled = false;
                };
            };
        };
    };
};

3. Cargar una ficha existente en un formulario de altas

Se trata de hacer que, en un formulario de altas de una tabla, el usuario introduzca un ID y ejecutar un manejador de evento que comprueba si existe la ficha. Si existe, editarla en el mismo formulario.

//Obtenemos el formulario en curso
form = theRoot.dataView(); 

//Obtenemos el idRef la tabla del formulario
var formInfo = form.objectInfo(); 
var tabla = formInfo.inputTable().idRef(); 

//Leemos el dato introducido en el campo ID del formulario
var ID = theRegisterIn.fieldToInt("ID");

//Buscamos el registro 
var lista = new VRegisterList(theRoot); 
lista.setTable(tabla); 
lista.load("ID", [ID]);

//Si existe el registro, lo añadimos a la ficha
if (lista.size() > 0 )
{
    newReg = new VRegister( theRoot ); 
    newReg.setTable( theRegisterIn.tableInfo().idRef()); 
    newReg = lista.readAt( 0 );
    form.setRegister( newReg ); 

    //forzamos el refresco de los controles del formuluario
    theRoot.dataView().updateControls();
}

Podemos crear un único script en el inspector de scripts y en el formulario simplemente crear un manejador de evento JavaScript que lo incluya. Ejemplo:

#include "(CurrentProject)/edit fch.js"

De este modo, un único script valdrá para cualquier formulario de cualquier tabla.

4. Comprobar si el formulario está incrustado como subformulario en otro formulario

var formulario = theRoot.dataView();
var esSubFormuario = formulario.isSubForm();

5. Desde un subformulario, ejecutar un manejado de evento que añade otro subformulario al el separador donde está incrustado

//Obtenemos el formulario principal
var formPrincipal = theRoot.dataView().mainForm();

//Accederemos al control separador

var idSeparador = "SEPARADOR";
var nuevoNombre = "Nuevo nombre";
var tabs = formPrincipal.control(idSeparador);

//Añadir un subformulario al separador
var form = tabs.addForm("Tutor de formularios/ARTICULO_SUB", "");
var titulo= tabs.setLabelText( 0, nuevoNombre );

6. Aceptar el formulario principal desde un subformulario del mismo

//Accedemos al formulario principal
var view = theRoot.dataView().mainForm();
 
//Aceptamos el formulario principal
view.accept();

Última actualización