Eventos

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Referencia del programador > Editor de scripts >

Eventos

El componente Eventos del proyecto de scripting (imagen siguiente) contiene carpetas para todos estos eventos:

 

Eventos de aplicación
Eventos de documento
Eventos de la vista Authentic
Eventos de la vista Cuadrícula
Eventos de la vista Texto

 

No olvide que todos estos eventos son propios de XMLSpy, no como los eventos de formularios. Cada una de estas carpetas de eventos contiene un conjunto de eventos para los que puede escribir scripts de controladores de eventos.

 

Por ejemplo, en la imagen siguiente puede ver los eventos de aplicación.

 

Para acceder al script de control de cualquiera de estos eventos, haga clic con el botón derecho en el evento y seleccione el comando Abrir del menú contextual. El script aparece en la ventana principal (imagen siguiente), donde puede editarlo. Cuando termine de editar el script guarde los cambios haciendo clic en el icono Guardar de la barra de herramientas del Editor de scripts.

 

ScrEventsFolderSV

 

Además debe tener en cuenta que:

 

El nombre del evento debe estar correctamente escrito en el encabezado de función. De lo contrario no se podrá llamar al controlador de eventos.

 

Dentro de las macros y de los controladores de eventos se pueden definir variables locales y funciones auxiliares. Por ejemplo:

 

//valor devuelto: true permite la edición

//valor devuelto: false no permite la edición

var txtLocal;

function Helper()

{

 txtMessage = txtLocal;

 Application.ShowForm("MsgBox");

}

function On_BeforeStartEditing(objXMLData)

{

 txtLocal = "On_BeforeStartEditing()";

 Helper();

}

 

Para que los eventos se procesen debe activar la opción Procesar eventos del cuadro de diálogo "Opciones".

 

Puede obtener más información en el apartado Notas sobre programación.

 

 

Eventos de aplicación

 

OnInitialize

El evento OnInitialize se desencadena después de que aparezca la ventana principal pero antes de que se cargue un proyecto. Este evento no se desencadena si la aplicación no se puede cargar.

 

OnRunning

Si la aplicación está completamente cargada, el evento OnRunning se desencadena después de que tenga lugar el evento OnInitialize.

 

OnShutdown

Este evento se desencadena después de que se cierren los proyectos y documentos que estaban abiertos cuando se cerró la aplicación. La ventana principal deja de estar visible.

 

Ejemplo

El script que aparece a continuación es un controlador de eventos para el evento On_BeforeOpenProject. Este script permite añadir un script que se ejecutará antes de que XMLSpy abra un proyecto. El script abre uno por uno todos los archivos XML situados en la carpeta XML del proyecto y los valida. Si un archivo no es válido, el script muestra el error de validación y se detiene. Si un archivo es válido, se cierra y el script abre el archivo siguiente.

 

Escriba este script para el evento On_BeforeOpenProject() y después guarde el proyecto de scripting.

 

function On_BeforeOpenProject()

{

         var        bOK;

         var        nIndex,nCount;

         var        objItems,objXMLFolder = null;

 

         objItems = Application.CurrentProject.RootItems;

         nCount = objItems.Count;

 

         // Buscar la carpeta XML

         for(nIndex = 1;nIndex <= nCount;nIndex++)        {

                 var txtExtensions;

                 txtExtensions = objItems.Item(nIndex).FileExtensions;

         

         if(txtExtensions.indexOf("xml") >= 0)        {

                 objXMLFolder = objItems.Item(nIndex);

         break;

         }

 }

 

 // ¿Existe la carpeta XML?

 if(objXMLFolder)        {

         var objChild,objDoc;

         

         nCount = objXMLFolder.ChildItems.Count;

         

         // Recorrer los archivos xml asociados

         for(nIndex = 1;nIndex <= nCount;nIndex++)        {

                 objChild = objXMLFolder.ChildItems.Item(nIndex);

                 

                 try        {

                         objDoc = objChild.Open();

                         

                         // Usar el método JScript para acceder a parámetros out

                         var strError = new Array(1);

                         var nErrorPos = new Array(1);

                         var objBadData = new Array(1);

                         

                         bOK = objDoc.IsValid(strError,nErrorPos,objBadData);

                         

                         if(!bOK)        {

                                 // Si no supera la validación, debemos mostrar el

                                 // mensaje de XMLSpy

                                 // pero tenemos que crear el formulario "CuadroMje" y

                                 // definir la variable global MensajeTxt

                                 //

                                 // MensajeTxt = Position:" + nErrorPos[0] + "\n" + // strError[0];

                                 // MensajeTxt +=        "\n\nXML:\n" + objBadData[0].Name + ", " +

                                 //                        objBadData[0].TextValue;

                                 //

                                 // Application.ShowForm("CuadroMje");

                                 

                                 break;

                         }

                                 

                         objDoc.Close(true);

                         objDoc = null;

                 }

                 catch(Err)        {

                         // Aquí es buena idea mostrar la descripción del error

 

                         // MensajeTxt = Err.Description;        

                         // Application.ShowForm("CuadroMje");

 

                         break;

                         }

                 }

         }

 }

 

Probar el controlador de eventos

Cierre el Editor de scripts y abra cualquier proyecto en XMLSpy para ver cómo se controla el evento BeforeOpenProject.

 


© 2019 Altova GmbH