2.179 .label[anyvalue]

Dieses Attribut können Identifikatoren von bestimmten IDM Elementen wie bspw. Methoden oder benutzerdefinierten Attributen von Objekten oder Argumente von Funktionen erfragt werden. Ebenso können durch dieses Attribut Typkonvertierungen vorgenommen werden.

Definition

  • Datentyp

    string, attribute, method,
    object [ text, instance ],
    enum, class, event, type,
    boolean

  • Zugriff

    get

  • changed-Ereignis

    ja

Ermitteln von Bezeichnern

Argumente von Funktionen

Bei Funktionen kann man über diesen Attribut die Bezeichner der Argumente an einer bestimmten Stelle erfragen.
Als Index wird dabei die Position des Arguments beim Funktionsaufruf angegeben.
Ein Aufruf erfolgt nach folgendem Schema:

string  := function.label[integer]

Benutzerdefinierte Attribute und Methoden

Von einem Objekt können benutzerdefinierte Attribute und Methoden erfragt werden, indem der Name als Indexstring übergeben wird.
Ein Aufruf erfolgt dabei nach folgendem Schema:

attribute := object.label[string]

method := object.label[string]

Dabei gilt folgende Unterscheidung:

  • Indexstring beginnt mit einem .: man erhält das benutzerdefinierte Attribut des Objektes
  • Indexstring beginnt mit einem :: man erhält die benutzerdefinierte Methode des Objektes

Typkonvertierungen

Über dieses Attribut können ebenso Typkonvertierungen der folgenden Datentypen vorgenommen werden:

  • attribute
  • method
  • enum
  • class
  • event
  • datatype
  • boolean

Eine Konvertierung kann dabei in in beide Richtungen erfolgen:

type := object.label["type-string"]

"type-string" := object.label[type]

Beispiel

dialog D

function boolean Func(string Path, object Id) {
  return false;
}

window Wi {   
    integer MySum := 512;
    
    rule void MyRule (string S) 
    {
       print "Method called with: "+S;
    }
}

on dialog start {
   variable method M;
   variable attribute A;
   
   !! query parameters
   print Func.label[1];                             // result: "Path"
   print Func.label[2];                             // result: "Id"
   
   !! retrieve userdefined attributes and methods
   M := Wi.label[":MyRule"];
   Wi:call(M, "Hello");                             // result: "Method called with: Hello"

   A := Wi.label[".MySum"];
   Wi.type[A] := string;

   !! type conversions
   print this.label[button_ok];                     // result: "button_ok"
   print this.label["button_ok"];                   // result: button_ok (enum)

   print Wi.label[".MySum"];                        // result: .MySum (attribute)
   print Wi.label[.MySum];                          // result: "MySum"
   
   print Wi.label[:MyRule];                         // result: "MyRule"
   
   print this.label[window];                        // result: "window"
   print this.label["window"];                      // result: window (class)
   
   print this.label[select];                        // result: "select"
   print this.label["select"];                      // result: select (event)
}