ObjectList, OList, TreeList
Für die Anzeige von Objektlisten bitte die neuere und schnellere ObjectListView verwenden!
ObjectList(name~aliasName, flags, x, y, w, h)
Parameter | Beschreibung | |
---|---|---|
name | * | Identifikator oder KLASSE::ausdr |
aliasName | ein zusätzlicher Identifikator | |
flags | Flags | |
x | * | Position X (in Minicells) |
y | * | Position Y (in Minicells) |
w | * | Breite (in Minicells) |
h | * | Höhe (in Minicells) |
- - Pflichtparameter
Das Tupel (Klasse, Zugriffsausdruck) definiert eine Abbildung auf Modelldaten (siehe FillWindow, DrainWindow). Mit der ObjectList können Relationen zwischen Objekten dargestellt und interaktiv bearbeitet werden.
Jeder Eintrag der Liste repräsentiert genau ein Objekt und zeigt ausgewählte Daten, die mit dem Objekt in Zusammenhang stehen. Für die Darstellung von Listen, wurde die ObjectList durch die schnellere und modernere ObjectListView abgelöst. Die ObjectList kann jedoch im Gegensatz zur ObjectListView Baumstrukturen listenartig darstellen (mehrspaltig) und vermischt so die Konzepte der ListView und des Trees. Die Darstellung als sogenannte TreeList ist nur dann möglich, wenn für die ObjectList das Flag VIEW_ONLY gesetzt ist. Die Collection, die beim Aufklappen expandiert wird, wird wie im Tree über das Format-Flag NODE angegeben.
Die TreeList sollte nicht zur Darstellung großer Datenmengen verwendet werden, weil sie dafür nicht geeignet ist. In MorphIt wird die ObjectList ebenfalls als TreeList dargestellt und der Zustand der aufgeklappten Knoten mit der nativen TreeList synchronisiert. Im Gegensatz zur nativen TreeList werden in MorphIT die mit HEADER angegbenen Spaltenüberschriften angezeigt. Eine weitere Einschränkung der TreeList ist, dass die Sortierung der Einträge durch den Nutzer nicht möglich ist.
Die Objektbox wird mit folgenden Anweisungen programmiert:
- Darstellung der Objekte steuern:
- Objekte in der Objektbox darstellen:
- Selektion der Objekte:
- Objektbox und FillWindow / DrainWindow:
- Objektbox editieren:
Der Befehl Widget legt eine ObjectList auf den Stack, so dass auf die Methoden und Attribute eines Widgets zugegriffen werden kann.
Folgende Methoden werden von der ObjectList angeboten:
Flags | Beschreibung |
---|---|
ACCEPT_DROP | Auf der Objektbox können von einer anderen Objektbox mit Drag-and-Drop über den Bildschirm gezogene Objekte abgelegt werden. Was mit den Objekten geschehen soll, muss in der Aktionsliste beschrieben werden (siehe Beispiel).. |
AUTO_POSITION | Die X-Positionen werden automatisch berechnet, müssen also mit SetFormat nicht explizit vorgegeben werden. |
BITMAP_SIZE | Werden Bitmaps dargestellt (über ein Push-Statement in einer SetFormat generiert), so werden diese ohne dieses Flag auf Spaltenbreite gedehnt. Dies tritt nur auf, wenn die Breite der Spalte (etwa durch einen Header) vorgegeben ist, oder durch zusätzlich in der Spalte vorhandene Strings trotz AUTO_POSITION die Spaltenbreite nicht nur durch die Bitmaps bestimmt wird. die Angabe des Flags unterbindet dieses, so dass jede Bitmap garantiert in ihrer Originalgröße dargestellt wird. |
CONTEXTMENU(identifikator) | Der Identifikator ist ein Bezeichner eines Items innerhalb einer Menu- oder ContextMenuList-Deklaration. Das unter diesem Item hängende Untermenu wird automatisch beim betätigen der rechten Maustaste eingeblendet. Wird daraufhin ein Menupunkt ausgewählt wird wie zu Item beschrieben die jeweilige Aktion gestartet, in gleicher Weise, als wäre der Menueintrag aus dem Hauptmenu heraus aufgerufen worden. Zusätzlich kann man jedoch bei Ausführung von SELECT zu dem entsprechenden Item mittels GetCurrentWidget ermitteln aus welchem Windowobjekt heraus der Menupunkt via ContextMenu aufgerufen wurde. Bei einem Ausruf aus dem Hauptmenu liefert GetCurrentWidget NULL zurück. Soll ein ContextMenu nicht automatisch erscheinen, so kann es (nach Gestaltungsrichtlinie sollte dies als Reaktion auf die rechte Maustaste, also innerhalb MOUSE_CLICK_R erfolgen) mittels PopupMenu auch aus InstantView® heraus aufgerufen werden. In diesem Fall sollte auf die Angabe des Flags CONTEXTMENU verzichtet werden, da sonst das Menu zweimal (einmal automatisch, einmal gesteuert) erscheint. |
GRIDMENU(identifikator) | Setzt das Gridmenü fest. Der Identifikator ist ein Bezeichner eines Items innerhalb einer Menu- oder ContextMenuList-Deklaration. |
DRAG_COPY | Die gerade ausgewählten Objekte können mit der rechten Maustaste zu einer anderen Objektbox oder zu einem Window gezogen werden (Drag-and-Drop). Die Objekte können nur auf einem Ziel mit Flag ACCEPT_DROP abgelegt werden. Die Listboxeinträge bleiben erhalten. |
DRAG_MOVE | Wie bei DRAG_COPY können die gerade ausgewählten Objekte zu einer anderen Objektbox oder zu einem Window gezogen werden. Die entsprechenden Listboxeinträge werden gelöscht, wenn die Objekte auf einer anderen Listbox oder einem Window mit Flag ACCEPT_DROP abgelegt wurden. |
ENTIRE | Für der Darstellung einer Collection bzw. m-1- oder m-n-Relation mit FillWindow und DrainWindow existiert folgender Modus: Die Objektbox zeigt nur die Objekte der Collection, m-1- oder m-n-Relation. Dieser Modus wird mit dem Flag ENTIRE aktiviert. |
HELP(anchor) Help("file#anchor") | verbindet das Windowobjekt mit Online-Hilfe im HTML-Format. Wenn kein Filename angegeben wurde, gilt die im Modul festgelegte HTML-Datei. |
HIDDEN | Die Objektbox bleibt solange unsichtbar, bis Anweisung Show sie auf dem Bildschirm erschienen lässt. |
HZ_SCROLL_BAR | Die Objektbox erhält zusätzlich zum vertikalen auch einen horizontalen Scrollbar. |
ITEM(w, h), ITEM(w), ITEM(, h) | Wenn Breite und Höhe eines Listboxeintrags von den durch die Größe der Listbox vorgegebenen Maßen abweichen, werden sie auf diese Weise angegeben. Eine größere Breite ist zusammen mit Flag HZ_SCROLL_BAR sinnvoll. Mehrzeilige Einträge benötigen eine explizite Höhenangabe. |
LIST_INVALID (ab 4.2) | Normalerweise werden in eine Objektbox nur gültige Objekte aufgenommen. Wenn dieses Flag gesetzt ist, werden jedoch auch ungültige Objekte aufgenommen und angezeigt. |
MIN_HEIGHT(h) | Höhe der Liste fällt in keinem Falle unter den Wert h (Angabe in Minicells). Dies ist vor allem in Kombination mit Attachments von Nutzen. |
MIN_WIDTH(w) | Breite der Liste fällt in keinem Falle unter den Wert w (Angabe in Minicells). Dies ist vor allem in Kombination mit Attachments von Nutzen. |
NO_DRAIN | Die Objektbox wird zwar von FillWindow gefüllt, aber von DrainWindow ignoriert.NULL_ELEMENT Die Objektbox erzeugt automatisch einen Eintrag, der sich auf kein Objekt bezieht. Ein NULL-Element ist nützlich, wenn die Objektbox mit FillWindow und DrainWindow zur Darstellung eines Pointers bzw. einer 1-1- oder 1-m-Relation benutzt wird. |
OPTIMIZE |
Die Optimierung bezieht sich auf die Zugriffsausdrücke für die Spalten der List (vergleiche Anweisung SetFormat): Gleiche Teilausdrücke werden nur einmal ausgewertet (weitere Hinweise ...). |
SELECT_MULTIPLE | Es ist möglich, mehrere Objekte gleichzeitig zu selektieren. |
TOOLTIP(mlString) | Der angegebene String wird als Hinweistext (Tooltip) eingeblendet, oder, falls ein Event TOOLTIP ebenfalls definiert ist, an diesen übergeben. Das Erscheinen des Tooltips wird vom System automatisch nach eine bestimmten Zeit des Verharrens des Maus-Cursors über dem Windowobjekt ausgelöst. Der String kann mehrsprachig sein. An das Event wird der jeweils zur eingestellten Sprache aktuelle übergeben. |
Zur Abgrenzung und detaillierten Beschreibung der Darstellungsmöglichkeiten siehe: ObjectListView