VMainWindow: ejemplos

1. Cambiar titulo de la ventana principal

// Escribiendo el título directamente
theMainWindow.setWindowTitle( "Nuevo título" );

// Usando variables
var szTitulo = "Aplicación " + szAppName;
theMainWindow.setWindowTitle( szAppName );

2. Cambiar a modo MDI

theMainWindow.setBootMode(1);

3. Cambiar features de un dock

// Barra de titulo vertical + Cerrable
theMainWindow.setDockFeatures( "DOCK_MAIN", 0x09 );

4. Ver/Ocultar un dock

// -----------------------------------------------------------
// Muestra u oculta un dock en función de si está visible o no
// -----------------------------------------------------------
if ( theMainWindow.isDockVisible( "DOCK_MAIN" ) )
{
    theMainWindow.hideDock( "DOCK_MAIN" );
}
else
{
    theMainWindow.showDock( "DOCK_MAIN" );
};

5. Apagar el boton cerrar del marco

theMainWindow.customizeWindowHint(0x01|0x02|0x04|0x08);

6. Tener una opción de menú abierta sólo una vez en una pestaña

// --------------------------------------------------------------------------------
// Busca una vista con el título y si la encuentra la habilita
// Si no la encuentra ejecuta la acción
//
// El proceso recibe 2 parámetros a través de las variables locales
// TITULO = Título de la pestaña
// ACCION = Acción a ejecutar
// -------------------------- 
var numVistas = theMainWindow.viewsCount();
var ejecutar = true;

for ( i = 0; i < numVistas + 1; i++ )
{
    var vista = theMainWindow.currentView()
    if ( vista.title() == theRoot.varToString( "TITULO" ) )
    {
        ejecutar = false;
    }
    else
    {
        theMainWindow.nextView();
    };
}

// Si no se ha encontrado se lanza la acción para abrir la vista y se retorna true (para seguir)
if ( ejecutar == true )
{
    theMainWindow.runAction( theRoot.varToString( "ACCION" ) );
};

7. Deshabilitar 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;
                };
            };
        };
    };
};

8. Personalizar los colores de los días de calendarios de una aplicación

Tenemos un proceso 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 proceso
var proceso = theRoot;

//Colores de los días 1 de cada mes
var colorFondoDia1 = theRoot.varToString("COLOR_FONDO_DIA1");
var colorTextoDia1 = theRoot.varToString("COLOR_TEXTO_DIA1");

//Colores para los 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 los fines de semana y festivos
var diasFinde = "6,7";
var colorFondoFinde = theRoot.varToString("COLOR_FONDO_FINDE");
var colorTextoFinde = theRoot.varToString("COLOR_TEXTO_FINDE");

//Colorse para el día actual
var colorFondoHoy = theRoot.varToString("COLOR_FONDO_HOY");
var colorTextoHoy = theRoot.varToString("COLOR_TEXTO_HOY");

//Colores para el día seleccionado
var colorFondoDiaSel = theRoot.varToString("COLOR_FONDO_DIA_SEL");
var colorTextoDiaSel = theRoot.varToString("COLOR_TEXTO_DIA_SEL");

//Dïas 1 de todos los meses del año
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

theMainWindow.setCalendarStyle(colorFondoSemana, colorTextoSemana, diasSemana);

//Aplicar colores días festivos y findes	

theMainWindow.setCalendarStyle(colorFondoFinde, colorTextoFinde, diasFinde, null , fechas);

//Aplicar colores día 1 de cada mes
theMainWindow.setCalendarStyle(colorFondoDia1, colorTextoDia1, null , diasMeses);

//Aplicar colores hoy
theMainWindow.setCalendarStyle(colorFondoHoy, colorTextoHoy, "h");

//Aplicar colores día seleccionado
theMainWindow.setCalendarStyle(colorFondoDiaSel, colorTextoDiaSel, "s");