Comment on page
VFormDataView
Esta clase representa a un objeto formulario.
void setCalendarStyle(String colorFondo, String colorTexto, String DíasSemana, String CadenaDiaMeses, Array fechas)
Item: cambio de seleccionado
Parámetros:
Devuelve true si la ficha del formulario está bloqueada.
Devuelve true si algún dato del registro ha sido modificado.
Devuelve true si el formulario está incrustado dentro de otro y se comporta como un subformulario.
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:
Parámetros:
- index: número que corresponde con el índice o posición del control en la lista de controles del formulario.
Parámetros:
- szIdPrimarioControl: identificador del control.
Devuelve el número de controles que contiene el formulario.
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.
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.
Permite configurar la interfaz de los días de los calendarios del formulario en curso. Se aplicará a todos los controles de tipo calendario, edición fecha con calendario y edición fecha/hora con calendario. Equivale al comando de instrucción de proceso Interfaz: Establecer estilo de los días de calendarios.
Parámetros:
- colorFondo: cadena con el color de fondo a aplicar a los calendarios. Podemos especificar, o bien su valor hexadecimal (ejemplo:
"#FFFFFF"
), o bien su nombre (ejemplo:"white"
). Este parámetro es opcional. Si no se especifica, no se aplicará ningún color de fondo al día o días que se configuren en el resto de los parámetros de la función. - String colorTexto: cadena con el color de texto a aplicar a los calendarios. Podemos especificar, o bien su valor hexadecimal (ejemplo:
"#FFFFFF"
), o bien su nombre (ejemplo:"white"
). Este parámetro es opcional. Si no se especifica, no se aplicará ningún color de texto al día o días que se configuren en el resto de los parámetros de la función. - String DíasSemana: cadena con los números de día de 1 a 7 o letras para los días a los que se aplicará el estilo separados por comas:
- De 1 a 7, día de la semana de lunes a domingo.
"H"
o"T"
para aplicar estilo al día de hoy (admitir mayúsculas y minúsculas). Ejemplo:"1,2,3,4,5"
."S"
para aplicar estilo al día seleccionado en el calendario (admitir mayúsculas y minúsculas).- Este parámetro es opcional, si no se especifica, no se aplicará a ningún día.
- String CadenaDiaMeses: cadena con los días y meses del año a los que se aplicará el estilo en todos los años, separados por comas y con el formato (d/M), ejemplo:
"1/1,02/02,10/10"
. Este parámetro es opcional, si no se especifica nada, no se aplicará a ningún día/mes en concreto. - Array fechas: En este parámetro podremos especificar, o bien un dato de tipo fecha o bien un array con las fechas a las que aplicar el estilo. Este parámetro es opcional, si no lo aplicamos, no se aplicarán los colores configurados a ninguna fecha concreta.
Sitúa el foco en el primer control del formulario.
Sitúa el foco en el siguiente control del formulario según el orden de tabulación establecido.
Sitúa el foco en el anterior control del formulario según el orden de tabulación establecido.
Equivale al comando de botón Aceptar que graba el registro y cierra el formulario.
Equivale al comando de botón Aceptar controlado que graba el registro y cierra el formulario previa confirmación por parte del usuario.
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.
Equivale al comando de botón Cancelar que cierra el formulario sin guardar los cambios.
Equivale al comando de botón Cancelar controlado que cierra el formulario sin guardar los cambios previa confirmación por parte del usuario.
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().
Equivale al comando de botón Eliminar que borra el registro y cierra el formulario.
Equivale al comando de botón Eliminar que borra el registro y cierra el formulario previa confirmación por parte del usuario.
Guarda todos los cambios del registro. Esta función no cierra el formulario por lo que equivale a aplicar los cambios y seguir editando.
Equivale al comando de botón Deshacer que retrocede todas las operaciones de la transacción en curso y cierra el formulario.
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.
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.
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.
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.
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.
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.
/**
* --------------------------------------------------------------------------------
* 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;
};
};
};
};
/**
* --------------------------------------------------------------------------------
* 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;
};
};
};
};
};
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.
var formulario = theRoot.dataView();
var esSubFormuario = formulario.isSubForm();
//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 );
//Accedemos al formulario principal
var view = theRoot.dataView().mainForm();
//Aceptamos el formulario principal
view.accept();
Tenemos un formulario con variables locales definidas para establecer colores de fondo y texto de:
Días laborables (de lunes a viernes).
Fines de semana y festivos (sábados, domingos y festivos del año).
Para destacar los días 1 de cada mes.
Para destacar el día actual.
Para destacar el día seleccionado en el calendario.
Además, disponemos de una variable local array con las fechas de los días festivos del año.
Y el proceso ejecuta el script siguiente para personalizar los calendarios:
//Leer variables del formulario
var formulario = theRoot.dataView();
//Colores para días 1 de cada mes
var colorFondoDia1 = theRoot.varToString("COLOR_FONDO_DIA1");
var colorTextoDia1 = theRoot.varToString("COLOR_TEXTO_DIA1");
//Colores días laborables
var diasSemana = "1,2,3,4,5";
var colorFondoSemana = theRoot.varToString("COLOR_FONDO_SEMANA");
var colorTextoSemana = theRoot.varToString("COLOR_TEXTO_SEMANA");
//Colores para fines de semana y festivos
var diasFinde = "6,7";
var colorFondoFinde = theRoot.varToString("COLOR_FONDO_FINDE");
var colorTextoFinde = theRoot.varToString("COLOR_TEXTO_FINDE");
//Colore día actual
var colorFondoHoy = theRoot.varToString("COLOR_FONDO_HOY");
var colorTextoHoy = theRoot.varToString("COLOR_TEXTO_HOY");
//Colore día seleccionado
var colorFondoDiaSel = theRoot.varToString("COLOR_FONDO_DIA_SEL");
var colorTextoDiaSel = theRoot.varToString("COLOR_TEXTO_DIA_SEL");
var diasMeses = "1/1,1/2,1/3,1/4,1/5,1/6,1/7,1/8,1/9,1/10,1/11,1/12";
//Generar array de fechas
var tamArray = theRoot.varToInt("TAMAÑO");
var fechas = [];
for (var i = 0; i < tamArray; i++) {
fechas.push( new Date(theRoot.varToDate("FECHAS_ARRAY", i)));
}
//Aplicar colores días laborables
formulario.setCalendarStyle(colorFondoSemana, colorTextoSemana, diasSemana);
//Aplicar colores días festivos y findes
formulario.setCalendarStyle(colorFondoFinde, colorTextoFinde, diasFinde, null , fechas);
//Aplicar colores día 1 de cada mes
formulario.setCalendarStyle(colorFondoDia1, colorTextoDia1, null , diasMeses);
//Aplicar colores hoy
formulario.setCalendarStyle(colorFondoHoy, colorTextoHoy, "h");
//Aplicar colores día seleccionado
formulario.setCalendarStyle(colorFondoDiaSel, colorTextoDiaSel, "s");
Última actualización 6mo ago