2. Juni 2008

Open-Form und die Exit-Form-Strategie (2)

Manchmal benutzt man Sourcecodes schon seit vielen Jahren und denkt, dass es keinen einfacheren und besseren Weg gibt um ein bestimmtes Problem zu lösen als durch den Einsatz genau dieses Stück Codes.

So auch hier. Nachdem ich den letzten Artikel geschrieben hatte lief alles so wie immer und war bestens!

Nachdem ich heute den Code ein wenig refaktorieren wollte, entwarf ich eine viel einfachere und wirkungsvollere Methode (was normalerweise nicht das Ziel eines Refactorings sein sollte!):

Alles was man nun noch benötigt ist ein

KEY-EXIT in der Startmaske:

COPY ('TRUE', 'GLOBAL.EXIT_IMMEDIATE');
EXIT_FORM (no_validate);

und ein WHEN-FORM-NAVIGATE in allen anderen Masken

DEFAULT_VALUE ('FALSE', 'GLOBAL.EXIT_IMMEDIATE');
IF :GLOBAL.EXIT_IMMEDIATE = 'TRUE' THEN
EXIT_FORM (no_validate);
END IF;


Diese Technik arbeitet mit einer Kettenreaktion. Jede geschlossene Maske lässt den Fokus auf eine noch geöffnete Maske überspringen, in der dann der WHEN-FORM-VNAVIGATE ausgeführt wird. Diese Maske wird dann auch wieder geschlossen usw... Dies geschieht, da die globale Variable AUTOCLOSE auf TRUE gesetzt wurde.

Nach der letzten Maske ist somit die gesamte Applikation beendet und wir haben das Ziel erreicht, dass wir zu Beginn beabsichtigten.

Wenn einige dieser Masken weitere Masken per Call_Form starten, dann benötigt man hier dem WHEN-WINDOW-ACTIVATED als Event, da der WHEN-FORM-NAVIGATE nicht zündet, wenn der Fokus an die Maske zurückübermittelt wird.

Das ist nun mit Abstand die einfachste Lösung dieses Problems, die ich kenne?
Viel Spass damit
Gerd

Keine Kommentare: