SendMessage(, SUPER)
SendMsg(, SUPER)
Stack | Position | Beschreibung |
---|---|---|
Stack(In) | Top | beliebig |
Top-1 | ... | |
Stack(Out) | Top | - |
In einem Basismodul definierte Messages werden vererbt; im abgeleiteten Modul können
jedoch die Aktionen für die gleiche Message überdefiniert werden. In diesem Fall führt SendMsg die Aktionen im abgeleiteten Modul aus.
Die durch die überdefinierte Message verdeckte Anweisungsfolge kann mit SendMsg(, SUPER)
SendMsg(ALFA) triggert - mit Hilfe der Anweisung SendMsg(, SUPER) - die Statements S1a,
S2a, S1b, S3a, während SendMsg(BETA) einfach Statement S4b
zur Ausführung bringt.Es ist beabsichtigt, dass bei SendMsg(, SUPER) keine Message angegeben wird. Konstruktionen wie die folgende
sollen verhindert werden.
Beispiele:
HELP("order.htm#web")):
order
[
INITIALIZE:
SendMsg(,
SUPER)
// The variable defaultTitle has been set in the default INITIALIZE. Now we
can change it!
"Web application"
->
defaultTitle
]
ObjectCombobox(SubMonitor,
LIST_INVALID, LIST_ORIGIN,
AUTO_POSITION,
NULL_ELEMENT,
10,
10,
300,
80)
[ SELECT:
[] SetSort(,
ListBox) // Clear the sorting
// Now the main SELECT event has been executed,
change the list sort now again!
[
"call(DestinationType)"
"call(UniqueIDLeft6ToSortBy)"
"call(Receiver)"
]
SetSort(,
ListBox) Sort(,
ListBox)
]
Für Makros funktioniert dies ähnlich:
Im Modul "order" ist das Makro "SaveObject" definiert.
Im Modul order_web
soll dieses "SaveObject" mitbenutzt, aber durch eine Prüfung ergänzt werden: // First, do some checks, that
are not in the default SaveObject macro!
GetValue(,
orderTypeEnum) Integer
3
=
if
{
GetValue(,
checked.settings) ifnot
{
T("Bei Gew„hrleistungsauftr„gen
muss die Kostenübernahme aktiviert sein!",
"On guarantee orders the cost checkbox
must be set!")
Attention(AbortTXN)
cancel
}
}
super::SaveObject
// Now call the default SaveObject
macro from the module, this is derived from!
Ebenfalls könnte das super::SaveObject an jeder beliebigen anderen Stelle des Makros stehen, sogar innerhalb einer "if" Anweisung:
// Check, if the default
SaveObject macro has to be called, or not.
GetValue(,
orderTypeEnum) Integer
1
=
if
{
// Now call the
default SaveObject macro from the module, this is derived from!
super::SaveObject
return
}
// If the order type is not 1,
don't call the default saveObject macro!
order
DrainWindow
Siehe auch
Weitere Beispiele finden Sie hier.