# VApp

Este clase representa a la aplicación. Dispone de funciones para ver información de sus proyectos, acceso a variables globales, constantes, utilidades de base de datos, disco, etc.

### El objeto theApp

Se trata de un objeto de esta clase.

Todos los scripts están conectados a un objeto global y único que representa a la aplicación cuyo nombre es theApp. Este objeto está disponible en ejecución de scripts en Velneo vClient, pero también en extensiones en Velneo vDevelop, aunque no aquellas funciones que tienen sentido únicamente en ejecución (Ver documentación de [VExtension](vextension)).

### Herencia

Hay que tener en cuenta que la aplicación da acceso al proyecto principal con el que se ha arrancado la aplicación y todos sus objetos heredados lo que permite el acceso y uso de cualquier objeto de la aplicación desde cualquier script.

## Indice de funciones

### **Generales**

void [beep](#beep)()

String [calculateHash](#calculatehash)( String szAlgoritmoHash, String szTextCodec )

String [exeName](#exename)()

void [notify](#void-notify-string-szmensaje-string-szidreficontext-string-szidreficonclose-int-secondsduration)( String szMensaje, String szIdRefIconText, String szIdRefIconClose, int secondsDuration)

void [processEvents](#processevents)()

String [stripHtml](#striphtml)( String szHtml )

void [wait](#wait)( Number miliSegs )

### **De proyectos**

VProjectInfo [mainProjectInfo](#mainprojectinfo)()

VProjectInfo [projectInfo](#projectinfo)( Number nProjectType, int index )

VProjectInfo [projectInfo](#projectinfo)( String szAlias )

### **De variables globales**

Boolean [globalVarToBool](#globalvartodate)( String szIdRefVar )

QDate [globalVarToDate](#globalvartodate)( String szIdRefVar )

QDateTime [globalVarToDateTime](#globalvartodatetime)( String szIdRefVar )

Number [globalVarToDouble](#globalvartodouble)( String szIdRefVar )

Number [globalVarToInt](#globalvartoint)( String szIdRefVar )

String [globalVarToString](#globalvartostring)( String szIdRefVar )

QTime [globalVarToTime](#globalvartotime)( String szIdRefVar )

Boolean [isGlobalVarEmpty](#isglobalvarempty)( String szIdRefVar )

void [setGlobalVar](#setglobalvar)( String szIdRefVar, String szValue )

void [setGlobalVar](#setglobalvar)( String szIdRefVar, Number nValue )

void [setGlobalVar](#setglobalvar)( String szIdRefVar, Boolean bValue )

void [setGlobalVar](#setglobalvar)( String szIdRefVar, QDateTime dtValue )

void [setGlobalVar](#setglobalvar)( String szIdRefVar, QDate dValue )

void [setGlobalVar](#setglobalvar)( String szIdRefVar, QTime tValue )

### **De constantes**

String [constant](#constant)( String szIdRefConstante )

String [constant](#constant)( String szIdRefConstante, Number idioma, \[Number pais] )

### **De mantenimiento de base de datos**

Boolean [compactTable](#boolean-compacttable-string-idreftabla-number-nmodo-number-numbral)(String idRefTabla, Number nModo, Number nUmbral)&#x20;

Boolean [emptyTable](#boolean-emptytable-string-idreftabla)( String idRefTabla)

Boolean [regenComplexIndex](#regencomplexindex)( String szIdRefIdxComplejo, Boolean bProgressDialog )

Boolean [regenDataArea](#regendataarea)( String idRefTabla, Boolean bProgressDialog )

Boolean [regenIndexes](#regenindexes)( String idRefTabla, Boolean bProgressDialog )

### **De DOS: directorios**

String [applicationDirPath](#applicationdirpath)()

String [applicationFilePath](#applicationfilepath)()

String [cleanPath](#cleanpath)( String path )

String [currentPath](#currentpath)()

VFileInfo [driveAt](#driveat)( Number index )

Number [drivesCount](#drivescount)()

Array [getPaths](#getpaths)( int nPath )

String [homePath](#homepath)()

Boolean [loadDrives](#loaddrives)()

String [rootPath](#rootpath)()

Boolean [setCurrentPath](#setcurrentpath)( String path )

String [tempPath](#tempPath)()

### **De DOS: ficheros**

Boolean [copyFile](#copyfile)( String szFileName, String szNewName )

Boolean [existsFile](#existsfile)( String szFileName )

Boolean [linkFile](#linkfile)( String szFileName, String szLinkName )

Boolean [removeFile](#removefile)( String szFileName )

Boolean [renameFile](#renamefile)( String szFileName, String szNewName )

### **De info local actual**

Number [currentCountryCode](#currentcountrycode)()

String [currentCountryIsoCode](#currentcountryisocode)()

String [currentCountryName](#currentcountryname)()

String [currentDecimalPoint](#currentdecimalpoint)()

Number [currentLanguageCode](#currentlanguagecode)()

String [currentLanguageIsoCode](#currentlanguageisocode)()

String [currentLanguageName](#currentlanguagename)()

void [setCurrentLocale](#void-setcurrentlocale-string-szlocale)( const QString& szLocale )

### **De info local del sistema**

Number [sysCountryCode](#syscountrycode)()

String [sysCountryIsoCode](#syscountryisocode)()

String [sysCountryName](#syscountryname)()

String [sysDecimalPoint](#sysdecimalpoint)()

Number [sysLanguageCode](#syslanguagecode)()

String [sysLanguageIsoCode](#syslanguageisocode)()

String [sysLanguageName](#syslanguagename)()

### **De sistema**

VClipboard [clipboard](#clipboard)()

VScreen [screen](#screen)()

Boolean [startProgramDetached](#startprogramdetached)( String szExe, string aszArgumentos)

String [sysMachineName](#sysMachineName)()

### **De cestas**

void [appendToBasket](#appendtobasket)( String szIdRefCesta, VRegister reg )

void [appendToBasket](#appendtobasket)( String szIdRefCesta, VRegisterList regList )

Boolean [getBasket](#getbasket)( String szIdRefCesta, VRegisterList regList )

void [removeFromBasket](#removefrombasket)( String szIdRefCesta, VRegister reg )

void [removeFromBasket](#removefrombasket)( String szIdRefCesta, VRegisterList regList )

Boolean [setBasket](#setbasket)( String szIdRefCesta, VRegisterList regList )

### **De impresoras del sistema**

Array [availablePrinters](#availableprinters)()

String [defaultPrinter](#defaultprinter)()

Array [supportedPaperSizes](#supportedpapersizes)( String szPrinterName )

### **De impresión de informes**

void [printReport](#printreport)( VRegisterList list, String idRefReport, \[String idRefLogicPr])

void [printReportToFile](#printreporttofile)( VRegisterList list, String idRefReport, String path )

void [printReportToPrinter](#printreporttoprinter)( VRegisterList list, String idRefReport, String printerName, \[Boolean bHighRes=false])

### **De variables de sistema**

String [clientCachePath](#clientcachepath)()

Boolean [isAdministrator](#isadministrator)()

VSysInfo [sysInfo](#sysinfo)()

String [userName](#username)()

### **De cursor**

void [restoreOverrideCursor](#restoreoverridecursor)()

void [setOverrideCursor](#setoverridecursor)( Number nCursor )

### **De variables globales tipo array**

Number [globalVarArraySize](#globalvararraysize)( String szIdRefVar )

Boolean [globalVarArrayToBool](#globalvararraytobool)( String szIdRefVar, Number nSubindex )

Date [globalVarArrayToDate](#globalvararraytodate)( String szIdRefVar, Number nSubindex )

DateTime [globalVarArrayToDateTime](#globalvararraytodatetime)( String szIdRefVar, Number nSubindex )

Number [globalVarArrayToInt](#globalvararraytoint)( String szIdRefVar, Number nSubindex )

Number [globalVarArrayToSDouble](#globalvararraytosdouble)( String szIdRefVar, Number nSubindex )

String [globalVarArrayToString](#globalvararraytostring)( String szIdRefVar, Number nSubindex )

Time [globalVarArrayToTime](#globalvararraytotime)( String szIdRefVar, Number nSubindex )

Boolean [isGlobalVarArrayEmpty](#isglobalvararrayempty)( String szIdRefVar, Number nSubindex )

void [setGlobalVarArray](#setglobalvararray)( QString szIdRefVar, Number nSubindex, Variant var)

### **De mensajería interna**

void [sendUserAlert](#senduseralert)( String szUser, String szAsunto, String szMsg )

void [sendUserMessage](#sendusermessage)( String szUser, String szAsunto, String szMsg )

void [sendUserWarning](#senduserwarning)( String szUser, String szAsunto, String szMsg )

### **De tablas estáticas**

Number [staticTableItemCount](#statictableitemcount)( String szIdRefTable )

String [staticTableItemId](#statictableitemid)( String szIdRefTable, Number nIndex )

VImage [staticTableItemImage](#statictableitemimage)( String szIdRefTable, Number nIndex )

String [staticTableItemName](#statictableitemname)( String szIdRefTable, Number nIndex )

String [staticTableItemName](#statictableitemname)( String szIdRefTable, Number nIndex, Number nLenguaje, Number nPais )

### **Multimedia**

Array [availableCameraDescriptions](#availablecameradescriptions)()

Array [availableCameras](#availablecameras)()

String [defaultCamera](#defaultcamera)()

String [defaultCameraDescription](#defaultcameradescription)()

### **De vista de datos**

VAbstractDataView [focusDataView](#focusdataview)()

### **De estilos**

Boolean [setStyle](#setstyle)( String szStyle )

String [style](#style)()

Array [styles](#styles)()

### De aspecto

Number [currentAspect](#number-currentaspect)()

Number [aspect](#number-aspect)()

void [setAspect](#void-setaspect-aspectmode-mode) (AspectMode mode)

### **De conexión segura TLS/SSL**

VSSLInfo [sslInfo](#sslinfo)()

### **De cliente-servidor**

String [clientIP](#string-clientip)()

Number [connectionLatency](#connectionlatency)()

Number [connectionQuality](#connectionquality)()

Number [connectionStablishedLatency](#number-connectionstablishedlatency)()

String [serverIP](#string-serverip)()

### **De personalización**

void [setFrame](#setframe)(String szIdRefMarco)

### **De API**

Number [currentInstanceCode](#number-currentinstancecode)()&#x20;

Sring [currentInstanceConnectionToken](#sring-currentinstanceconnectiontoken)()

String [currentInstanceId](#string-currentinstanceid)()

String [currentInstanceName](#string-currentinstancename)()

String [executionComponent](#string-executioncomponent)()

Number [mainInstanceCode](#number-maininstancecode)()

String [mainInstanceConnectionToken](#string-maininstanceconnectiontoken)()

String [mainInstanceId](#string-maininstanceid)()

String [mainInstanceName](#string-maininstancename)()

### **De** [**Velneo Web**](../../../../../velneo/velneo-web)

String [getCurrentURL](#string-getcurrenturl)()

### De JSON Web Token (JWT)

Object [jwtDecode](#object-jwtdecode-string-sztoken-string-szkey)( String szToken, String szKey )

String [jwtEncode](#string-jwtencode-object-jsonpayload-string-szkey-string-szalgorithm)( Object jsonPayload, String szKey, String szAlgorithm )

### De gestión de enums de objetos

Bool [objectIsObject](#bool-objectissubobject-number-ntipo)(Number nTipo)

Bool [objectIsSubObject](#bool-objectissubobject-number-ntipo)(Number nTipo)

String [objectIconPath](#string-objecticonpath-number-ntipo)(Number nTipo)

String [objectTypeName](#string-objecttypename-number-ntipo)(Number nTipo)

Number [objectTypesCount](#number-objecttypescount)()

## Documentación de funciones

### Funciones generales

#### void beep() <a href="#beep" id="beep"></a>

Emite un pitido a través del altavoz del sistema.

#### String calculateHash( String szAlgoritmoHash, String szTextCodec ) <a href="#calculatehash" id="calculatehash"></a>

Devuelve en minúsculas el hash de una cadena en función del parámetro.

Parámetros:

* AlgoritmoHash: ver [enum de algoritmos](vapp-enumeraciones#algoritmohash) disponibles.
* TextCodec: cadena con el codec a usar. Por defecto usará Latin1. Ver [enum de codecs](../../../../proyectos-objetos-y-editores/editores/asistente-de-formulas/funciones-estandar/funciones-de-juegos-de-caracteres/codecs).

#### String exeName() <a href="#exename" id="exename"></a>

Devuelve el nombre del ejecutable en curso como [vClient](../../../../../velneo-vclient/que-es-velneo-vclient), [vDataClient](../../../../../velneo-vdataclient/que-es-velneo-vdataclient), [vAdmin](../../../../../velneo-vadmin/que-es-velneo-vadmin), [vDevelop](../../../../introduccion), [vClient](../../../../../velneo-vclient/que-es-velneo-vclient) ([Agente](../../../../../proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso#5o-plano)), [vServer](../../../../../velneo-vserver/que-es-velneo-vserver), [vModApache](../../../../../velneo-vmodapache/que-es-velneo-vmodapache).

#### void notify( String szMensaje, String szIdRefIconText, String szIdRefIconClose, int secondsDuration)

Muestra una ventana de notificación sin bloqueo de la interfaz.

Parámetros:

* szMensaje: cadena con el texto a presentar en la notificación. Icono del mensaje
* szIdRefIconText: permite mostrar un [dibujo](../../../../proyectos-objetos-y-editores/proyecto-de-aplicacion/formulario/controles-de-visualizacion/dibujo-control) que se mostrará a la izquierda del texto de la notificación; por ejemplo, un icono de advertencia, peligro, información. Este parámetro es opcional. En el parámetro introduciremos el idRef del dibujo (Ejemplo: "velneo\_verp\_2\_app/INF").&#x20;
* szIdRefIconClose: permite personalizar el icono de cierre que se usa por defecto para las notificaciones. En el parámetro introduciremos el idRef del dibujo (Ejemplo: "velneo\_verp\_2\_app/CLO"). Este parámetro es opcional.
* secondsDuration: permite configurar el tiempo que la notificación permanecerá en pantalla antes de cerrarse automáticamente. Si no se especifica durará 7 segundos, que es el tiempo por defecto. Si se pone un 0, la notificación debe ser cerrada por el usuario. Este parámetro es opcional.

#### void processEvents() <a href="#processevents" id="processevents"></a>

Procesa los eventos que haya en la cola de la aplicación, excluyendo los de entrada de usuario (teclado, ratón...). Debe usarse donde se consuma mucho tiempo o bucles largos para que se refresque el interfaz. Solo actúa en procesos en primer plano ya que es en estos donde estamos ocupando el hilo principal que es el que atiende la cola de eventos. En los demás no hace nada.

#### String stripHtml( String szHtml ) <a href="#striphtml" id="striphtml"></a>

Retorna la cadena que pasamos como parámetro sin etiquetas html. El código html debe estar bien conformado para que retorne contenido.

Parámetros:

* szHtml: cadena de texto que contiene el código Html correctamente conformado del que queremos extraer el texto sin etiquetas html.

#### void wait( Number miliSegs ) <a href="#wait" id="wait"></a>

El proceso queda detenido en este punto durante el tiempo especificado en el parámetro.

Parámetros:

* miliSegs: número de milisegundos de espera, por ejemplo: 1000 = 1 segundo.

### Funciones de proyectos

#### VProjectInfo mainProjectInfo() <a href="#mainprojectinfo" id="mainprojectinfo"></a>

Devuelve el objeto [VProjectInfo](vprojectinfo) del proyecto principal.

Si la usamos en un proceso ejecutado en 4º plano, esta función devolverá el proyecto donde esté declarado el proceso, tenga proyectos o no por encima, el motivo de esto es que\
cuando se ejecuta el proceso el servidor crea un enganche temporal para gestionarlo, en ese momento, conoce el proyecto donde está el objeto y lo que hereda, pero no conoce todo lo que tiene por encima.

#### VProjectInfo projectInfo( Number nProjectType, int index ) <a href="#projectinfo" id="projectinfo"></a>

Esta función es de uso exclusivo en las [extensiones de Velneo vDevelop](../../../../extensiones-de-velneo-vdevelop) (clase [vExtension](vextension)).Devuelve un objeto [VProjectInfo](vprojectinfo) con la información del proyecto cuyo tipo e index dentro de la solución hayamos pasado como parámetro.

Parámetros:

* nProjectType: tipo de proyecto. Ver [enum de tipos de proyecto](../vprojectinfo#enumeraciones).
* index: index dentro de la solución.

#### VProjectInfo projectInfo( String szAlias )

Devuelve un objeto [VProjectInfo](vprojectinfo) del proyecto con el alias especificado.

Parámetros:

* szAlias: alias del proyecto.

### Funciones de variables globales <a href="#fnc-var-glob" id="fnc-var-glob"></a>

#### Boolean globalVarToBool( String szIdRefVar ) <a href="#globalvartodate" id="globalvartodate"></a>

Devuelve el valor de una variable global de tipo booleano.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.

#### QDate globalVarToDate( String szIdRefVar ) <a href="#globalvartodate" id="globalvartodate"></a>

Devuelve el valor de una variable global de tipo fecha.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.

#### QDateTime globalVarToDateTime( String szIdRefVar ) <a href="#globalvartodatetime" id="globalvartodatetime"></a>

Devuelve el valor de una variable global de tipo tiempo, fecha y hora.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.

#### Number globalVarToDouble( String szIdRefVar ) <a href="#globalvartodouble" id="globalvartodouble"></a>

Devuelve el valor de una variable global de tipo numérico, con decimales.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.

#### Number globalVarToInt( String szIdRefVar ) <a href="#globalvartoint" id="globalvartoint"></a>

Devuelve el valor de una variable global de tipo numérico, entero.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.

#### String globalVarToString( String szIdRefVar ) <a href="#globalvartostring" id="globalvartostring"></a>

Devuelve el valor de una variable global de tipo alfabética.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.

#### QTime globalVarToTime( String szIdRefVar ) <a href="#globalvartotime" id="globalvartotime"></a>

Devuelve el valor de una variable global de tipo hora.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.

#### Boolean isGlobalVarEmpty( String szIdRefVar ) <a href="#isglobalvarempty" id="isglobalvarempty"></a>

Devuelve true si la variable global está vacía. Las numéricas se asumen vacías con el valor 0.

Parámetros:

* szIdRefVar: idRef de la variable "ALIASPROYECTO/IDVARIABLE".

#### void setGlobalVar( String szIdRefVar, String szValue ) <a href="#setglobalvar" id="setglobalvar"></a>

Asigna el valor a la variable global de tipo alfabética.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* szValue: valor alfabético.

#### void setGlobalVar( String szIdRefVar, Number nValue )

Asigna el valor a la variable global de tipo numérica.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* nValue: valor numérico.

#### void setGlobalVar( String szIdRefVar, Boolean bValue )

Asigna el valor a la variable global de tipo booleano.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* bValue: valor booleano.

#### void setGlobalVar( String szIdRefVar, QDateTime dtValue )

Asigna el valor a la variable global de tipo tiempo, fecha y hora.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* dtValue: valor de tipo tiempo, fecha y hora.

#### void setGlobalVar( String szIdRefVar, QDate dValue )

Asigna el valor a la variable global de tipo fecha.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* dValue: valor de tipo fecha.

#### void setGlobalVar( String szIdRefVar, QTime tValue )

Asigna el valor a la variable global de tipo hora.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* tValue: valor de tipo hora.

### Funciones de constantes

#### String constant( String szIdRefConstante ) <a href="#constant" id="constant"></a>

Devuelva el contenido de una constante.

Parámetros:

* szIdRefConstante: idRef del objeto constante "ALIAS\_PROYECTO/ID\_OBJETO".

#### String constant( String szIdRefConstante, Number idioma, \[Number pais] ) <a href="#constant2" id="constant2"></a>

Devuelve el contenido de una constante en el idioma y país especificado en los parámetros. El país es un parámetro opcional, si no se especifica asume el más genérico de los existentes para ese idioma.

Parámetros:

* szIdRefConstante: idRef del objeto constante "ALIAS\_PROYECTO/ID\_OBJETO".
* idioma: código numérico del idioma, por ejemplo: English = 31. Ver [enum de idiomas](http://doc.qt.io/qt-5.6/qlocale.html#Language-enum)
* país: código numérico del país, por ejemplo: UnitedKingdom = 224. Este es un parámetro opcional. Ver [enum de países](http://doc.qt.io/qt-5.6/qlocale.html#Country-enum).

### Funciones de mantenimiento de base de datos

Estas funciones es recomendable usarlas solamente en [modo mantenimiento](../../../../buenas-practicas-de-programacion/modo-mantenimiento).

#### Boolean compactTable(String idRefTabla, Number nModo, Number nUmbral)&#x20;

Esta función permite compactar datos (dat/idx) y/o cotenedor (cnd/cni) de una o varias tablas.

Debe ser ejecutada en el [servidor](../../../../../velneo-vserver/que-es-velneo-vserver), por lo que no puede ser usada en procesos lanzados en primer o segundo [plano](../../../../../proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso#planos-de-ejecucion-de-procesos).

Parámetros:

* idRefTabla: identificador de referencia de la tabla a compactar. Si se deja en vacío se compactarán todas las tablas de todos los proyectos cargados.
* Modo: modo de compactación. Ver [enum de modos de compactación](vapp-enumeraciones#modos-de-compactacion).
* Umbral mínimo: valor numérico entero y positivo (entre 0 y 100).

#### Boolean emptyTable( String idRefTabla)

Vacía la tabla que le pasamos por parámetro, es decir, borra todo su contenido (datos, índices y contenedor).

Esta función no transacciona y no debe estar incluida en ninguna transacción, o no haber comenzado ésta hasta que se haya usado la función. En cuanto comienza transacción ya no se puede usar.

Parámetros:

* idRefTabla: idRef de la tabla "ALIAS\_PROYECTO/ID\_TABLA" a vaciar.

#### Boolean regenComplexIndex( String szIdRefIdxComplejo, Boolean bProgressDialog ) <a href="#regencomplexindex" id="regencomplexindex"></a>

Regenera un índice complejo. Si indicamos true en el 2º parámetro se mostrará la barra de progreso.

Parámetros:

* idRefIdxComplejo: idRef del índice complejo "ALIAS\_PROYECTO/ID\_INDICE\_COMPLEJO".
* bProgressDialog: true para indicar que sea visible la barra de progreso.

#### Boolean regenDataArea( String idRefTabla, Boolean bProgressDialog ) <a href="#regendataarea" id="regendataarea"></a>

Hace una regeneración del área de datos de la tabla seleccionada en el primer parámetro, de su contenedor y también la regeneración de los índices de tabla y contenedor. Si indicamos true en el 2º parámetro se mostrará la barra de progreso. Esta función lanzada sobre tablas en memoria siempre devuelve false.

Parámetros:

* idRefTabla: idRef de la tabla "ALIAS\_PROYECTO/ID\_TABLA".
* bProgressDialog: true para indicar que sea visible la barra de progreso.

#### Boolean regenIndexes( String idRefTabla, Boolean bProgressDialog ) <a href="#regenindexes" id="regenindexes"></a>

Regenera los índices de tabla indicada en el primer parámetro y su contenedor. Si indicamos true en el 2º parámetro se mostrará la barra de progreso.

Parámetros:

* idRefTabla: idRef de la tabla "ALIAS\_PROYECTO/ID\_TABLA".
* bProgressDialog: true para indicar que sea visible la barra de progreso.

### Funciones DOS: directorios

#### String applicationDirPath() <a href="#applicationdirpath" id="applicationdirpath"></a>

Devuelve el directorio de la aplicación en el que está siendo ejecutado el script.

#### String applicationFilePath() <a href="#applicationfilepath" id="applicationfilepath"></a>

Devuelve la senda de la aplicación en el que está siendo ejecutado el script.

#### String cleanPath( String path ) <a href="#cleanpath" id="cleanpath"></a>

Elimina del path los separadores "/" o "" redundantes y los unifica a "/".

#### String currentPath() <a href="#currentpath" id="currentpath"></a>

Devuelve el path del directorio en curso, por defecto donde se ejecuta vClient.

#### VFileInfo driveAt( Number index ) <a href="#driveat" id="driveat"></a>

Devuelve un objeto [VFileInfo](https://github.com/velneo/documentacion-de-velneo/tree/c9b0a763081be854a33d8ab459aa288833ea168d/vfileinfo.md) para el dispositivo del índice cargado.

Parámetros:

* index: número ordinal correspondiente al dispositivo de disco.

#### Number drivesCount() <a href="#drivescount" id="drivescount"></a>

Devuelve el número de dispositivos de disco del sistema.

#### Array getPaths( int nPath ) <a href="#getpaths" id="getpaths"></a>

Devuelve un array de cadenas con las sendas estándar del sistema para la localización que indicamos como parámetro.

Devuelve un array ya que puede haber más de una senda para un mismo path.

Parámetros:

* Path: ver [enum de paths](vapp-enumeraciones#paths).

Los valores posibles son:

Windows

\========

DesktopPath "C:/Users/\<USER>/Desktop"

DocumentsPath "C:/Users/\<USER>/Documents"

FontsPath "C:/Windows/Fonts" (not writable)

ApplicationsPath "C:/Users/\<USER>/AppData/Roaming/Microsoft/Windows/Start Menu/Programs"

MusicPath "C:/Users/\<USER>/Music"

MoviesPath "C:/Users/\<USER>/Videos"

PicturesPath "C:/Users/\<USER>/Pictures"

TempPath "C:/Users/\<USER>AppData/Local/Temp"

HomePath "C:/Users/"

DataPath "C:/Users/\<USER>/AppData/Local/", "C:/ProgramData/", "", "/data"

CachePath "C:/Users/\<USER>/AppData/Local/\<USER>/cache"

GenericDataPath "C:/Users/\<USER>/AppData/Local", "C:/ProgramData", "", "/data"

RuntimePath "C:/Users/"

ConfigPath "C:/Users/\<USER>/AppData/Local/", "C:/ProgramData/"

GenericConfigPath "C:/Users/\<USER>/AppData/Local", "C:/ProgramData"

DownloadPath "C:/Users/\<USER>/Documents"

GenericCachePath "C:/Users/\<USER>/AppData/Local/cache"

AppDataPath "C:/Users/\<USER>/AppData/Roaming/", "C:/ProgramData/", "", "/data"

AppLocalDataPath "C:/Users/\<USER>/AppData/Local/", "C:/ProgramData/", "", "/data"

AppConfigPath "C:/Users/\<USER>/AppData/Local/", "C:/ProgramData/"

OS X

\========

DesktopPath "\~/Desktop"

DocumentsPath "\~/Documents"

FontsPath "/System/Library/Fonts" (not writable)

ApplicationsPath "/Applications" (not writable)

MusicPath "\~/Music"

MoviesPath "\~/Movies"

PicturesPath "\~/Pictures"

TempPath Generado aleatoriamente por el sistema operativo

HomePath "\~"

DataPath "\~/Library/Application Support/", "/Library/Application Support/". "/../Resources"

CachePath "\~/Library/Caches/", "/Library/Caches/"

GenericDataPath "\~/Library/Application Support", "/Library/Application Support"

RuntimePath "\~/Library/Application Support"

ConfigPath "\~/Library/Preferences"

GenericConfigPath "\~/Library/Preferences"

DownloadPath "\~/Downloads"

GenericCachePath "\~/Library/Caches", "/Library/Caches"

AppDataPath "\~/Library/Application Support/", "/Library/Application Support/". "/../Resources"

AppLocalDataPath "\~/Library/Application Support/", "/Library/Application Support/". "/../Resources"

AppConfigPath "\~/Library/Preferences/"

Linux

\========

DesktopPath "\~/Desktop"

DocumentsPath "\~/Documents"

FontsPath "\~/.fonts"

ApplicationsPath "\~/.local/share/applications", "/usr/local/share/applications", "/usr/share/applications"

MusicPath "\~/Music"

MoviesPath "\~/Videos"

PicturesPath "\~/Pictures"

TempPath "/tmp"

HomePath "\~"

DataPath "\~/.local/share/", "/usr/local/share/", "/usr/share/"

CachePath "\~/.cache/"

GenericDataPath "\~/.local/share", "/usr/local/share", "/usr/share"

RuntimePath "/run/user/"

ConfigPath "\~/.config", "/etc/xdg"

GenericConfigPath "\~/.config", "/etc/xdg"

DownloadPath "\~/Downloads"

GenericCachePath "\~/.cache"

AppDataPath "\~/.local/share/", "/usr/local/share/", "/usr/share/"

AppLocalDataPath "\~/.local/share/", "/usr/local/share/", "/usr/share/"

AppConfigPath "\~/.config/", "/etc/xdg/"

Android

\========

DesktopPath "/files"

DocumentsPath "/Documents", "/\<USER>/Documents"

FontsPath "/system/fonts" (no se puede escribir)

ApplicationsPath No soportado (el directorio no se puede leer)

MusicPath "/Music", "/\<USER>/Music"

MoviesPath "/Movies", "/\<USER>/Movies"

PicturesPath "/Pictures", "/\<USER>/Pictures"

TempPath "/cache"

HomePath "/files"

DataPath "/files", "/\<USER>/files"

CachePath "/cache", "/\<USER>/cache"

GenericDataPath ""

RuntimePath "/cache"

ConfigPath "/files/settings"

GenericConfigPath "/files/settings" (no hay settings compartidos)

DownloadLocation \<USER>/Downloads" \[\*], "\<USER>//Downloads"

GenericCachePath "/cache" (no hay cache compartida)

AppDataPath "/files", "/\<USER>/files"

AppConfigPath "/files/settings"

AppLocalDataPath "/files", "/\<USER>/files"

iOS

\========

DesktopPath "/Documents/Desktop"

DocumentsPath "/Documents"

FontsPath "/Library/Fonts"

ApplicationsPath No soportado

MusicPath "/Documents/Music"

MoviesPath "/Documents/Movies"

PicturesPath "/Documents/Pictures", "assets-library://"

TempPath "/tmp"

HomePath "" (not writable)

DataPath "/Library/Application Support"

CachePath "/Library/Caches"

GenericDataPath "/Documents"

RuntimePath No soportado

ConfigPath "/Library/Preferences"

GenericConfigPath "/Library/Preferences"

DownloadPath "/Documents/Downloads"

GenericCachePath "/Library/Caches"

AppDataPath "/Library/Application Support"

AppConfigPath "/Library/Preferences/"

AppLocalDataPath "/Library/Application Support"

#### String homePath() <a href="#homepath" id="homepath"></a>

Devuelve el path del directorio home, por defecto el del usuario.

#### Boolean loadDrives() <a href="#loaddrives" id="loaddrives"></a>

Carga los dispositivos de disco del sistema. Devuelve true si finaliza correctamente.

Devuelve el path del directorio raíz, por ejemplo "C:/".

#### Boolean setCurrentPath( String path ) <a href="#setcurrentpath" id="setcurrentpath"></a>

Cambia el path en curso. Devuelve true si el cambio finaliza correctamente.

Parámetros:

* path: nueva senda.

#### String tempPath() <a href="#temppath" id="temppath"></a>

Devuelve el path de del directorio temporal.

### Funciones DOS: ficheros

#### Boolean copyFile( String szFileName, String szNewName ) <a href="#copyfile" id="copyfile"></a>

Copia un fichero. Devuelve true si la copia finaliza correctamente.

Parámetros:

* szFileName: senda de origen del fichero con el nombre antiguo.
* szNewName: senda de destino del fichero con el nuevo nombre.

#### Boolean existsFile( String szFileName ) <a href="#existsfile" id="existsfile"></a>

Devuelve true si el fichero existe y está legible.

Parámetros:

* szFileName: senda del fichero.

#### Boolean linkFile( String szFileName, String szLinkName ) <a href="#linkfile" id="linkfile"></a>

Crea un enlace simbólico, acceso directo o shortcut, a un fichero o directorio.

Parámetros:

* szFileName: senda del fichero.
* szLinkName: nombre del acceso directo o shorcut.

#### Boolean removeFile( String szFileName ) <a href="#removefile" id="removefile"></a>

Elimina un fichero del disco. Devuelve true si finaliza correctamente.

Parámetros:

* szFileName: senda del fichero.

#### Boolean renameFile( String szFileName, String szNewName ) <a href="#renamefile" id="renamefile"></a>

Renombra un fichero del disco. Devuelve true si finaliza correctamente.

Parámetros:

* szFileName: senda del fichero a renombrar.
* szNewName: senda del fichero con el nuevo nombre.

### Funciones de info local actual <a href="#fnc-info-loc-act" id="fnc-info-loc-act"></a>

#### Number currentCountryCode() <a href="#currentcountrycode" id="currentcountrycode"></a>

Devuelve el código de país en curso. Ver [enun de códigos de países](vapp-enumeraciones#codigos-de-paises).

#### String currentCountryIsoCode() <a href="#currentcountryisocode" id="currentcountryisocode"></a>

Devuelve el código ISO (3166) del país en curso.

#### String currentCountryName() <a href="#currentcountryname" id="currentcountryname"></a>

Devuelve el nombre del país en curso, en inglés.

#### String currentDecimalPoint() <a href="#currentdecimalpoint" id="currentdecimalpoint"></a>

Devuelve el carácter de separador decimal en curso. Un string de un byte.

#### Number currentLanguageCode() <a href="#currentlanguagecode" id="currentlanguagecode"></a>

Devuelve el código del idioma en curso.

#### String currentLanguageIsoCode() <a href="#currentlanguageisocode" id="currentlanguageisocode"></a>

Devuelve el código ISO (639) del idioma en curso.

#### String currentLanguageName() <a href="#currentlanguagename" id="currentlanguagename"></a>

Devuelve el nombre del idioma en curso, en inglés.

#### void setCurrentLocale( String szLocale )

Establece la configuración local (formato de fecha, separador del miles y decimal....) de la aplicación. Solamente es funcional en procesos ejecutados en primer plano.

Parámetros:

* szLocale: cadena con el idioma de la configuración a aplicar, que debe definirse con un código de idioma ISO-639 de dos letras en minúscula.  [Ver enum](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).

### Funciones de info local del sistema <a href="#fnc-info-loc-sis" id="fnc-info-loc-sis"></a>

#### Number sysCountryCode() <a href="#syscountrycode" id="syscountrycode"></a>

Devuelve el código de país del sistema.

#### String sysCountryIsoCode() <a href="#syscountryisocode" id="syscountryisocode"></a>

Devuelve el código ISO (3166) del país del sistema.

#### String sysCountryName() <a href="#syscountryname" id="syscountryname"></a>

Devuelve el nombre del país del sistema.

#### String sysDecimalPoint() <a href="#sysdecimalpoint" id="sysdecimalpoint"></a>

Devuelve el carácter de separador decimal del sistema, un string de un byte.

#### Number sysLanguageCode() <a href="#syslanguagecode" id="syslanguagecode"></a>

Devuelve el código del idioma del sistema.

#### String sysLanguageIsoCode() <a href="#syslanguageisocode" id="syslanguageisocode"></a>

Devuelve el código ISO (639) del idioma del sistema.

#### String sysLanguageName() <a href="#syslanguagename" id="syslanguagename"></a>

Devuelve el nombre del idioma del sistema, en inglés.

### Funciones de sistema

#### VClipboard clipboard() <a href="#clipboard" id="clipboard"></a>

Devuelve un objeto del tipo [VClipboard](vclipboard) que nos permite acceder al portapapeles en curso o establecer un nuevo contenido en el portapapeles.

#### VScreen screen() <a href="#screen" id="screen"></a>

Devuelve un objeto VScreen que representa la pantalla principal del sistema y que nos permite obtener información acerca de la misma.

#### Boolean startProgramDetached( String szExe, string aszArgumentos ) <a href="#startprogramdetached" id="startprogramdetached"></a>

Ejecuta la aplicación que pasamos como parámetro con los argumentos correspondientes, devolviendo true si ha podido ejecutarlo. No espera.

Parámetros:

* szExe: senda del ejecutable.
* aszArgumentos: en Linux y en macOS se debe especificar un array de cadenas con los argumentos del ejecutable. En Windows se ha de usar una única cadena, un literal.

#### String sysMachineName() <a href="#sysmachinename" id="sysmachinename"></a>

Devuelve el nombre de la máquina host.

### Funciones de cestas

#### void appendToBasket( String szIdRefCesta, VRegister reg ) <a href="#appendtobasket" id="appendtobasket"></a>

Añade a la cesta el registro existente en el objeto [VRegister](vregister). Tanto la cesta como el objeto [VRegister](vregister) deben ser de la misma tabla.

Parámetros:

* szIdRefCesta: idRef de la cesta "ALIAS\_PROYECTO/ID\_OBJETO".
* reg: objeto de la clase [VRegister](vregister).

#### void appendToBasket( String szIdRefCesta, VRegisterList regList )

Añade a la cesta los registros existentes en el objeto [VRegisterList](vregisterlist). Tanto la cesta como el objeto [VRegisterList](vregisterlist) deben ser de la misma tabla.

Parámetros:

* szIdRefCesta: idRef de la cesta "ALIAS\_PROYECTO/ID\_OBJETO".
* regList: objeto de la clase [VRegisterList](vregisterlist).

#### Boolean getBasket( String szIdRefCesta, VRegisterList regList ) <a href="#getbasket" id="getbasket"></a>

Alimenta un objeto [VRegisterList](vregisterlist) con los registros contenidos en la cesta. Devuelve true si finaliza correctamente. Si el objeto [VRegisterList](vregisterlist) contiene registros se pierden ya que el contenido del objeto [VRegisterList](vregisterlist) en su totalidad es sustituido por los registros que existen en la cesta. Si el objeto [VRegisterList](vregisterlist) no tuviese asignada ninguna tabla, al ejecutar esta función asumirá la misma tabla de la cesta.

Parámetros:

* szIdRefCesta: idRef de la cesta "ALIAS\_PROYECTO/ID\_OBJETO".
* regList: objeto de la clase [VRegisterList](vregisterlist).

#### void removeFromBasket( String szIdRefCesta, VRegister reg ) <a href="#removefrombasket" id="removefrombasket"></a>

Elimina de la cesta el registro existente en el objeto [VRegister](vregister). Tanto la cesta como el objeto [VRegister](vregister) deben ser de la misma tabla.

Parámetros:

* szIdRefCesta: idRef de la cesta "ALIAS\_PROYECTO/ID\_OBJETO".
* reg: objeto de la clase [VRegister](vregister).

#### void removeFromBasket( String szIdRefCesta, VRegisterList regList )

Elimina de la cesta los registros existentes en el objeto [VRegisterList](vregisterlist). Tanto la cesta como el objeto [VRegisterList](vregisterlist) deben ser de la misma tabla.

Parámetros:

* szIdRefCesta: idRef de la cesta "ALIAS\_PROYECTO/ID\_OBJETO".
* regList: objeto de la clase [VRegisterList](vregisterlist).

#### Boolean setBasket( String szIdRefCesta, VRegisterList regList ) <a href="#setbasket" id="setbasket"></a>

Añade a la cesta los registros contenidos en un objeto [VRegisterList](vregisterlist). Devuelve true si finaliza correctamente. Si la cesta contiene registros se pierden ya que el contenido de la cesta en su totalidad es sustituido por los que existen en el objeto [VRegisterList](vregisterlist). La cesta asumirá la tabla del objeto [VRegisterList](vregisterlist).

Parámetros:

* szIdRefCesta: idRef de la cesta "ALIAS\_PROYECTO/ID\_OBJETO".
* regList: objeto de la clase [VRegisterList](vregisterlist).

### Funciones de impresoras del sistema <a href="#fnc-imp-sis" id="fnc-imp-sis"></a>

#### Array availablePrinters() <a href="#availableprinters" id="availableprinters"></a>

Devuelve un array con los nombres de las impresores disponibles en el sistema.

#### String defaultPrinter() <a href="#defaultprinter" id="defaultprinter"></a>

Devuelve el nombre de la impresora configurada por defecto en el sistema.

#### Array supportedPaperSizes( String szPrinterName ) <a href="#supportedpapersizes" id="supportedpapersizes"></a>

Devuelve un array con los tamaño de papel disponible para la impresora especificada en el parámetro.

Parámetros:

* szPrinterName: nombre de la impresora.

### Funciones de impresión de informes <a href="#fnc-imp-inf" id="fnc-imp-inf"></a>

#### void printReport( VRegisterList list, String idRefReport, \[String idRefLogicPr]) <a href="#printreport" id="printreport"></a>

Imprime un informe. Si no se especifica impresora lógica mostrará el cuadro de diálogo de selección de la impresora.

Parámetros:

* list: objeto de la clase [VRegisterList](vregisterlist) con la lista de registros con los que se alimentará el informe.
* idRefReport: idRef del objeto informe a imprimir "ALIAS\_PROYECTO/ID\_OBJETO".
* idRefLogicPr: idRef del objeto impresora lógica por la que se imprima el informe. Este parámetro es opcional.

#### void printReportToFile( VRegisterList list, String idRefReport, String path ) <a href="#printreporttofile" id="printreporttofile"></a>

Genera un fichero en disco con el informe. En función de la extensión del path se podrá generar un fichero PDF o PostScript.

Parámetros:

* list: objeto de la clase [VRegisterList](vregisterlist) con la lista de registros con los que se alimentará el informe.
* idRefReport: idRef del objeto informe a imprimir "ALIAS\_PROYECTO/ID\_OBJETO".
* path: senda completa donde se almacenará el informe generado.

#### void printReportToPrinter( VRegisterList list, String idRefReport, String printerName, \[Boolean bHighRes=false]) <a href="#printreporttoprinter" id="printreporttoprinter"></a>

Imprime un informe directamente en la impresora especificada sin mostrar el cuadro de diálogo de selección de impresora.

Parámetros:

* list: objeto de la clase [VRegisterList](vregisterlist) con la lista de registros con los que se alimentará el informe.
* idRefReport: idRef del objeto informe a imprimir "ALIAS\_PROYECTO/ID\_OBJETO".
* printerName: nombre de la impresora donde se lanzará la impresión del informe.
* bHighRes: parámetro opción que permite configurar si la impresión se realizar con alta o baja resolución. Por defecto es false que indica baja resolución. Para imprimir en alta resolución hay que poner este parámetro a true.

### Funciones de variables de sistema <a href="#fnc-var-sis" id="fnc-var-sis"></a>

#### String clientCachePath() <a href="#clientcachepath" id="clientcachepath"></a>

Devuelve el path usado por el ejecutable, por ejemplo vClient o vDataClient, para almacenar la información en caché.

#### Boolean isAdministrator() <a href="#isadministrator" id="isadministrator"></a>

Devuelve true si el usuario es administrador.

#### VSysInfo sysInfo() <a href="#sysinfo" id="sysinfo"></a>

Devuelve un objeto de la clase [VSysInfo](vsysinfo) que contiene funciones para obtener diferente información del sistema.

#### String userName() <a href="#username" id="username"></a>

Devuelve el nombre del usuario en curso.

### Funciones de cursor

#### void restoreOverrideCursor() <a href="#restoreoverridecursor" id="restoreoverridecursor"></a>

Recupera el cursor normal (ArrowCursor del enum).

#### void setOverrideCursor( Number nCursor ) <a href="#setoverridecursor" id="setoverridecursor"></a>

Cambiar el icono del cursor.

Parámetros:

* nCursor: ver [enum de cursores](vapp-enumeraciones#cursores).

Si cambiamos el cursor en un proceso con **setOverrideCursor**, para restaurarlo debemos hacerlo con la función **restoreOverrideCursor** en ese mismo proceso. El motivo es que estas funciones se han de usar en una misma sesión, y esa sesión es la del propio proceso en la que se ha modificado el cursor. Esto quiere decir que no podemos modificar y restaurar el cursor en procesos diferentes.

### Funciones de variables globales tipo array <a href="#fnc-var-glob-array" id="fnc-var-glob-array"></a>

#### Number globalVarArraySize( String szIdRefVar ) <a href="#globalvararraysize" id="globalvararraysize"></a>

Devuelve el tamaño del array de la variable global.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.

#### Boolean globalVarArrayToBool( String szIdRefVar, Number nSubindex ) <a href="#globalvararraytobool" id="globalvararraytobool"></a>

Devuelve el valor de un elemento de una variable global de tipo Array cuyo contenido sea de tipo booleano.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* nSubindex: número de índice del elemento del array.

#### Date globalVarArrayToDate( String szIdRefVar, Number nSubindex ) <a href="#globalvararraytodate" id="globalvararraytodate"></a>

Devuelve el valor de un elemento de una variable global de tipo Array cuyo contenido sea de tipo fecha.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* nSubindex: número de índice del elemento del array.

#### DateTime globalVarArrayToDateTime( String szIdRefVar, Number nSubindex ) <a href="#globalvararraytodatetime" id="globalvararraytodatetime"></a>

Devuelve el valor de un elemento de una variable global de tipo Array cuyo contenido sea de tipo tiempo, fecha y hora.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* nSubindex: número de índice del elemento del array.

#### Number globalVarArrayToInt( String szIdRefVar, Number nSubindex ) <a href="#globalvararraytoint" id="globalvararraytoint"></a>

Devuelve el valor de un elemento de una variable global de tipo Array cuyo contenido sea de tipo numérico, entero.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* nSubindex: número de índice del elemento del array.

#### Number globalVarArrayToSDouble( String szIdRefVar, Number nSubindex ) <a href="#globalvararraytosdouble" id="globalvararraytosdouble"></a>

Devuelve el valor de un elemento de una variable global de tipo Array cuyo contenido sea de tipo numérico, con decimales.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* nSubindex: número de índice del elemento del array.

#### String globalVarArrayToString( String szIdRefVar, Number nSubindex ) <a href="#globalvararraytostring" id="globalvararraytostring"></a>

Devuelve el valor de un elemento de una variable global de tipo Array cuyo contenido sea de tipo alfabético.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* nSubindex: número de índice del elemento del array.

#### Time globalVarArrayToTime( String szIdRefVar, Number nSubindex ) <a href="#globalvararraytotime" id="globalvararraytotime"></a>

Devuelve el valor de un elemento de una variable global de tipo Array cuyo contenido sea de tipo hora.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* nSubindex: número de índice del elemento del array.

#### Boolean isGlobalVarArrayEmpty( String szIdRefVar, Number nSubindex ) <a href="#isglobalvararrayempty" id="isglobalvararrayempty"></a>

Devuelve true si el elemento de una variable global de tipo Array está vacío.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* nSubindex: número de índice del elemento del array.

#### void setGlobalVarArray( QString szIdRefVar, Number nSubindex, Variant var) <a href="#setglobalvararray" id="setglobalvararray"></a>

Asigna un valor a un elemento de una variable global de tipo array.

Parámetros:

* szIdRefVar: identificador de referencia de la variable global.
* nSubindex: número de índice del elemento del array.
* var: valor de cualquier tipo que deseamos almacenar en el elemento de la variable global tipo array.

### Funciones de mensajería interna

#### void sendUserAlert( String szUser, String szAsunto, String szMsg ) <a href="#senduseralert" id="senduseralert"></a>

Envía un mensaje de alerta a un usuario.

Parámetros:

* szUser: nombre del usuario.
* szAsuneto: texto del asunto del mensaje.
* szMsg: texto del mensaje.

#### void sendUserMessage( String szUser, String szAsunto, String szMsg ) <a href="#sendusermessage" id="sendusermessage"></a>

Envía un mensaje normal a un usuario.

Parámetros:

* szUser: nombre del usuario.
* szAsuneto: texto del asunto del mensaje.
* szMsg: texto del mensaje.

#### void sendUserWarning( String szUser, String szAsunto, String szMsg ) <a href="#senduserwarning" id="senduserwarning"></a>

Envía un mensaje de aviso a un usuario.

Parámetros:

* szUser: nombre del usuario.
* szAsuneto: texto del asunto del mensaje.
* szMsg: texto del mensaje.

### Funciones de tablas estáticas

#### Number staticTableItemCount( String szIdRefTable ) <a href="#statictableitemcount" id="statictableitemcount"></a>

Devuelve el número de ítems de la tabla estática.

Parámetros:

* szIdRefTable: identificador de referencia de la tabla estática.

#### String staticTableItemId( String szIdRefTable, Number nIndex ) <a href="#statictableitemid" id="statictableitemid"></a>

Devuelve el identificador de un ítem de la tabla estática.

Parámetros:

* szIdRefTable: identificador de referencia de la tabla estática.
* nIndex: número de posición del ítem. El primero es el 0.

#### VImage staticTableItemImage( String szIdRefTable, Number nIndex ) <a href="#statictableitemimage" id="statictableitemimage"></a>

Devuelve un objeto [VImage](vimage) con la imagen de un ítem de la tabla estática.

Parámetros:

* szIdRefTable: identificador de referencia de la tabla estática.
* nIndex: número de posición del ítem. El primero es el 0.

#### String staticTableItemName( String szIdRefTable, Number nIndex ) <a href="#statictableitemname" id="statictableitemname"></a>

Devuelve el nombre de un ítem de la tabla estática.

Parámetros:

* szIdRefTable: identificador de referencia de la tabla estática.
* nIndex: número de posición del ítem. El primero es el 0.

#### String staticTableItemName( String szIdRefTable, Number nIndex, Number nLenguaje, Number nPais )

Devuelve el nombre de un ítem de la tabla estática en el idioma y/o país especifico.

Parámetros:

* szIdRefTable: identificador de referencia de la tabla estática.
* nIndex: número de posición del ítem. El primero es el 0.
* nLenguaje: número del código de idioma. Ver tabla de códigos de idiomas de Qt.
* nPais: número del código de país. Ver tabla de códigos de países de Qt.

Las tablas de códigos de idiomas y países se puede encontrar en la documentación siguiente:

[http://doc.qt.io/qt-5.6/qlocale.html](http://doc.qt.io/qt-5.6/qlocale.html)

### Funciones multimedia

#### Array availableCameraDescriptions() <a href="#availablecameradescriptions" id="availablecameradescriptions"></a>

Devuelve un array con la descripción del dispositivo de las cámaras disponibles en el sistema. Para presentar al usuario es preferible mostrar esta información, es decir la descripción que devuelve esta función en vez de mostrarle los valores de la función availableCameras().

#### Array availableCameras() <a href="#availablecameras" id="availablecameras"></a>

Devuelve un array con los nombres de dispositivo de las cámaras disponibles en el sistema.

#### String defaultCamera() <a href="#defaultcamera" id="defaultcamera"></a>

Devuelve el nombre de la cámara configurada por defecto en el sistema.

#### String defaultCameraDescription() <a href="#defaultcameradescription" id="defaultcameradescription"></a>

Devuelve la descripción de la cámara configurada por defecto en el sistema.

### Funciones de vista de datos

#### VAbstractDataView focusDataView <a href="#focusdataview" id="focusdataview"></a>

Retorna el control de vista de tipo [VAbstractDataView](vabstractdataview) que tiene el foco o null si no hubiera ninguno.

### Funciones de estilos

#### Boolean setStyle( String szStyle ) <a href="#setstyle" id="setstyle"></a>

Establece el estilo que indiquemos como parámetro para la aplicación.

Parámetros:

* szStyle: nombre del estilo. Una cadena vacía establecerá el estilo por defecto del sistema ("").

Devuelve true si ha encontrado el estilo y establecido éste para la aplicación. False si no ha podido establecerlo por que no está disponible.

#### String style() <a href="#style" id="style"></a>

Devuelve el nombre del estilo en curso.

#### Array styles() <a href="#styles" id="styles"></a>

Devuelve en un array de cadenas, los nombres de los estilos disponibles en el sistema.

### Funciones de aspecto

Este grupo de funciones solo está operativo en macOS e iOS.

#### Number currentAspect()

Retorna el valor del aspecto en que esté trabajando la app (Claro u oscuro). Ver [enum de modos de aspecto](vapp-enumeraciones#aspect-modes).

#### Number aspect()

Retorna el valor del aspecto que se haya establecido (Claro, Oscuro o Sistema). Ver [enum de modos de aspecto](vapp-enumeraciones#aspect-modes).

#### void setAspect (AspectMode mode)

Establece el aspecto de la aplicación (Claro, Oscuro o Sistema).

Parámetros:&#x20;

* AspectMode mode: modo de aspecto a etablecer. Ver [enum de modos de aspecto](vapp-enumeraciones#modos-de-aspecto).

[Ver cómo se aplican las paletas clara y oscura en las distintas plataformas](../../../../../velneo/funcionalidades-comunes/cambiar-el-aspecto).

### Funciones de conexión segura TLS/SSL

#### VSSLInfo sslInfo() <a href="#sslinfo" id="sslinfo"></a>

Devuelve un objeto [VSSLInfo](vsslinfo) que contiene la información correspondiente a la conexión en curso, a partir del cuál podemos obtener información de la configuración de la conexión segura TLS/SSL y del certificado utilizado.

### Funciones de cliente-servidor

#### String clientIP()

Devuelve la IP del cliente. Es equivalente a la función de fórmulas [getClientIP](../../../../../proyectos-objetos-y-editores/editores/asistente-de-formulas/funciones-estandar/funciones-de-cliente-servidor#getclientip).

#### Number connectionLatency() <a href="#connectionlatency" id="connectionlatency"></a>

En el cliente, devuelve la latencia media de la conexión expresado en milisegundos (devuelve -1 si no hay conexión).

#### Number connectionQuality() <a href="#connectionquality" id="connectionquality"></a>

En el cliente, devuelve la calidad media de la conexión en una escala de 0 a 6, de menor a mayor calidad (devuelve 0 si no hay conexión). Ver [enum de calidades de conexión](vapp-enumeraciones#calidad-de-conexion).

#### Number connectionStablishedLatency()

En el cliente, devuelve la latencia del establecimiento de la conexión en milisegundos, incluyendo la fase de encriptación TLS/SSL.

#### String serverIP()

Devuelve la IP del servidor. Es equivalente a la función de fórmulas [getServerIP](../../../../../proyectos-objetos-y-editores/editores/asistente-de-formulas/funciones-estandar/funciones-de-cliente-servidor#getserverip).

### Funciones de personalización <a href="#funciones-de-personalizacion" id="funciones-de-personalizacion"></a>

#### Void setFrame( String szIdRefFrame )

Esta función permite cambiar el marco principal del proyecto por el que indiquemos en su parámetro.

Solamente podrá ser usada en el proceso [ON\_INIT\_CLIENT](../../../../../proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso#proceso-on-init-client) del proyecto de aplicación.

Parámetros:

* szIdRefFrame: identificador de referencia del [marco](../../../../proyectos-objetos-y-editores/proyecto-de-aplicacion/marco) a usar.

### Funciones de API <a href="#funciones-de-personalizacion" id="funciones-de-personalizacion"></a>

#### **Number currentInstanceCode()**&#x20;

Devuelve el código de la instancia en curso.

#### **Sring currentInstanceConnectionToken()**&#x20;

Devuelve el testigo del enganche de la instancia en curso.

#### **String currentInstanceId()**

Devuelve el identificador de la instancia en curso.

#### **String currentInstanceName()**

Devuelve el nombre de la instancia en curso.

#### String executionComponent()

Devuelve una cadena con el nombre del componente que está ejecutando la fórmula donde se use la función. Los valores que puede devolver son:

* **cliente**: cuando, se usa, por ejemplo, en un proceso disparado desde [Velneo vClient](../../../../../velneo-vclient/que-es-velneo-vclient) en primer o segundo plano.
* **gestorbbdd**: cuando se usa en un proceso lanzado en primer plano en [Velneo vDataClient](../../../../../velneo-vdataclient).
* **servidor**: cuando la función se usa en un proceso ejecutado en el [servidor](../../../../../velneo-vserver/que-es-velneo-vserver).
* **apache**: cuando la función se usa en un proceso ejecutado en [Velneo vModApache](../../../../../velneo-vmodapache).
* **agente**: cuando la función se usa en un proceso ejecutado en [5º plano](../../../../../proyectos-objetos-y-editores/de-aplicacion-y-datos/proceso#5o-plano).
* **editor**: cuando la función se ejecuta en [Velneo vDevelop](../../../../introduccion).
* **administrador**: cuando la función se ejecuta en [Velneo vAdmin](../../../../../velneo-vadmin/que-es-velneo-vadmin).

#### **Number mainInstanceCode()**

Devuelve el código de la instancia principal.

El valor que devuelva cuando hay herencia variará en función del proyecto en el que usemos la función y el plano de ejecución. Para entenderlo mejor partiremos de una solución con un proyecto de datos que hereda  uno de aplicación. En el proyecto de datos creamos un proceso que usa esta función:

Ejecutado en primer plano desde Velneo vCleint, devolverá el código de la instancia del proyecto de aplicación.

Ejecutado en tercer plano desde Velneo vCleint, devolverá el código de la instancia del proyecto de aplicación.

Ejecutado en primer plano desde Velneo vDataClient, devolverá el código de la instancia del proyecto de datos.

Ejecutado en tercer plano desde Velneo vDataCleint, devolverá el código de la instancia del proyecto de datos.

#### **String mainInstanceConnectionToken()**&#x20;

Devuelve el testigo del enganche de la instancia principal.

El valor que devuelva cuando hay herencia variará en función del proyecto en el que usemos la función y el plano de ejecución. Para entenderlo mejor partiremos de una solución con un proyecto de datos que hereda  uno de aplicación. En el proyecto de datos creamos un proceso que usa esta función:

Ejecutado en primer plano desde Velneo vCleint, devolverá el testigo del enganche del proyecto de aplicación.

Ejecutado en tercer plano desde Velneo vCleint, devolverá el el testigo del enganche del proyecto de aplicación.

Ejecutado en primer plano desde Velneo vDataClient, devolverá el el testigo del enganche del proyecto de datos.

Ejecutado en tercer plano desde Velneo vDataCleint, devolverá el el testigo del enganche del proyecto de datos.

#### **String mainInstanceId()**

Devuelve el identificador de la instancia principal.

El valor que devuelva cuando hay herencia variará en función del proyecto en el que usemos la función y el plano de ejecución. Para entenderlo mejor partiremos de una solución con un proyecto de datos que hereda  uno de aplicación. En el proyecto de datos creamos un proceso que usa esta función:

Ejecutado en primer plano desde Velneo vCleint, devolverá el identificador de la instancia del proyecto de aplicación.

Ejecutado en tercer plano desde Velneo vCleint, devolverá el identificador de la instancia del proyecto de aplicación.

Ejecutado en primer plano desde Velneo vDataClient, devolverá el identificador de la instancia del proyecto de datos.

Ejecutado en tercer plano desde Velneo vDataCleint, devolverá el identificador de la instancia del proyecto de datos.

#### **String mainInstanceName()**

Devuelve el nombre de la instancia principal.

El valor que devuelva cuando hay herencia variará en función del proyecto en el que usemos la función y el plano de ejecución. Para entenderlo mejor partiremos de una solución con un proyecto de datos que hereda  uno de aplicación. En el proyecto de datos creamos un proceso que usa esta función:

Ejecutado en primer plano desde Velneo vCleint, devolverá el nombre de la instancia del proyecto de aplicación.

Ejecutado en tercer plano desde Velneo vCleint, devolverá el nombre de la instancia del proyecto de aplicación.

Ejecutado en primer plano desde Velneo vDataClient, devolverá el nombre de la instancia del proyecto de datos.

Ejecutado en tercer plano desde Velneo vDataCleint, devolverá el nombre de la instancia del proyecto de datos.

### Funciones de Velneo Web

#### String getCurrentURL()

Devuelva la URL en curso de [Velneo Web](../../../../../velneo/velneo-web).

Es una función específica para usar en las [extensiones de Velneo vDevelop](../../../../extensiones-de-velneo-vdevelop) y solamente es funcional en el ámbito de Velneo Web.

### Funciones de JSON Web Token (JWT)

Cuando queremos ejecutar una aplicación web utilizando el _login_ social necesitamos obtener un token para realizar un arranque directo del componente. Las funciones de este grupo nos permiten generar un _token_ JWT.&#x20;

#### Object jwtDecode( String szToken, String szKey )

Esta función permite comprobar si un _token_ JWT es válido o no.

Parámetros:

* szToken: cadena con el _token_ JWT a comprobar.
* szKey: cadena con la clave del _token_ JWT a comprobar.

Devuelve un objeto JSON con los siguientes campos:

* isValid: si el _token_ es valido (la clave con la que se genero es la misma que se le pasa).
* header: cabecera en una cadena con formato JSON.
* payload: _payload_ en una cadena con formato JSON.
* alg: devuelve una cadena con el algoritmo del JWT.
* hasExpired: devuelve _true_ si ek token JWT ha caducado y _false_ si no ha caducado.

#### String jwtEncode( Object jsonPayload, String szKey, String szAlgorithm )

Esta función genera un _token_ JWT.

Parámetros:

* jsonPayload: objeto JSON con el _payload_ (datos).
* szKey: la clave para luego comprobar si el token es valido.
* szAlgorithm: puede ser "HS256", "HS384" o "HS512" (si no se pone nada, asumirá "HS256").

### Funciones de De gestión de enums de objetos

#### Bool objectIsObject(Number nTipo)

Devuelve true si el tipo de objeto es un objeto, false en caso contrario.

Parámetros:

* nTipo: número del tipo de objeto. Ver enum de tipos de objeto de la clase VObjectInfo.

#### Bool objectIsSubObject(Number nTipo)

Devuelve true si el tipo de objeto es un subobjeto, false en caso contrario.

Parámetros:

* nTipo: número del tipo de objeto. Ver enum de tipos de objeto de la clase VObjectInfo.

#### String objectIconPath(Number nTipo)

Devuelve el icono del tipo de objeto.

Parámetros:

* nTipo: número del tipo de objeto. Ver enum de tipos de objeto de la clase VObjectInfo.

#### String objectTypeName(Number nTipo)

Devuelve el nombre del tipo de objeto.

Parámetros:

* nTipo: número del tipo de objeto. Ver enum de tipos de objeto de la clase VObjectInfo.

#### Number objectTypesCount()

Devuelve el número de tipos de objeto que existen.

## Ejemplos

[Ver ejemplos](vapp/vapp-ejemplos).
