19 import
Die Verwendung eines Moduls in einem anderen Modul oder Dialog wird mit dem Schlüsselwort import angekündigt.
Auf das Schlüsselwort folgt der logische Name des Moduls, unter dem es bekannt sein soll. Der logische Name ist im Allgemeinen nicht der Name des Moduls selbst. Unter Umständen kann sogar ein und dasselbe Modul unter verschiedenen logischen Namen in einem Modul verwendet werden, obwohl dies allgemein besser und eleganter durch Vorlagen beschrieben werden kann. Auf den logischen Namen des importierten Moduls folgt dann ein String mit dem Namen der Interface-Datei.
Definition
{ export | reexport } import { <Bezeichner> } "<Datei name>"
{
Objektspezifische Attribute>
}
Siehe auch
Weitere Informationen finden Sie beim Objekt module und im Kapitel „Modularisierung“ des Handbuchs „Programmiertechniken“.
Ereignisse
keine
Kinder
Vater
Menü
keins
19.1 Attribute
19.2 Spezifische Attribute
| Attribut | Beschreibung |
|---|---|
|
Definiert die Applikation, an welche die Funktionen gebunden werden soll. |
|
|
Ladezustand des Moduls. Siehe auch Kapitel „Beeinflussung des Ladevorgangs“ |
|
|
Gibt an, ob ein Modul entladen werden darf. |
19.2.1 Beeinflussung des Ladevorgangs
Ein Modul kann in ein anderes Modul über mehrere Arten geladen werden. Unter Laden versteht man hier, dass nicht nur die Namen der Objekte, sondern auch deren Definition dem Modul bekannt sind und damit darstellbar und veränderbar sind. Dabei werden intern drei verschiedene Arten des Ladens unterschieden, die zum Teil bereits durch die im Modul definierten bzw. exportierten Objekte bestimmt werden.
-
Das Modul wird automatisch sofort geladen. Der Programmierer hat keinen Einfluss darauf, wann das Modul geladen wird, da Objekte aus dem Modul sofort (Defaults) und andere beim Einlesen des übergeordneten Moduls gebraucht werden. Dies ist der Fall, wenn das Modul exportierte benötigte Vorlagen oder Ressourcen enthält.
-
Das Modul wird erst geladen, wenn ein exportiertes Objekt aus dem Modul wirklich benötigt wird. Dies ist zum Beispiel dann der Fall, wenn auf das Objekt in einer Regel per Zuweisung oder Abfrage zugegriffen wird.
-
In diesem Fall entscheidet der Dialogdesigner selbst, dass er jetzt das Modul geladen haben möchte. Er setzt das Attribut .load am logischen Modulnamen (Importname) auf true. Daraufhin wird das Modul vom Dialog Manager geladen und verfügbar gemacht.
Beispiel
module Modul
import Colors "color.if";
window W
{
.bgc Green; // load on use
}
on W focus
{
this.bgc := Red; // implicit load
}
on W select
{
Colors.load := true; // explicit load
}
Load on use hat Vorrang vor den beiden anderen Arten des Ladens. Ebenso hat implicit load Vorrang vor explicit load. D.h. im obigen Beispiel wird ein load on use durchgeführt, die beiden anderen haben keine Auswirkungen mehr, da das Modul sich bereits im Speicher befindet und die Regeln direkt ausgeführt werden können.
Ein explicit load kann bereits als Attribut beim Import angegeben werden.
module Modul
import Colors "color.if"
{
.load true; // explicit load
}
19.3 Beispiel
!! Interfacefile: module.if
module Module
export import StandardColor "color.if";
...
import Colors "PRIVLIB:mycolor.if";
// Die Datei mycolor.if wird nur im Pfad
// PRIVLIB gesucht