CX_OBJECT_MANAGER::LinkAtPosition
Beschreibung:
LinkAtPosition arbeitet wie der InstantView®-Befehl Link. Zusätzlich kann bestimmt werden, wo genau in der Collection die Referenz zum anderen Objekt eingetragen werden soll. Die Position in der Collection der Rückreferenz lässt sich hiermit nicht steuern.
Diese Funktion arbeitet nur mit Collection vom Typ LIST oder ARRAY korrekt. Wenn das Positionsobjekt NULL oder gar nicht in der Liste vorhanden ist, wird das referenzierte Objekt ans Ende der Collection gestellt. Das entspricht dem Verhalten von Link.
LinkAtPosition verhält sich auch dann wie Link, wenn der Referenz- und/oder Rückreferenztyp keine Collection, sondern ein Zeiger ist. Link und LinkAtPosition basieren auf dem gleichen Code und können beliebig ausgetauscht werden.
Code-Beispiel:
Var(obj1, obj2, obj3, obj4, obj5) CreateTransObject(CX_TEST_OBJECT) -> obj1 CreateTransObject(CX_TEST_OBJECT) -> obj2 CreateTransObject(CX_TEST_OBJECT) -> obj3 CreateTransObject(CX_TEST_OBJECT) -> obj4 CreateTransObject(CX_TEST_OBJECT) -> obj5 obj1 "testColl" NULL obj2 NULL FALSE GetManager(OBJECT) Call(LinkAtPosition) // obj1.testColl enthält einen Eintrag: obj2 obj1 "testColl" NULL obj3 obj2 TRUE GetManager(OBJECT) Call(LinkAtPosition) // obj1.testColl: obj3 obj2 obj1 "testColl" NULL obj4 obj2 FALSE GetManager(OBJECT) Call(LinkAtPosition) // obj1.testColl: obj3 obj2 obj4 obj1 "testColl" NULL obj5 obj1 TRUE GetManager(OBJECT) Call(LinkAtPosition) // obj1.testColl: obj3 obj2 obj4 obj5 // (obj1 ist nicht in der Collection enthalten, obj5 wird ans Ende gestellt)
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_OBJECT_MANAGER | Objekt-Manager |
Top-1 | INTEGER | Vor (TRUE) oder nach (FALSE) der Position einfügen? | |
Top-2 | OBJECT | Vor oder nach welchem Objekt in die Collection einfügen? | |
Top-3 | OBJECT | Referenziertes Objekt | |
Top-4 | STRING | Rückreferenz | |
Top-5 | STRING | Zugriffspfad | |
Top-6 | OBJECT | Referenzierendes Objekt | |
Stack(Out) | Top |