Estoy intentado crear un proceso en js que al intentar abrir un formulario desde una rejilla, si existe otro abierto cierre el anterior…
¿Como puedo programar en js que si se localiza un objeto lo cierre?.
algo así como formulario.close
Estaba intentado con esta secuencia de comandos, pero todavía no controlo el js,
/////////////////////////////////////////////////////////////////
// Busca un formulario si esta activo y lo cierra antes de abrir el nuevo
//
//
//Variables locales:
// -OBJ_IDREF: IDRef del Objeto.
// -OBJ_TIPO: Tipo del Objeto
var nNunVistas = theMainWindow.viewsCount();
var vista = null;
var szFormularioIdRef ="";
var bExisteTab = false;
// Se recorren todas las vistas centrales en busca del formulario
for ( nIndice 0 =; nIndice < nNumVistas; nIndice++)
{
vista = theMainWindow.getViewAt ( nIndice );
if ( vista )
{
formulario = vista.centralWidget().objectInfo();
if ( formulario.type() == theRoot.varToString( “OBJ_TIPO”) )
{
if ( formulario.idRef() == theRoot.varToString( “OBJ_IDREF” ) )
{
bExisteTab = true;
theRoot.close (formulario.idRef);
break;
}
}
}
}
// Se devuelve el voleano que indica que exitia la pestaña y se ha cerrado
theRoot.setVar( “ACTIVADO”, bExisteTab);
Buenos días.
Te explico, como no tengo ni idea de js, voy mirando el manual y probando cosas… osea “dando palos de ciego”.
La primera prueba que hice fue escribir formulario. pero esta clase no me daba la función que tu me indicas. De hecho lo acabo de probar y no funciona.
Estuve haciendo pruebas y miran y leyendo… y al final lo que funciona es:
Paso el manejador evento que disparo (en imagen) la función CierraVentana.js que me funciona.
Estoy terminado de pulirlo, quien lo quiera utilizar, que lo considere como una “beta”.
/////////////////////////////////////////////////////////////////
// Busca un formulario si esta activo y lo cierra antes de abrir el nuevo
//
//
//Variables locales:
// -OBJ_IDREF: IDRef del Objeto.
// -OBJ_TIPO: Tipo del Objeto
var nNumVistas = theMainWindow.viewsCount();
var vista = null;
var szFormularioIdRef = “”;
var bExisteTab = false;
// Se recorren todas las vistas centrales en busca del formulario
for ( nIndice = 0; nIndice < nNumVistas; nIndice++ )
{
vista = theMainWindow.getViewAt( nIndice );
if ( vista )
{
formulario = vista.centralWidget().objectInfo();
if ( formulario.type() == theRoot.varToString( “OBJ_TIPO” ) )
{
if ( formulario.idRef() == theRoot.varToString( “OBJ_IDREF” ) )
{
Disculpa, había pensado que la variable formulario era un objeto VFormDataView y en realidad es una Vista VMdiView.
En este caso es correcto usar theMainWindow.closeViewAt(nIndice)