Zum Hauptinhalt springen

Deskriptoren

Deskriptoren Verwendung von Deskriptoren

Alle Objekte werden in CONZEPT 16 über einen Deskriptor identifiziert. Die Deskriptoren der Objekte werden durch die entsprechenden Anweisungen zurückgegeben. Die Deskriptoren der untergeordneten Objekte können über die Anweisung WinInfo () bzw. PrtInfo () ermittelt werden.

Alle Deskriptoren mit Ausnahme von Storage - und Binären Objekten verfügen über folgende Eigenschaften:

Die Eigenschaften können vom Programmierer verwendet werden. Insbesondere können die entsprechenden Deskriptoren in dynamischen Strukturen organisiert werden.

Bei allen Prozedurbefehlen die einen Deskriptor als erstes Argument erwarten, kann der Deskriptor auch vor den Befehl geschrieben und mit dem Operator -> an den Befehl übergeben werden.

Deskriptoren für Oberflächen- und Druckobjekte können über den Namen des Objektes ermittelt werden. Dazu wird dem Objektnamen das $-Zeichen vorangestellt.

Zur Ermittlung des Deskriptors zu dem Namen wird der komplette Objekt-Baum verwendet. Die Suche wird dabei von einem bestimmten Objekt innerhalb des Suchbaums gestartet. Das Objekt ist entweder das zuletzt geladenen Fenster-Objekt oder das Objekt, das das Ereignis ausgelöst hat. Zunächst wird das Start-Objekt überprüft und anschließend alle untergeordneten Objekte. Konnte das Objekt nicht gefunden werden, wird das Fenster-Objekt und dessen untergeordnete Objekte durchsucht. Die Suche wird beendet, sobald das erste Objekt mit dem entsprechenden Namen gefunden wird.

Das Startobjekt bestimmt, wie lange die Suche dauert und welche Objekte durchsucht werden. Der Suchpfad wird automatisch gesetzt, wenn ein Ereignis ausgelöst oder ein Frame -Objekt geladen wird. Alle Namensreferenzen werden dann innerhalb des Fenster-Objekts aufgelöst.

Mit dem Befehl WinSearchPath () wird das Startobjekt der Suche definiert. Wurde innerhalb eines Ereignisses ein Objekt mit dem Befehl WinOpen () mehrfach geladen, ist der Suchpfad zunächst auf das zuletzt geladene Fenster gesetzt. Da die Namen der Objekte nicht mehr eindeutig sind, muss, um ein Objekt aus dem zuerst geladenen Fenster anzusprechen, der Suchpfad auf dieses Fenster gesetzt werden.

info

Die Suche wird bei jeder Namensreferenz erneut durchgeführt. Wird ein Deskriptor innerhalb einer Funktion mehrfach verwendet (zum Beispiel in einer Schleife), sollte der Deskriptor in einer Variablen gespeichert und diese als Objektreferenz genutzt werden.

Beispiele:

// Eingabeobjekt "edName" inkativ setzen
$edName->wpDisabled # true;

// Selektion ausführen
tHdlSel # SelOpen();
tHdlSel->SelRead(Adr.D.Adressen, _SelLock, 'Adr.Sel.PLZ');
tHdlSel->SelRun(_SelBreak | _SelDisplay);
tHdlSel->SelClose();

Deskriptoren von Fenster- bzw. Druckobjekten lassen sich ebenfalls über folgende Befehle ermitteln:

In jedem Ereignis kann der Deskriptor des ereignisauslösenden Objektes über das Argument aEvt ermittelt werden.

Mit dem Befehl HdlInfo () können über einen beliebigen Deskriptor Informationen eingeholt werden. Über HdlLink () lassen sich Deskriptoren miteinander verknüpfen. Durch HdlEnum () lassen sich alle Deskriptoren enumerieren.