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> } "<Dateiname>"
{
  Objektspezifische Attribute>
}

Siehe auch

Weitere Informationen finden Sie beim Objekt module und im Kapitel „Modularisierung“ des Handbuchs „Programmiertechniken“.

Ereignisse

keine

Kinder

document

record

transformer

Vater

dialog

module

Menü

keins

19.1 Attribute

.application

.document[integer]

.external

.external[integer]

.firstrecord

.index

.lastrecord

.load

.record[integer]

.recordcount

.static

19.2 Spezifische Attribute

Attribut Beschreibung

.application

Definiert die Applikation, an welche die Funktionen gebunden werden soll.

.load

Ladezustand des Moduls.

Siehe auch Kapitel „Beeinflussung des Ladevorgangs“

.static

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.

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