Lade...
 

Expand,Collapse,ExpandAll,CollapseAll

Expand,Collapse,ExpandAll,CollapseAll

Expand(windowID, oboxID), Expand(, oboxID), Expand
ExpandAll(windowID, oboxID), ExpandAll(, oboxID), ExpandAll
Collapse(windowID, oboxID), Collapse(, oboxID), Collapse
CollapseAll(windowID, oboxID), CollapseAll(, oboxID), CollapseAll

Parameter:  Widgetbezeichner, der sich auf eine Objektbox bezieht.

Stack
Stack Position Beschreibung
Stack(In) Top ein Objekt
Stack(Out) Top -

Bei strukturierten Daten wird das Objekt vom Stack gesucht und bei Expand auseinander-, bei Collapse zusammengeklappt.
Die Varianten ExpandAll und CollapseAll klappen nicht nur das Objekt selber auf bzw. zusammen, sondern auch, rekursiv, alle unter diesem untergeordneten Objekte bis hin zu denen, die keine weiteren untergeordneten Objekte besitzen (Leaves).

Wird NULL als Objekt auf dem Stack übergeben, erfolgen die Aktionen bezüglich des obersten (virtuellen) Knotens (Root), wirken sich also auf die gesamte Struktur aus.

Um sich nicht auf ein Objekt, sondern auf die aktuelle Selektion für die Aktion zu beziehen, sind die korrespondierenden Befehle OboxExpand,OboxCollapse,OboxExpandAll,OboxCollapseAll zu verwenden.

Als interaktive Variante kann der User auf die dargestellten +-Button links neben den Objekten drücken. Die Tasten "+","-","*","/" werden defaultmäßig korrespondierend Expand,Collapse,ExpandAll,CollapseAll zugeordnet. Verzichtet man auf die Definition der Systems-Events dieser Tasten: PLUS,MINUS,MULTIPLY,DIVIDE werden die Default-Aktionen automatisch ausgeführt, es wird also obsolete z.B. "PLUS: GetObjectsSelected Expand" zu definieren.

Die Funktionen Expand / ExpandAll arbeiten nur "nach unten". Möchte man ein Objekt, das tiefer im Tree sitzt anzeigen und den Tree bis zu diesem Element aufklappen, so sind diese Funktionen nicht hilfreich.

Folgendes Makro kann statt dessen als work around benutzt werden:

Define(ExpandObjectInTree)
  Var(tmpVector) [] -> tmpVector
  do
    Dup ifnot { Drop break }
    Dup tmpVector Insert
    Get(transaction)
  loop
  tmpVector iterate { Expand(, this) }
;

In diesem Beispiel ist allocationTxn das Object, welches im Baum zum Selektieren angezeigt werden soll. Um den Baum also bis hierhin aufzuklappen, müssen alle höheren Positionen aufgeklappt sein. Also wird in der do-loop Schleife rekursiv nach oben gelaufen und die gefundenen höheren Positionen dann in umgekehrter Reihenfolge (zu der Reihenfolge in der Sie aufgesammelt wurden) aufgeklappt.

// expand all upto the object should be selected
allocationTXN ExpandObjectInTree
allocationTXN Select(, this)