3.2 Objekt States
visible, fullyVisibleDie Instance-Variable visible (engl.: sichtbar) bestimmt, ob das Objekt und seine Children auf dem Schirm erscheinen oder nicht. Wenn Sie ein Objekt auf nicht sichtbar (visible = FALSE) setzen, so wird es einschließlich seiner Children vom Schirm verschwinden. Das bedeutet im Umkehrschluss, dass ein Objekt verborgen sein kann, auch wenn es auf visible gesetzt ist. Um wirklich sichtbar zu sein, muss ein vollständiger Pfad von sichtbaren (visible = TRUE) Objekten bis zum (ebenfalls sichtbaren) Application-Objekt führen. Dieser Zustand heißt fullyVisible (= vollständig sichtbar) und kann im BASIC-Code abgefragt werden.Jedes Objekt, das nicht explizit auf visible = FALSE gesetzt ist, ist per Default visible.
Syntax UI-Code: visible = TRUE | FALSE
Lesen: <numVar> = <obj>. visible
Schreiben: <obj>.visible = TRUE | FALSE
Syntax Lesen: <numVar> = <obj>. fullyVisible
Beispiele: siehe unten. HideDelayed, ShowDelayedÄndert man zur Laufzeit den visible-Status eines Objekts, so verschwindet das Objekt sofort bzw. erscheint sofort. Das kann zu unerwünschtem Flackern des Bildschirms führen, z.B. wenn Sie mehrere Änderungen vornehmen oder ein Objekt nur kurzzeitig auf visible = FALSE setzen wollen, um bestimmte Änderungen vorzunehmen. HideDelayed setzt das Objekt auf visible = FLASE, ohne es sofort vom Schirm zu nehmen. ShowDelayed setzt entsprechend das Objekt auf visible = TRUE, ohne es sofort neu zu zeichnen.In jedem Fall wird das Objekt spätestens dann neu dargestellt (oder vom Schirm genommen), wenn der Action-Handler, in dem die ~Delayed-Methode aufgerufen wurde, beendet ist. Sie können HideDelayed und ShowDelayed beliebig mit dem direkten Belegen der Instancevariable visible mischen. Die häufigste Variante ist das Aufrufen von HideDelayed, danach z.B. das Hinzufügen oder entfernen von Children (bis hier passiert auf dem Bildschirm nichts) und abschließend setzen von visible = TRUE. Erst jetzt stellen sich die Objekte in der neuen Konfiguration neu dar.
Syntax: <obj>. HideDelayed
<obj>. ShowDelayed
enabled, fullyEnabledEin Objekt ist enabled (engl.: aktiviert), wenn der Nutzer damit interagieren kann. Objekte, die nicht enabled sind, zeichnen sich üblicherweise in grau. Wenn Sie ein Objekt auf nicht enabled (enabled = FALSE) setzen, so werden auch alle seiner Children nicht enabled erscheinen, auch wenn ihre eigene Instance-Variable enabled auf TRUE steht. Um wirklich enabled zu sein, muss ein vollständiger Pfad von enabled Objekten bis zum (ebenfalls enabled) Application-Objekt führen. Dieser Zustand heißt fullyEnabled (= vollständig enabled) und kann im BASIC-Code abgefragt werden.Jedes Objekt, das nicht explizit auf enabled = FALSE gesetzt ist, ist per Default enabled.
Syntax UI-Code: enabled = TRUE | FALSE
Lesen: <numVar> = <obj>. enabled
Schreiben: <obj>.enabled = TRUE | FALSE
Syntax Lesen: <numVar> = <obj>. fullyEnabled
Beispiele: siehe unten. readOnlyEin readOnly (engl.: nur lesen) Objekt ignoriert Texteingaben vom Nutzer. Das ist nur für Objekte, die prinzipiell Texteingaben entgegennehmen können, von Bedeutung. Andere Objekte, wie Buttons, ignorieren den readOnly Wert. Das heißt konkret, dass das Setzten einer Group oder eines ähnlichen Objekts auf readOnly nicht dazu führt, dass deren Children (z.B. Texte) readOnly werden.ReadOnly Objekte ignorieren nur Eingaben vom Nutzer, es ist daher trotzdem möglich alle Instance-Werte eines readOnly-Objekts vom BASIC-Code aus zu ändern.
Syntax UI-Code: readOnly = TRUE | FALSE
Lesen: <numVar> = <obj>. readOnly
Schreiben: <obj>.readOnly = TRUE | FALSE
Beispiele Der UI-Code definiert eine Gruppe, die ein readOnly Text Objekt und ein auf "nicht enabled" gesetztes Value Objekt enthält. | ||||||||||||||||||||||||
Group MyInputGroup
Children = MyText, MyValue
< .. weitere instances.. >
End Object
Memo MyText
readOnly = TRUE
text$ = "Hallo Welt!"
< .. weitere instances.. >
End Object
Value MyValue
enabled = FALSE
< .. weitere instances.. >
End Object
| ||||||||||||||||||||||||
| Der folgende BASIC-Code ändert einige Dinge. Es wird vorausgesetzt, dass die Buttons, deren ActionHandler hier implementiert werden, irgendwo definiert sind. | ||||||||||||||||||||||||
ButtonAction VersteckeGroup
MyGroup.visible = FALSE
End Action
ButtonAction MacheTextEditierbar
MyText.readOnly = FALSE
END Action
ButtonAction SchalteValueEnabeldStateUm
If MyValue.enabled = FALSE THEN
MyValue.enabled = TRUE
ELSE
MyValue.enabled = FALSE
END IF
END Action
ButtonAction SchreibeEtwasText
IF MyText.readOnly THEN
MyText.text$ = "Der Text ist read only."
ELSE
MyText.text$ = "Sie können den Text ändern."
END IF
END Action
| ||||||||||||||||||||||||
^ |