Lade...
 

Parameterangabe: Window, Childobjekt

Parameterangabe: Window, Childobjekt

Alle Anweisungen, mit denen auf Oberflächenobjekte zugegriffen wird, haben prinzipiell den gleichen Aufbau:

Syntax
Statement(windowID, childID)
Parameter
Parameter Beschreibung
windowID der Identifikator eines Windows / Einstiegspunkt der Widgetsuche
childID der Identifikator eines Childobjekts dieses Windows / Einstiegspunkts

Bezieht sich die Anweisung auf ein Fenster selbst, dann wird der Parameter childID weggelassen.

Das Tupel (windowID, childID) definiert einen Widget-Selektor. 

windowID definert den Einstiegspunkt der Widget-Suche. Hierüber wird das erste offene Fenster per name aus dem aktiven Modul (siehe Sichtbarkeit) selektiert. Wird windowID weggelassen, dann beginnt die Suche in dem Fenster des aktiven Widgets. Falls ein CX_WIDGET-Objekt mit STACK (siehe Abschnitt: Stack) als windowID-Parameter übergeben wird, dann beginnt die Suche bei diesem übergebenen Widget.

childID definiert den Namen des Kind-Widgets, auf den sich der Widget-Befehl bezieht. Das Kind-Widget wird innerhalb des per windowID selektierten Parent-Widgets gesucht. Gibt es mehrere Kind-Widgets mit dem gleichen Namen (schlechter Stil!), dann wird das erste Widget genommen, welches bei der Breitensuche gefunden wird.

Für die Widget-Suche im Kontext von importierten Widgets gelten zusätzliche Regeln.

Implizite Parameter aus dem Kontext

Statements dieser Art werden so oft benutzt, dass es sich lohnt, eine bequemere Notierung einzuführen, bei der ein oder auch beide Parameter weggelassen werden können:

Regel:  InstantView® ersetzt fehlende Angaben mit Hilfe des Windowobjekts, das die Ausführung des Anweisung ausgelöst hat.

Statement

bezieht sich direkt auf das 'auslösende Windowobjekt'.

Statement(, childID)

bezieht sich auf ein Childobjekt, das sich mit dem 'auslösenden Windowobjekt' zusammen auf dem gleichen Window befindet. Für Anweisungen in der Aktionsliste eines Windowobjekts, die mit einem Systemereignis verbunden sind, ist dieses Windowobjekt als Auslöser der Anweisungen anzusehen. Für Anweisungen in der Aktionsliste eines Moduls gibt es ein auslösendes Windowobjekt, wenn die triggernde Anweisung SendMsg mit einem Windowobjekt verbunden ist (auch indirekt über mehrere Stufen).
Es gibt kein auslösendes Windowobjekt wenn Anweisungen in der Aktionsliste eines Moduls mit

             INITIALIZE
             CURRENT
             NON_CURRENT

verbunden sind. Das gilt auch für Anweisungen, die (direkt oder indirekt) durch ein SendMsg, das für ein Modul mit den obengenannten Ereignissen verbunden ist, getriggert werden.

Das Schlüsselwort STACK

Für beide Parameter (windowID, childID) kann das Schlüsselwort STACK angegeben werden. Eine allgemein Erklärung zum Parameter STACK finden Sie hier. Auf dem Stack-Top wird dann entweder der Name eines Windows/Windowobjekts oder ein Windowobjekt selbst als Objekt der Klasse CX_WIDGET (siehe Widget) erwartet. Falls ein Windowobjekt auf dem Stack übergeben wird, ist diese Definition eindeutig. Das Parent-Window kann in dem Fall weggelassen werden. Hierbei wird sowohl die Schreibweise (,STACK), als auch (STACK) akzeptiert.

Hinweis: Mit der Schreibweise (STACK, childID) und der Übergabe des Parent-Widgets als CX_WIDGET-Objekt wird das Widget mit dem Bezeichner childID in dem übergebenen Parent-Widget gesucht und dabei auch die strikte Widget-Trennung nach Import-Contexten aufgehoben.

Wird STACK für beide Parameter spezifiziert, so wird die Angabe zum Window vor der Angabe zum Child-Objekt erwartet.

Hinweis:  Will man eine Anweisung für eine Gruppe von Windowobjekten ausführen, muss man auf dem Stack einen Vektor dieser Windowobjekte (bzw. deren Namen) übergeben.

Beispiel

[ "childName1" "childName2" "childnameN" ]  Hide(, STACK)

würde die als Vektor aufgeführten Windowobjekte unsichtbar machen.
Die Anweisung:

[ "child11", "child12" ] [ "child21" ] [ "win1", "win2" ] Show(STACK, STACK)

ist semantisch äquivalent zu:

Show(win1, child11) Show(win1, child12) Show(win2, child21)