Zum Hauptinhalt springen

Objektreferenz ($)

Objektreferenz ($) Objektreferenzierung

Oberflächenobjekte können zur Laufzeit prozedural mit dem $-Zeichen über ihren Namen referenziert werden. Daher sollte auf eine eindeutige Vergabe von Objektnamen innerhalb des selben Fensters geachtet werden.

Wird ein Objekt über seinen Namen referenziert, wird in dem aktuellen Dialog nach dem Objekt gesucht. Bei Ereignissen wird zunächst von dem Objekt aus gesucht, dass das Ereignis ausgelöst hat, und anschließend in dem enthaltenden Dialog. Die Suche wird beendet, sobald das erste Objekt mit dem entsprechenden Namen gefunden wird.

Wird kein Objekt gefunden, wird 0 zurückgeliefert. Was beispielsweise bei Abfragen von Eigenschaften zum Laufzeitfehler _ErrHdlInvalid und zum anschließenden Abbruch der Prozedur führt.

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.

Mit dem with-Konstrukt wird die Existenz der Objekte, die mit $: referenziert werden, bereits bei der Übersetzung geprüft. Die Namensreferenzen werden bei Verwendung des with-Konstruktes schneller aufgelöst, da beim Übersetzen der Prozedur der Pfad des Objektes gespeichert wird.

Beispiele

// Caption des Objekts 'lblName' auf 'Name' setzen
$lblName->wpCaption # 'Name';

// Caption des Objekts 'lblName' im Dialog 'Frm_Login' auf 'Name' setzen.
// Prüfung beim Übersetzen, ob das Objekt existiert
with FrmLogin
{
$:lblName->wpCaption # 'Name';
}