Cambiar titulo en pestaña de separador de formularios


([N4] José A. Martínez) #1

Estoy intentando mostrar, en el titulo de una pestaña de un subformulario, de forma dinamica, el numero de elementos de un historico. Me explico mejor…

En una tabla tengo un historico llamado “notas”, que muestro en una rejilla. Dicha rejilla esta incluida en un subformulario, en un separador de formularios. Actualmente el titulo de la pestaña pone simplemente “Notas”, y me gustaria poner algo asi como “Notas (4)” si el nº de elementos en el historico fuesen cuatro.

El nº de elementos del historico lo tengo precalculado con actualizaciones en un campo llamado CONT_NOTAS. Ese no es el problema…

He encontrado un monton de ejemplos por ahi con codigo JS que trata de este tema, pero ninguno de ellos me sirve del todo. La mayoria solucionan el problema de las pestañas, pero no en un separador de formularios, sino en la ventana principal del programa. Ademas, el formulario donde tengo el separador, se abre en modo dialogo, no en pestaña de ventana principal.

El cutre codigo con el que estoy probando es algo asi:

// Obtenemos el formulario principal.
formulario = theRoot.dataView().mainForm();

// Identificamos el separador con el identificador que éste tiene dentro del formulario principal, un VSplitter
separador = formulario.control( “SEP_FORM” );

/* Identificamos el subformulario a renombrar del separador. Para ello debemos especificar su identificador precedido del proyecto al que pertenece*/
var tabf = separador.form(“APP/AVISO_NOTAS”);

// hasta aqui todo bien: se supone que en tabf tengo un VFormDataView con el formulario incrustado en el separador
// ¿COMO DEMONIOS LE CAMBIO EL TITULO?, TODO LO QUE PONGO A PARTIR DE AQUI ME FALLA…
// ADEMAS, EL SEPARADOR NO MUESTRA EL TITULO DEL FORMULARIO, SINO EL TITULO DEL SUBOJETO DEL SEPARADOR QUE REPRESENTA AL
// FORMULARIO, EN FIN, N.P.I. por donde seguir

tabf.title=“hola”;
alert(tabf.title);
tabf.SetTitle(“pepe”);
alert(tabf.title);

¿Alguien me puede ayudar? Esto es bastante generico, se puede aprovechar en todas las pestañas con historicos…

Saludos.
Victor Garcia Tascon.


([N1] wikan) #2

Buenas días,
no lo he probado, pero estas usando title que no aparece para nada en la documentación del separador de formularios, http://velneo.es/info_v7_715_es/velneo_vdevelop_v7/scripts/clases/vtabwidget/

Por lo que creo que una ves que tengas la pestaña/formulario identificado en una variable usa:


tabIndex = separador.findForm( "SEP_FORM" ) // Devuelve la posición del subformulario
separador.setLabelText( tabIndex, "titulo que quieras" ) // Establece el nombre de la pestaña


([N4] José A. Martínez) #3

Gracias Wikan. En un ejemplo lei algo de vSplitter y me despisto. La clave es el objeto VTabWidget que yo ni conocia…

Ahora funciona y el codigo JS me queda asi:

// Obtenemos el formulario principal.
var formulario = theRoot.dataView().mainForm();

// Identificamos el separador con el identificador que éste tiene dentro del formulario principal.
var separador = formulario.control( “SEP_FORM” );

// Identificamos el subformulario mediante su posicion
var tabIndex = separador.findForm( “APP/AVISO_NOTAS” );

//ponemos titulo
separador.setLabelText( tabIndex, “Notas (” + theRegisterIn.fieldToString( “CONT_NOTAS” ) + “)” );

Ahora solo me falta hacer que cuando añado notas se refresque. Espero no me de mucha a guerra…

Saludos y gracias otra vez Wikan…


([N1] wikan) #4

Una opción, aunque a mi no me gusta demasiado, sería ponerlo en un TIMER del formulario y que pregunte, “Ha cambiado el campo??”
En caso positivo, lanzas el manejador de evento.

En lo personal prefiero no realizar trabajo sin necesidad, es decir, buscar la manera que cuando se produzca un alta o una eliminación de notas, sea cuando lances el evento.


([N4] ofsantana) #5

Hola a mi no me funciona este código.
Lo quiero utilizar en un formulario que tiene una pestaña con plurales, pero me dice que separador no es un objeto.

Me pueden ayudar.

Saludos.


([N1] wikan) #6

Buenos días @ofsantana,
revisa que estas cogiendo de manera correcta el separador en la variable. El compañero lanza este evento desde el mismo formulario que tiene los plurales, aunque sube al nivel superior para poder tener acceso al separador.


([N4] ofsantana) #7

Ummm, ok es probable que sea eso, porque yo puse el evento en el formulario que contiene el separador… Reviso y comento.