30
Velneo vDevelop
Scripts
Lenguajes
JavaScript
Clases
VApp: ejemplos

1. Obtener el numero total de tablas

1
var mainpro = theApp.mainProjectInfo();
2
var nTotalTablas = mainpro.allTableCount();
Copied!

2. Obtener el valor de una variable global

1
var timeLast = theApp.varGlobalToString( "CINE_DAT/TIME_LAST_SUGEST" );
Copied!

3. Regenerar índices de todas las tablas

1
var project = theApp.mainProjectInfo();
2
for( var x=0; x < project.allTableCount(); ++x )
3
{
4
var tableInfo = project.allTableInfo(x);
5
theApp.regenIndexes( tableInfo.idRef(), true );
6
}
Copied!

4. Funciones generales

1
// Si el componente ejecutado es vClient se emite un pitido
2
if ( theApp.exeName() == "vClient" ) {
3
theApp.beep();
4
}
5
6
// Se muestra el nombre del componente en ejecución
7
alert( "Componente en ejecución: " + theApp.exeName() );
8
9
// Mostrar info local en curso
10
alert( "Información local en curso" + "n" + "n" +
11
"Código del idioma = " + theApp.currentLanguageCode() + "n" +
12
"Código ISO del idioma = " + theApp.currentLanguageIsoCode() + "n" +
13
"Nombre del idioma = " + theApp.currentLanguageName() + "n" +
14
"Código del país = " + theApp.currentCountryCode() + "n" +
15
"Código ISO del país = " + theApp.currentCountryIsoCode() + "n" +
16
"Nombre del país = " + theApp.currentCountryName() + "n" +
17
"Separador decimal = " + theApp.currentDecimalPoint() );
18
19
// Mostrar info local del sistema
20
alert( "Información local del sistema" + "n" + "n" +
21
"Código del idioma = " + theApp.sysLanguageCode() + "n" +
22
"Código ISO del idioma = " + theApp.sysLanguageIsoCode() + "n" +
23
"Nombre del idioma = " + theApp.sysLanguageName() + "n" +
24
"Código del país = " + theApp.sysCountryCode() + "n" +
25
"Código ISO del país = " + theApp.sysCountryIsoCode() + "n" +
26
"Nombre del país = " + theApp.sysCountryName() + "n" +
27
"Separador decimal = " + theApp.sysDecimalPoint() + "n" +
28
"Nombre de la máquina = " + theApp.sysMachineName() );
Copied!

5. Funciones de variables globales

1
// Almacenamos los valores en variables globales
2
theApp.setGlobalVar( "VJS_DAT/VAR_GLO_ALF", "ABC" );
3
theApp.setGlobalVar( "VJS_DAT/VAR_GLO_NUM", 123.45 );
4
theApp.setGlobalVar( "VJS_DAT/VAR_GLO_TMP", "2012/05/03 08:31:18" );
5
theApp.setGlobalVar( "VJS_DAT/VAR_GLO_FCH", "2012/05/04" );
6
theApp.setGlobalVar( "VJS_DAT/VAR_GLO_HOR", "09:53:23" );
7
8
// Se comprueba si la variable global alfabética está vacía
9
alert( "¿Está vacía la variable global alfabética? " +
10
theApp.isGlobalVarEmpty( "VJS_DAT/VAR_GLO_ALF" ) );
11
12
// Recuperamos y mostramos el valor de las variables globales
13
alfabetica = theApp.globalVarToString( "VJS_DAT/VAR_GLO_ALF" );
14
numero_decimal = theApp.globalVarToDouble( "VJS_DAT/VAR_GLO_NUM" );
15
numero_entero = theApp.globalVarToInt( "VJS_DAT/VAR_GLO_NUM" );
16
tiempo = theApp.globalVarToDateTime( "VJS_DAT/VAR_GLO_TMP" );
17
fecha = theApp.globalVarToDate( "VJS_DAT/VAR_GLO_FCH" );
18
hora = theApp.globalVarToTime( "VJS_DAT/VAR_GLO_HOR" );
19
alert( "Valor de las variables globales: n" + alfabetica + "n" +
20
numero_decimal + "n" + numero_entero + "n" +
21
tiempo + "n" + fecha + "n" + hora );
Copied!

6. Funciones de constantes

1
alert( theApp.constant( "VJS_DAT/MSG_ERR_ID" ) );
Copied!

7. Funciones de DOS (Sistema operativo de disco)

1
// Se preparan las variables con los nombres de ficheros
2
fileFrom = "/fichero.txt";
3
fileTo = "/fichero.txt.bck";
4
5
// Si existe el fichero destino se elimina
6
if ( theApp.existsFile( fileTo) )
7
{
8
if ( confirm( "¿Desea eliminar el fichero " + fileTo + "?", "Confirmar" ) )
9
{
10
theApp.removeFile( fileTo);
11
}
12
}
13
14
// Si existe el fichero se copia
15
if ( theApp.existsFile( fileFrom ) )
16
{
17
if ( theApp.copyFile( fileFrom, fileTo) )
18
{
19
alert( "Se ha copiado el fichero correctamente", "Notificación" );
20
21
// Se crea un acceso directo al fichero origen
22
theApp.linkFile( fileFrom, fileFrom + ".lnk" );
23
24
// Se renombra el fichero copiado
25
theApp.renameFile( fileTo, fileTo + "1" );
26
} else {
27
alert( "No se ha copiado el fichero correctamente", "Notificación" );
28
}
29
} else {
30
alert( "No se ha encontrado el fichero " + fileFrom, "Aviso" );
31
}
32
33
// Cambiamos el directorio en curso
34
if ( theApp.setCurrentPath( theApp.rootPath() + "/instancias" ) )
35
{
36
alert( "Se ha cambiado el path en curso", "Notificación" );
37
}
38
39
// Mostrar los path de los directorios
40
alert( "Estos son los directorios de trabajo:" + "n" +
41
"En curso: " + theApp.currentPath() + "n" +
42
"Root: " + theApp.rootPath() + "n" +
43
"Home: " + theApp.homePath() + "n" +
44
"Temp: " + theApp.tempPath() );
45
46
// Limpieza de un path
47
alert( theApp.cleanPath( "//instancias\appdatos//2012", "Senda" ) );
48
49
// Revisar los dispositivos de disco del sistema operativo
50
var drivesNumber =0;
51
var drivesList = "";
52
theApp.loadDrives();
53
54
for ( i=0; i{
55
drive = theApp.driveAt( i );
56
drivesNumber++;
57
drivesList += drive.path() + "n";
58
}
59
60
alert( "Se han encontrado " + drivesNumber.toString() + " dispositivos de disco: nn" +
61
drivesList );
Copied!

8. Funciones de herramientas de base de datos

1
// Confirmamos si desea regenerar área de datos, índices o todos
2
var regenAreaDatos = confirm( "¿Desea regenerar el área de datos de todas las tablas?", "Confirmación" );
3
var regenIndexes = confirm( "¿Desea regenerar los índices de todas las tablas?", "Confirmación" );
4
5
// Si hay algo que regenerar se leen todas las tablas de la aplicación incluídas las heredadas
6
if ( regenAreaDatos | regenIndexes )
7
{
8
var msgErrors = "";
9
var mainProject = theApp.mainProjectInfo();
10
11
for( var nIndex=0; nIndex < mainProject.allTableCount(); nIndex++ )
12
{
13
var tableInfo = mainProject.allTableInfo( nIndex );
14
var table = tableInfo.idRef();
15
16
// Sólo se regenera el área de datos de las tablas en disco
17
if ( tableInfo.isInMemory() == false )
18
{
19
if ( !theApp.regenDataArea( table, true ))
20
{
21
msgErrors += "Falló la regeneración del área de datos de la tabla " + table + "n";
22
}
23
}
24
25
// Se regeneran los índices de todas las tablas sean en disco o en memoria
26
if ( !theApp.regenIndexes( table, true ))
27
{
28
msgErrors += "Falló la regeneración de índices de la tabla " + table + "n";
29
}
30
}
31
32
// Mensaje final del resultado de las regeneraciones
33
if (msgErrors.length == 0)
34
{
35
alert( "El proceso de regeneración ha finalizado correctamente", "Notificación" );
36
} else {
37
alert( "Se han producido los siguientes errores: n" + msgErrors, "¡Atención!" );
38
}
39
}
Copied!

9. Cálculo de Hash

1
// Calcular el hash de una cadena con SHA-2 512
2
3
theApp.calculateHash( "", VApp.Sha2_512 )
Copied!

10. Cambiar el marco principal de la aplicación

1
theApp.setFrame( "gestion_app/SUPERVISOR" );
Copied!

11. Rellenar un combo box de un formulario con la lista de cámaras del dispositivo

1
//Inicialización de variables
2
var aCamaras = Array;
3
var aCamarasDescripcion = Array;
4
5
//Obtenemos el control combo box
6
var oCombo = theRoot.dataView().control("CBX_CAMARAS");
7
8
//Comprobar cámaras disponibles
9
aCamaras = theApp.availableCameras();
10
11
//Si hay cámaras se añade la lista al combo, si no hay, se indica en el combo
12
13
if (aCamaras.length == 0) {
14
oCombo.addItem("No se ha detectado ninguna cámara");
15
}
16
else {
17
18
aCamarasDescripcion = theApp.availableCameraDescriptions();
19
20
//Cargamos en el combotodas las camaras detectadas por el sistema
21
for ( var i = 0; i < aCamarasDescripcion.length; i++ )
22
{
23
oCombo.addItem( aCamarasDescripcion[ i ] );
24
}
25
}
Copied!

12. Activar la cámara que el usuario haya seleccionado en el combo del ejemplo 11

1
// Obtenemos los nombres de las cámaras, que es lo que se usa para seleccionar la cámara
2
var aCamaras = theApp.availableCameras();
3
4
//Combobox
5
var oCombo = theRoot.dataView().control("CBX_CAMARAS");
6
7
// Objeto imagen del formulario
8
var objetoImagen = theRoot.dataView().control("IMAGEN");
9
10
// Posición del combo seleccionada que ha de corresponderse con el array de nombres de la cámara para que funcione
11
var i = oCombo.currentIndex;
12
13
// Nos quedamos con el nombre correspondiente a la cámara seleccionada por el array
14
var ba = new VByteArray();
15
ba.setText(aCamaras[i]);
16
17
// Iniciar cámara
18
objetoImagen.startCamera( ba );
Copied!