Lade...
 

SendMsg(, SUPER)

SendMessage(, SUPER)

SendMsg(, SUPER)

Stack
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)

erreicht werden:

sendmsg.bmp (497650 Byte)

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

sendmsg2.bmp (567022 Byte)

sollen verhindert werden.

Beispiele:

Module(order_web,

HELP("order.htm#web")): order
[
  INITIALIZE: SendMsg(, SUPER)

// call the INITIALIZE Message of the module this is derived from!

              // The variable defaultTitle has been set in the default INITIALIZE. Now we

can change it!

             

"Web application" -> defaultTitle
]

// SendMsg(, SUPER) can also be used on widgets! The SELECT Event in ClassiX is also a message!

ObjectCombobox(SubMonitor, LIST_INVALID, LIST_ORIGIN, AUTO_POSITION, NULL_ELEMENT, 10, 10, 300, 80)
[ SELECT: [] SetSort(, ListBox)  // Clear the sorting

of the list box

         

SendMsg(, SUPER) // Now call the SELECT event of the module, this is

derived from!

         

// Now the main SELECT event has been executed, change the list sort now again!
          [
            "call(DestinationType)"

            "call(SupplierNameToSortBy)"
            "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:

Define(SaveObject)

  // 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:

Define(SaveObject)

  // 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.