10 Sonderbehandlungen
Obwohl Megas über die Sektionen in den CGWs und den Auswertungen von Inidateieinträgen in weiten Bereichen einem Problem anpassbar ist, tritt hin und wieder der Wunsch nach derart spezieller Funktionalität auf, dass eine allgemeine Implementierung sinnlos ist. Megas bietet dem Entwickler deshalb die Möglichkeit Sonderbehandlungen in megsb.cpp zu implementieren und deren Aufruf im CGW zu veranlassen. Sonderbehandlungen sind auf Applikations-, lookup- oder Feldebene möglich, die Idee dabei ist eine Art callback Mechanismus.
Es gibt für die jede Ebene spezifische Ereignisse (Tabelle folgt) und wenn eine Sonderbehandlung mit dem Schlüsselwort Special in den Sektionen MegGeneral, MegLookup oder MegField eingetragen ist, so ruft Megas die Sonderbehandlungsroutine zur jeweiligen Ebene auf. Ist ein Ereignis für die Sonderbehandlung nicht relevant, so kehrt der Aufruf sofort zurück und alles geht normal weiter. Die Aufrufe der Sonderbehandlungen erfolgen in megcallb.cpp und megdbs.cpp mit Hilfe der Funktion MegSbActivate().
Folgende Ereignisse führen zum Aufruf einer Sonderbehandlung auf Applikationsebene:
|
Ereignis
|
Beschreibung
|
|
SBP_START
|
Beim Start der Applikation
|
|
SBP_CLOSE
|
Beim Beenden der Applikation
|
|
SBP_BEFORE_INSERT
|
Vor dem Erfassen eines neuen Items
|
|
SBP_AFTER_INSERT
|
Nach dem Erfassen eines neuen Items
|
|
SBP_AFTER_PREPINSERT
|
Nach der Vorbereitung zum Erfassen eines neuen Items
|
|
SBP_BEFORE_UPDATE
|
Vor dem Aktualisieren eines Items
|
|
SBP_AFTER_UPDATE
|
Nach dem Aktualisieren eines Items
|
|
SBP_BEFORE_DELETE
|
Vor dem Löschen eines Items
|
|
SBP_AFTER_DELETE
|
Nach dem Löschen eines Items
|
|
SBP_BEFORE_SELECT
|
Vor dem Zugriff auf ein Item
|
|
SBP_AFTER_SELECT
|
Nach dem Zugriff auf ein Item
|
|
SBP_BEFORE_FETCH_NEXT
|
Vor dem Zugriff auf das nächste Item
|
|
SBP_BEFORE_FETCH_PREV
|
Vor dem Zugriff auf das vorhergehende Item
|
|
SBP_MODE_SWITCHED
|
Nach einem Moduswechsel
|
|
SBP_CREATE_FRAME
|
Beim Create des Grund- oder eines Folgebildes
|
|
SBP_SHOW_FRAME
|
Beim ShowEvent des Grund- oder eines Folgebildes
|
|
SBP_BEFORE_DBVIEW
|
Vor dem Aufruf der Auskunft
|
|
SBP_AFTER_DBVIEW
|
Nach dem Aufruf der Auskunft
|
|
SBP_DBVIEW_RTCHECK
|
Satzart bezogener Feldcheck vor der Übernahme eines Feldes aus dem Auskunftssatz
|
|
SBP_DEFAULTRECORD
|
Nach dem Belegen des Vorbelegungsbereiches des roottables
|
|
SBP_DEFAULTRECORD_COPY
|
Nach dem Belegen des Vorbelegungsbereiches des roottables mit dem aktuellen Buffer
|
Folgende Ereignisse führen zum Aufruf einer Sonderbehandlung auf Lookupebene:
|
Ereignis
|
Beschreibung
|
|
SBB_BEFORE_INSERT
|
Vor dem Erfassen eines neuen Satzes
|
|
SBB_AFTER_INSERT
|
Nach dem Erfassen eines neuen Satzes
|
|
SBB_AFTER_PREPINSERT
|
Nach der Vorbereitung zum Erfassen eines neuen Satzes
|
|
SBB_BEFORE_UPDATE
|
Vor dem Aktualisieren eines Satzes
|
|
SBB_AFTER_UPDATE
|
Nach dem Aktualisieren eines Satzes
|
|
SBB_BEFORE_DELETE
|
Vor dem Löschen eines Satzes
|
|
SBB_AFTER_DELETE
|
Nach dem Löschen eines Satzes
|
|
SBB_BEFORE_SELECT
|
Vor dem Zugriff auf einen Satz
|
|
SBB_AFTER_SELECT
|
Nach dem Zugriff auf einen Satz
|
|
SBB_DEFAULTRECORD
|
Nach dem Belegen des Vorbelegungsbereiches d. lookuptables
|
|
SBB_DEFAULTRECORD_COPY
|
Nach dem Belegen des Vorbelegungsbereiches des lookuptables mit dem aktuellen Buffer
|
|
SBB_LOW_KEYFIELDS
|
Im Erfassen beim Testen des Schlüssels auf nicht versorgte Felder
|
Auf Feldebene gibt es zwei Ereignisse
|
Ereignis
|
Beschreibung
|
|
SBF_CREATE_CHECK
|
Im Erfassen nach Eingabe eines Feldes
|
|
SBF_MODIFY_CHECK
|
Im Ändern nach Eingabe eines Feldes
|
