FillObox
FillObox(windowID, oboxID), FillObox(, oboxID), FillObox
Parameter: Bezeichner eines Windows und einer Objektbox
Diese Operation füllt Elemente in ein Listen-Widget ein. Dabei wird nicht geprüft, ob die Elemente bereits in dem Widget enthalten sind. Falls vor dem Einfügen eine Sortierung für die Liste definiert wurde (SetSort & Sort), dann werden die neuen Elemente ebenfalls sortiert in die Liste eingefügt.
Aus Performancegründen werden beim Einfügen von ganzen Collections oder Vektoren die Elemente unsortiert in die Liste eingefügt und die Liste anschließend durch sortiert und beim Einfügen von einzelnen Element werden die Elemente sortiert eingefügt.
Beim Einfügen von vielen Objekten in einer Iterate-Schleife ist es von der Performance her immer sinnvoller, die Objekte in einer Collection/Vektor aufzusammeln und anschließend FillObox mit der Collection/Vektor aufzurufen, anstatt innerhalb des Iterates FillObox mit den einzelnen Objekten aufzurufen. Die zweite Variante ist bei mehreren tausend Objekten (je nach Use-Case) gut 20 mal schneller, da beim Einfügen einer gesamten Collection das System auch mehr Spielraum für Optimierungen in Form von Caching hat und vorher weiß, wie viele Elemente eingefügt werden.
Die Auswertung der Formate der befüllten ObjectBox geschieht in Normalfall synchron in dem Aufruf von FillObox. Die Ausnahme dazu stellt die ObjectListView, die Formate erst dann (asynchron) auswertet, wenn die Zeilen sichtbar werden (z.B durchs Scrollen). Aufgrund der asynchronen Auswertung sollte darauf geachtet werden, dass sich ListView-Formate nicht auf einen Systemzustand (Plug-Space, Einheitentabellen) verlassen, wie er zum Zeitpunkt von FillObox gesetzt war. Die synchrone Auswertung der ListView kann per RetrieveData (nach FillObox) erzwungen werden.
Aufrufformen
Stack | Beschreibung | |
---|---|---|
Stack(In) | eine Collection | |
Stack(Out) | - |
Ausgewählte Daten jedes in der Collection enthaltenen Objekts erscheinen als Listbox-Eintrag (Beispiel), sofern Parameter für die Klasse dieses Objekts existieren (siehe SetFormat). Die Reihenfolge der Listbox-Zeilen kann mit SetSort bestimmt werden.
Stack | Position | Beschreibung |
---|---|---|
Stack(In) | Top | Indexpfad |
Top-1 | eine Collection | |
Stack(Out) | Top | TRUE oder FALSE |
Hier wird die Sortierfolge in der Listbox über einen Indexpfad bestimmt, der mit Anweisung IndexPath auf den Stack-Top gebracht wird (Beispiel).
Stack | Beschreibung | |
---|---|---|
Stack(In) | ein Objekt | |
Stack(Out) | - |
Ausgewählte Daten des auf dem Stack liegenden Objekts erscheinen als Listbox-Eintrag (Beispiel), sofern Parameter für die Klasse dieses Objekts existieren (siehe SetFormat).
Das gilt auch für Objekte mit Collection-Eigenschaften (CX_QSORT, CX_SUM_AMOUNT, CX_VECTOR_AMOUNT, CX_WIDGET, ...). Nur wenn keine Darstellungsparameter für diese Klasse existieren, werden die Elemente der genannten Objekte dargestellt (Beispiel).
Stack | Position | Beschreibung |
---|---|---|
Stack(In) | Top | ] |
Top-1 | Objekt On | |
Top-2 | Objekt On-1 | |
. . . | . . . | |
Top-n | Objekt O1 | |
Top-n-1 | [ | |
Stack(Out) | - |
Ausgewählte Daten der auf dem Stack liegenden Objekte erscheinen als Listbox-Eintrag (Beispiel), sofern Parameter für die Klasse dieses Objekts existieren (siehe SetFormat).
Hinweis: Mit dieser Form können in einer Objektbox selektierte Objekte in einer weiteren Objektbox gezeigt werden (Beispiel).
Nur gültige Objekte werden aufgenommen, es sei denn, die Gültigkeitsprüfung ist ausgeschaltet oder das Flag LIST_INVALID ist gesetzt.
Interaktiv ausgewählte Objekte erhält man mit GetObject Die Anzahl der im Moment von einer Objektbox dargestellten Objekte kann mit Cardinality abgefragt werden.