Obtener idRef de imagen en separador de formularios


([N2] ramiro) #1

Buenas tardes:

Necesito obtener información (con Javascript, por supuesto) sobre las pestañas de un Separador de Formularios.

No hay problemas con el número de pestañas ni con su descripción (el texto que se muestra).
También funciona la información sobre si están o no están visibles en un momento dado.

Me quedan por resolver 2 problemas:

  1. Al intentar conocer el idRef del formulario de cada pestaña, el valor que obtengo es el Identificador dado a cada pestaña en el Separador (puedo hacer que sea igual al idRef del Formulario, pero eso no refactoriza y por ello prefiero obtener el idRef nativo del Formulario y dejar que el identificador vaya por libre)

  2. No he visto la forma de obtener el idRef de la imagen asociada a cada pestaña.

Si alguien puede ayudarme, se lo agradecería
Aprovecho para reiterar que la documentación sobre JavaScript es infame…

El código que uso (aún muy verde) está en el fichero adjunto…

Saludos. Ramiro


([N2] ramiro) #2

Vuelvo a intentar subir el fichero…


([N2] ramiro) #3

Una vez más…


([N2] ramiro) #4

A ver como imagen…



([N1] wikan) #5

Dentro del if cuando obtiene el subobjeto intentaría esto

var separador = theRoot.dataView().control(vsOI.id()); // Obtiene el widger del separador
for(var i=0;count=separador.count; i<count; i++){
    var subForm = separador.form(i); // Obtiene el formulario de la pestaña == VFormDataView
    var subFormObj = subForm.objectInfo(); // Obtiene el VObjectInfo del separador mediante la clase maestra VAbstractDataView
    var subFormIdRef = subFormObj.idRef(); // Devuelve el idRef del formulario por la clase VObjectInfo
}

Para la imagen parece que si tendrás que usar los subobjetos, pero tendrás que usar las funciones de propiedades.
Probando por posición una vez tengas los subobjectos del separador:
propertyData -> devuelve por posición
propertyObjectInfo -> devuelve un VObject infor del subcontrol.

Usando las propiedades deberías poder llegar.

PD: Esta todo escrito sin probar, simplemente usando la documentación y experiencia…no te aseguro nada.


([N2] ramiro) #6

Gracias por tu ayuda…

He probado lo que me comentas y sería funcional pero existe un problema: la instrucción “separador.form(i)” solo accede a las pestañas visibles y eso lo estropea todo.

Lo que quiero es que ciertos formularios con muchas pestañas muestren por defecto solo las más importantes para agilizar su carga en Cloud. Los usuarios podrán seleccionar otras (inicialmente ocultas) y mostrarlas a voluntad e incluso guardar su configuración personal.

Está funcionando bien (ver imagen), pero no logro encontrar un sistema de reasignación dinámica del icono de las pestañas.
¿Porqué demonios en vTabWidget no existen show(i) y hide(i) aplicable a las pestañas definidas en diseño?

Saludos. Ramiro



([N3] pacosatu) #7

Hola Ramiro.

El modelo de objetos del API de Velneo no se diseñó en una noche serena, más bien tormentosa, ¡¡Vaya tela!!.

Veo en el código que para acceder a la estructura del Separador tienes que navegar por el modelo de objetos desde el contenedor principal que es el formulario, es decir, desde el propio Separador no tenemos un ObjectInfo() para verse las tripas uno mismo ¡¡Vaya tela!!.

¿Cuál es tu problema? que no puedes acceder a la imagen asociada a la pestaña, una vez definida en tiempo de diseño.

Yo lo que haría, de momento, es asignar a las pestañas el mismo Icono que tiene el Subformulario asociado a dicha pestaña. De esta forma lo que lees es el Icono del formulario que a su vez es el que asignas dinámicamente a la pestaña.

Mucha paciencia con el API y su documentación.
Un gran trabajo.

Saludos
Paco Satué


([N2] ramiro) #8

Hola Paco:

El objetivo es claro:

Quiero que un formulario (por ejemplo de cliente) aparezca con información básica (imagen 1)
Quiero que el usuario pueda elegir ver otras pestañas (imagen 2) y que se muestren (imagen 3)
Quiero que pueda guardar su configuración personal y se le aplique al reabrir ese formulario

No hay problema, ya está funcionando OK, pero para ello tengo que hacerme trampas:

  • He de asumir que el Identificador de las pestañas sea igual a idRef() del Formulario contenido
  • Tengo que duplicar los iconos y darles como nombre el id() de esos Formularios

… todo ello porque vTabWidget, hasta donde he podido ver, solo permite acceder a los datos de los formularios contenidos en pestañas VISIBLES y la primera condición es que, por defecto, la mayoría de las pestañas del Separador sean no visibles.

… y también porque, increíblemente, en vTabWidget las pestañas se pueden crear y destruir pero no se pueden ocultar/mostrar.

Además de estar insuficientemente documentado, al API le falta un hervor.

Saludos. Ramiro