# VObjectInfo

Los objetos de esta clase contienen la información de la estructura de un objeto.

Se pueden ver sus propiedades, tanto los datos que contienen como información de su nombre, tipo, tabla asociada (si tiene), tipo de objeto referenciado… Para obtener el valor que contiene una propiedad primero debemos mirar el tipo de dato para usar la función adecuada. Por ejemplo si el tipo de dato es Uint16 usar la función propertyDataToInt(nProp);

También se pueden obtener otros VObjectInfo de sus subobjetos y de los objetos referenciados por sus propiedades.

## Indice de funciones

### **Generales**

String [comments](#comments)()

String [iconPath](#iconpath)()

String [id](#id)()

String [idRef](#idref)()

Boolean [isDataView](#isdataview)()

Boolean [isNull](#isnull)()

Boolean [isUsed](#boolean-isused)()

String [name](#name)( Number lenguaje, Number pais=0 )

String [name](#string-name)()

Number [type](#type)()

### **De estilos**

Boolean [isAccessibleFromWeb](#isaccessiblefromweb)()

Boolean [isDelayedEdition](#isdelayededition)()

Boolean [isDragCopyEnabled](#isdragcopyenabled)()

Boolean [isDragMoveEnabled](#isdragmoveenabled)()

Boolean [isHardLock](#ishardlock)()

Boolean [isInsertPoint](#isinsertpoint)()

Boolean [isOnlyOneExpanded](#isonlyoneexpanded)()

Boolean [isPrivate](#isprivate)()

Boolean [isRemoteFunction](#isremotefunction)()

Boolean [isRunOnSimpleClick](#isrunonsimpleclick)()

Boolean [isVertical](#isvertical)()

Number [style](#style)()

Boolean [style](#boolean-style-estilo)( estilo )

Number array [styles](#number-array-styles)( )

Number array [styles](#number-array-styles-ntipoobjeto)( nTipoObjeto )

String Array [stylesNames](#string-array-stylesnames)()&#x20;

String Array [stylesNames](#stylesnames-ntipoobjeto)( nTipoObjeto )

### **De entrada**

VTableInfo [inputTable](#inputtype)()

String [inputTableIdRef](#string-inputtableidref)()

Number [inputType](#inputtype)()

### **De salida**

VTableInfo [outputTable](#outputtable)()

String [outputTableIdRef](#string-outputtableidref)()

Number [outputType](#outputtype)()

### **De propiedades**

Bool [equals](#equals)( VObjectInfo objectInfo )

String [instructionDescription](#string-instructiondescription)()

Number [propertyCount](#propertycount)()

Variant [propertyData](#propertydata)( Number nProp )

Object [propertyDataColorType](#variantmap-propertydatacolortype)()

Number [propertyDataType](#propertydatatype)( Number nProp )

Number [propertyEditType](#propertyedittype)( Number nProp )

String [propertyName](#propertyname)( Number nProp )

VObjectInfo [propertyObjectInfo](#propertyobjectinfo)( Number nProp )

Number [propertyObjectType](#propertyobjecttype)( Number nProp )

### **De subobjetos**

VObjectInfo array [objectsUsed](#vobjectinfo-array-objectsused)()

Number [subObjectCount](#subobjectcount)( Number nSubType )

VObjectInfo [subObjectInfo](#subobjectinfo)( Number nSubType, String szIdSubObject )

VObjectInfo [subObjectInfo](#vobjectinfo-subobjectinfo-number-nsubtype-number-nsubobject-)( Number nSubType, Number nSubObject )

VObjectInfo array [subObjectsNotUsed](#vobjectinfo-array-subobjectsnotused-number-ntype)(Number nType)

Number array [subObjectTypes](#number-array-subobjecttypes)()

### **De objetos padre**

VObjectInfo [mainObjectInfo](#vobjectinfo-mainobjectinfo)()

VObjectInfo [parentObjectInfo](#vobjectinfo-parentobjectinfo)()

### **De objetos**

VObjectInfo array [objectsUsed](#vobjectinfo-array-objectsused)()

### **De proyecto**

VProjectInfo [projectInfo](#vprojectinfo-projectinfo)()

## Documentación de funciones

### Funciones generales

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

Devuelve el valor de la propiedad comentarios del objeto.

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

Se trata de una senda a recursos internos de la plataforma. Devuelve la senda del icono del objeto.

Esta función, si bien es funcional en vClient, está pensada para su uso en las [extensiones de Velneo vDevelop](https://doc.velneo.com/velneo-vdevelop/extensiones-de-velneo-vdevelop).

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

Devuelve el identificador de un objeto. Por ejemplo, "AUTOEXEC".

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

Devuelve el identificador con referencia de un objeto. Por ejemplo, "VJS\_APP/AUTOEXEC".

#### Boolean isDataView() <a href="#isdataview" id="isdataview"></a>

Devuelve true si el objeto es una vista de datos.

#### Boolean isNull() <a href="#isnull" id="isnull"></a>

Devuelve true si el objeto VObjectInfo es nulo, false si contiene un objeto.

#### Boolean isUsed()

Devuelve true si el objeto está siendo utilizado y false en caso contrario.

#### String name( Number lenguaje, Number pais=0 ) <a href="#name" id="name"></a>

Devuelve el nombre o descripción del objeto. Si no le pasamos parámetros devuelvo el nombre del idioma en curso. Si le resolvemos el idioma o el idioma y país nos devuelve del nombre para ese idioma y país.

Parámetros:

* nLenguaje: código Qt del idioma (ver [enum de idiomas](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#idiomas)).
* nPais: código Qt del país (ver [enum de países](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#paises)).

#### String name()

Devuelve el nombre o descripción del objeto del idioma en curso.

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

Devuelve el código de tipo de objeto. Ver [enum de tipos de objetos](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#tipos-de-objetos).

### Funciones de estilos

#### Boolean isAccessibleFromWeb() <a href="#isaccessiblefromweb" id="isaccessiblefromweb"></a>

Devuelve true si el objeto tiene activado el estilo "Accesible Web" que se aplica en procesos.

#### Boolean isDelayedEdition() <a href="#isdelayededition" id="isdelayededition"></a>

Devuelve true si el objeto tiene activado el estilo "Retardo señal valueChanged" que se aplica en controles de edición.

#### Boolean isDragCopyEnabled() <a href="#isdragcopyenabled" id="isdragcopyenabled"></a>

Devuelve true si el objeto tiene activado el estilo "Arrastrable para copiar" que se aplica en objetos de tipo árbol visor de tabla, casillero, comboview, listview, lista QML, rejilla, rejilla avanzada y viewflow.

#### Boolean isDragMoveEnabled() <a href="#isdragmoveenabled" id="isdragmoveenabled"></a>

Devuelve true si el objeto tiene activado el estilo "Arrastrable para mover" que se aplica en objetos de tipo árbol visor de tabla, casillero, comboview, listview, lista QML, rejilla, rejilla avanzada y viewflow.

#### Boolean isHardLock() <a href="#ishardlock" id="ishardlock"></a>

Devuelve true si el objeto tiene activado el estilo "Bloqueo duro" que se aplica en objetos de tipo formulario y formulario QML.

#### Boolean isInsertPoint() <a href="#isinsertpoint" id="isinsertpoint"></a>

Devuelve true si el objeto tiene activado el estilo "Punto de inserción" que se aplica en objetos de tipo acción, formulario y formulario QML.

#### Boolean isOnlyOneExpanded() <a href="#isonlyoneexpanded" id="isonlyoneexpanded"></a>

Devuelve true si el objeto tiene activado el estilo "Solo una rama abierta" que se aplica en objetos de tipo árbol de tabla.

#### Boolean isPrivate() <a href="#isprivate" id="isprivate"></a>

Devuelve true si el objeto tiene activado el estilo "Privado" que se aplica en todos los objetos.

#### Boolean isRemoteFunction() <a href="#isremotefunction" id="isremotefunction"></a>

Devuelve true si el objeto tiene activado el estilo "Ejecutable en remoto" que se aplica en funciones.

#### Boolean isRunOnSimpleClick() <a href="#isrunonsimpleclick" id="isrunonsimpleclick"></a>

Devuelve true si el objeto tiene activado el estilo "Simple-click dispara" que se aplica en objetos de tipo árbol visor de tablas, casillero, listview, rejilla, rejilla avanzada y viewflow.

#### Boolean isVertical() <a href="#isvertical" id="isvertical"></a>

Devuelve true si el objeto tiene activado el estilo "Vertical" que se aplica en objetos de tipo multivista.

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

Devuelve un número de 32 bits en el que cada bit se corresponde con un flag de estilo del enum de estilos de la clase VObjectInfo.

Para determinar si un estilo está activado o no podemos usar los operadores bitwase de JavaScript. Por ejemplo:

```javascript
(0x00000001 == (objeto.style()
&
0x00000001)) // Devuelve true si es privado
(0x00000010 == (objeto.style()
&
0x00000010)) // Devuelve true si es un punto de inserción
(0x00000020 == (objeto.style()
&
0x00000020)) // Devuelve true si la función es ejecutable en remoto
(0x00000040 == (objeto.style()
&
0x00000040)) // Devuelve true si el proceso es accesible web
```

#### Boolean style( estilo )

Devuelve true si el objeto contiene el estilo o los estilos que le pasamos como parámetro.

Parámetros

* Estilo: es un valor del [enum de estilos del objeto](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#estilos). Funciona como un *flag* y puede contener varios estilos concatenados. Por ejemplo:

```javascript
obj.style( StyleCustomizable | StyleOnlyView ) //devolverá true si contiene ambos estilos.
```

#### Number array styles( )

Devuelve un array con los estilos posibles de un objeto. Ver [enum de estilos](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#estilos).

#### Number array styles( nTipoObjeto )

Se trata de una función estática. Devuelve un array con los números de los estilos posibles de un tipo de objeto. Ver [enum de estilos](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#estilos).

Parámetros

* nTipoOjbeto: código del tipo de objeto. Ver [enum de tipos de objeto](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#tipos-de-objetos).

#### String array stylesNames()&#x20;

Devuelve un array con los nombres de los estilos posibles de un objeto.

#### stylesNames( nTipoObjeto )

Devuelve un array de cadenas con los nombres de los estilos del tipo de objeto que se le pase como parámetro.

Parámetros

* nTipoObjeto: código del tipo de objeto. Ver [enum de tipos de objeto](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#tipos-de-objetos).

### Funciones de entrada

#### VTableInfo inputTable() <a href="#inputtable" id="inputtable"></a>

Devuelve el objeto [VTableInfo ](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo)correspondiente a la tabla de entrada.

#### Number inputType() <a href="#inputtype" id="inputtype"></a>

Devuelve el tipo de entrada. Ver enum de tipos de entrada/salida.

#### String inputTableIdRef()‌

Devuelve el identificador de referencia (idRef) de la tabla de entrada.

### Funciones de salida

#### VTableInfo outputTable() <a href="#outputtable" id="outputtable"></a>

Devuelve el objeto [VTableInfo ](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo)correspondiente a la tabla de salida.

#### String outputTableIdRef()‌&#xD;

Devuelve el identificador de referencia (idRef) de la tabla de salida.

#### Number outputType() <a href="#outputtype" id="outputtype"></a>

Devuelve el tipo de salida. Ver enum de tipos de entrada/salida.

### Funciones de propiedades

#### Bool equals( VObjectInfo objectInfo ) <a href="#equals" id="equals"></a>

Devuelve true si el objeto es igual que el que pasamos como parámetro, false si es distinto. Comprueba para ello propiedades y subobjetos.

Parámetros:

* objectInfo: objeto de la clase VObjectInfo con el que queremos comparar el objeto.

#### String instructionDescription()

De uso exclusivo para [extensiones de Velneo vDevelop](https://doc.velneo.com/velneo-vdevelop/extensiones-de-velneo-vdevelop). Devuelve la descripción de la línea de instrucción.

#### Number propertyCount() <a href="#propertycount" id="propertycount"></a>

Devuelve el número de propiedades del control.

#### QVariant propertyData( Number nProp ) <a href="#propertydata" id="propertydata"></a>

Devuelve el valor de la propiedad.

Parámetros:

* nProp: valor numérico que se corresponde con la posición ordinal de la propiedad del objeto o control.

#### Object propertyDataColorType()

Devuelve la información necesaria para determinar si el color usado en la propiedad es un color concreto o una paleta y qué nombre de paleta tiene.

Devuelve un objeto JavaScript con los siguientes campos:

* mode: valor del [enumerado ColorMode](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#colormode).
* colorGroup: valor del [enumerado de Qt](https://doc.qt.io/qt-5/qpalette.html#ColorGroup-enum).
* colorRole: valor del [enumerado de Qt](https://doc.qt.io/qt-5/qpalette.html#ColorRole-enum).
* palette: nombre de la paleta (si es definida por el usuario).

#### umber propertyDataType( Number nProp ) <a href="#propertydatatype" id="propertydatatype"></a>

Devuelve el tipo de dato de la propiedad. Ver enum Property Data Types.

Parámetros:

* nProp: valor numérico que se corresponde con la posición ordinal de la propiedad del objeto o control.

#### Number propertyEditType( Number nProp ) <a href="#propertyedittype" id="propertyedittype"></a>

Devuelve el tipo de editor de la propiedad. Ver [enum Property Edit Types](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#property-edit-types).

Parámetros:

* nProp: valor numérico que se corresponde con la posición ordinal de la propiedad del objeto o control.

#### String propertyName( Number nProp ) <a href="#propertyname" id="propertyname"></a>

Devuelve el nombre de la propiedad.

Parámetros:

* nProp: valor numérico que se corresponde con la posición ordinal de la propiedad del objeto o control.

#### VObjectInfo propertyObjectInfo( Number nProp ) <a href="#propertyobjectinfo" id="propertyobjectinfo"></a>

Devuelve un objeto de la clase VObjectInfo de la propiedad.

Parámetros:

* nProp: valor numérico que se corresponde con la posición ordinal de la propiedad del objeto o control.

#### Number propertyObjectType( Number nProp ) <a href="#propertyobjecttype" id="propertyobjecttype"></a>

Devuelve un número que identifica el tipo de objeto de la propiedad. Ver .

Parámetros:

* nProp: valor numérico que se corresponde con la posición ordinal de la propiedad del objeto o control.

### Funciones de subobjetos

#### Number subObjectCount( Number nSubType ) <a href="#subobjectcount" id="subobjectcount"></a>

Devuelve el número de subobjetos de un objeto de un tipo.

Parámetros:

* nSubType: ver [enum de tipos de objetos](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#tipos-de-objetos).

#### VObjectInfo subObjectInfo( Number nSubType, String szIdSubObject ) <a href="#subobjectinfo" id="subobjectinfo"></a>

Devuelve un objeto VObjectInfo de un subobjeto de un tipo y un identificador.

Parámetros:

* nSubType: ver enum de tipos de objetos.
* szIdSubObject: identificador del subobjeto.

#### VObjectInfo subObjectInfo( Number nSubType, Number nSubObject )

Devuelve un objeto VObjectInfo de un subobjeto de un tipo y un número de orden del subobjeto.

Parámetros:

* nSubType: ver [enum de tipos de objetos](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#tipos-de-objetos).
* szIdSubObject = número de orden del subobjeto en la lista.

#### [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) array subObjectsNotUsed(Number nType)

Devuelve un array de [objectinfos](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) de todos los  subobjetos no usados del objeto.&#x20;

Parámetros:

* nType: ver enum de tipos de objetos.

Si se especifica el tipo devuelve solo los de ese tipo, si no se pasa parámetro los devuelve todos. Ver [enum de tipos de objetos](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#tipos-de-objetos).

#### Number array subObjectTypes()

Retorna una lista con los tipos de subobjetos del objeto. Ver [enum de tipos de objetos](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo-enumeraciones#tipos-de-objetos).

### Funciones de objetos padre

#### [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) mainObjectInfo()

Devuelve el objeto principal del sub-objeto en curso. Por ejemplo: de una parte de un índice devuelve la tabla.

#### [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) parentObjectInfo()&#xD;

‌Devuelve el objeto padre del sub-objeto en curso. Por ejepmlo: el índice de una parte de índice, o la tabla de un índice).

### Funciones de objetos

#### [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) Array objectsUsed()

Devuelve un array de [objectInfos](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) de los objetos o subobjetos que usan el objeto.

### Funciones de proyecto&#xD;

#### ‌[VProjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vprojectinfo) projectInfo()‌&#xD;

Devuelve el proyecto de un objeto.

## Ejemplos

### 1. Información del objeto de la vista en curso

```javascript
////////////////////////////////////////////////////////////
// Información del objeto de la vista en curso

// Se coge el root (objeto) de la vista en curso
var root = theMainWindow.currentView().root();

// Se crea el objeto VObjectInfo de la vista en curso
obj = root.objectInfo();

// Se muestra la información del objeto
msg = "El objeto en curso tiene la siguiente información:" +  "nn" + 
        "Id: " + obj.id() + "n" + 
        "IdRef: " + obj.idRef() + "n" + 
        "Name: " + obj.name() + "n" + 
        "Tipo: " + obj.type() + "n" + 
        "¿Es vista de datos? " + obj.isDataView() + "n";

// Si tiene tabla asociada se añade al mensaje
if ( obj.inputTable().name() != "" )
    msg += "n" + "Tabla asociada: " + obj.inputTable().name() + "n";

// Si tiene tabla destino se añade al mensaje
if ( obj.outputTable().name() != "" )
    msg += "n" + "Tabla destino: " + obj.outputTable().name() + "n";

// Si es una rejilla se muestra el número de columnas
if ( obj.type() == VObjectInfo.TypeGrid )
    msg += "n" + "Es una rejilla y tiene " + obj.subObjectCount( 15 ) + " columnas";
```

### 2. Guardar en un array los identificadores de una columna de una rejilla

Se trata de un manejador de evento de una rejilla.

```javascript
//Obtenemos la vista actual
var root = theRoot.dataView();

// Se crea el objeto VObjectInfo de la vista en curso
obj = root.objectInfo();

//Inicalizamos array de identificadores
var arrIdsColumnas = [];

//Obtenemos el número de columnas
var numCols = obj.subObjectCount(15);

//Recorremos las columnas de la rejilla
for (var i = 0; i < numCols; i++)
{
	//Obtenemos el identificador de la columna en cursor
	var idCol = obj.subObjectInfo(15, i).id();
	
	//Añadimos el identificador a la variable array
	arrIdsColumnas.push(idCol);
}
```
