Events

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Referenz für Programmierer > Skripterstellung >

Events

Der Ordner "Events" des Skripting-Projekts (siehe Abbildung unten) enthält Ordner für die folgenden Event-Arten:

 

Application Events
Document Events
Authentic View Events
Grid View Events
Text View Events

 

Beachten Sie, dass diese Events im Gegensatz zu formularbasierten Events XMLSpy-spezifisch sind. Jeder der oben aufgelisteten Ordner enthält eine Gruppe von Events, für die Event Handler Skripts geschrieben werden können.

 

So werden z.B. in der Abbildung unten Application Events gezeigt.

 

Um Zugriff auf das Event Handler Skript eines dieser Events zu erhalten, klicken Sie mit der rechten Maustaste auf das Event und wählen Sie im Kontextmenü den Befehl Öffnen. Das Skript wird im Hauptfenster angezeigt (siehe Abbildung unten) und kann dort bearbeitet werden. Nachdem Sie mit der Bearbeitung fertig sind, speichern Sie die Änderungen durch Klicken auf die Schaltfläche Speichern in der Symbolleiste des Skript-Editors.

 

ScrEventsFolder

 

Beachten Sie die folgenden Punkte:

 

Bei Event Handlern müssen die Funktionsüberschriften den exakt richtigen Event-Namen haben, da der Event Handler sonst nicht aufgerufen wird.
Sie können in Makros und Event Handlern lokale Variablen und Hilfsfunktionen definieren.  Beispiel:

 

//return value: true allows editing

//return value: false disallows editing

var txtLocal;

function Helper()

{

 txtMessage = txtLocal;

 Application.ShowForm("MsgBox");

}

function On_BeforeStartEditing(objXMLData)

{

 txtLocal = "On_BeforeStartEditing()";

 Helper();

}

 

Damit Events verarbeitet werden, müssen in den Skripting-Optionen von XMLSpy die "Events abarbeiten" Optionen aktiviert sein. Nähere Informationen dazu finden Sie unter Skripting-Projekte in XMLSpy.
Siehe auch Anmerkungen zur Programmierung.

 

Application Events

 

OnInitialize

Das OnInitialize Event wird ausgelöst, nachdem das Hauptfenster angezeigt wird und noch bevor ein Projekt geladen wird. Dieses Event wird nicht ausgelöst, wenn die Applikation nicht geladen werden kann.

 

OnRunning

Wenn die Applikation zur Gänze geladen ist und nachdem das OnInitialize Event ausgelöst wurde, wird das OnRunning Event ausgelöst.

 

OnShutdown

Dieses Event wird ausgelöst, nachdem alle offenen Projekte und alle Dokumente beim Beenden der Applikation geschlossen wurden. Das Hauptfenster wird nicht mehr angezeigt.

 

 

Beispiel

Das folgende Skript ist ein Event Handler für das On_BeforeOpenProject Event. Sie können damit ein Skript hinzufügen, das jedes Mal, bevor XMLSpy ein Projekt öffnet, ausgeführt wird. Das Beispielskript unten öffnet der Reihe nach alle XML-Dateien im Ordner "XML" des Projekts und validiert diese. Wenn die Validierung fehlschlägt, zeigt das Skript einen Validierungsfehler an und bricht den Vorgang ab. Wenn eine Datei gültig ist, wird sie geschlossen und die nächste Datei wird geöffnet.

 

Geben Sie für das On_BeforeOpenProject() Event das folgende Skript ein uns speichern Sie das Skripting-Projekt.

 

function On_BeforeOpenProject()

{

         var        bOK;

         var        nIndex,nCount;

         var        objItems,objXMLFolder = null;

 

         objItems = Application.CurrentProject.RootItems;

         nCount = objItems.Count;

 

         // search for XML folder

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

                 var txtExtensions;

                 txtExtensions = objItems.Item(nIndex).FileExtensions;

         

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

                 objXMLFolder = objItems.Item(nIndex);

         break;

         }

 }

 

 // does XML folder exist?

 if(objXMLFolder)        {

         var objChild,objDoc;

         

         nCount = objXMLFolder.ChildItems.Count;

         

         // step through associated xml files

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

                 objChild = objXMLFolder.ChildItems.Item(nIndex);

                 

                 try        {

                         objDoc = objChild.Open();

                         

                         // use JScript method to access out-parameters

                         var strError = new Array(1);

                         var nErrorPos = new Array(1);

                         var objBadData = new Array(1);

                         

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

                         

                         if(!bOK)        {

                                 // if the validation fails, we should display the

                                 // message from XMLSpy

                                 // of course we have to create the form "MsgBox" and

                                 // define the global txtMessage variable

                                 //

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

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

                                 //                        objBadData[0].TextValue;

                                 //

                                 // Application.ShowForm("MsgBox");

                                 

                                 break;

                         }

                                 

                         objDoc.Close(true);

                         objDoc = null;

                 }

                 catch(Err)        {

                         // displaying the error description here is a good idea

 

                         // txtMessage = Err.Description;        

                         // Application.ShowForm("MsgBox");

 

                         break;

                         }

                 }

         }

 }

 

 

Testen des Event Handlers

Wechseln Sie in XMLSpy und öffnen Sie ein Projekt um zu sehen, wie das BeforeOpenProject Event behandelt wird.

 


© 2019 Altova GmbH