Lade...
 

Importieren

Import

Import(name, tag::window.path, x, y ,w, h, contextName)

Die Anweisung beschreibt kein bestimmtes Windowobjekt sondern verlangt den Import eines Windowobjekts aus enem anderen Modul.
Eine Einführung zum Thema Widget Provider finden Sie hier.

Parameter
Parameter erforderlich Beschreibung Details
name * ein Identifikator als Name (1)
tag * das Provider Tag (2)
window.path * window.widget wählt das zu importierende Windowobjekt aus (3)
x   Position X des importierten Widgets kann überschrieben werden  
y   Position Y des importierten Widgets kann überschrieben werden  
w   die Breite des importierten Widgets kann überschrieben werden  
h   die Höhe des importierten Widgets kann überschrieben werden  
contextName   Name eines ImportContext  

 

  1. name
    Mit diesem Namen kann das Layout der importierten Komponente gesteuert werden (Attach, Constraint)
    Er muss nicht mit dem Namen des importierten Widgets übereinstimmen.
     
  2. tag
    Ein vorher mit Provide vereinbarter Identifikator über den ein Provider-Modul gefunden wird, welches das gewünschte Widget anbietet.
    Die Verbindung zum Provider Modul funktioniert genauso wie beim Aufruf externer Prozeduren über ein Provider-Tag.
  3. path
    Mit window.widget wird das zu importierende Objekt festgelegt. Voraussetzung: die Namen innerhalb des Windows sind eindeutig.
    Ist das nicht der Fall ist, kann mit
      window.subComponent1.subComponent2. . . . .subComponentn.widget
    ein Pfad bestimmt werden.
    In den Bezeichnert für WIdgets werden Wildcards (*, ?) unterstützt.
    Wenn mehr als ein Widget gefunden wird, werden diese in einer Fehlermeldung aufgelistet.
    Pfade spielen auch bei der Überdefinition von Events des importierten Widgets eine entscheidende Rolle; Syntax und Semantik sind in beiden Fällen gleich.

Es werden im Gegensatz zu anderen Widgets keine Flags akzeptiert, da davon ausgegangen wird, dass das zu importierende Widget bereits die nötigen Flags definiert hat und eine weitere Angabe in das Verhalten des zu importierenden Widgets eingreifen würde.

Um die importierte Komponente in die Logik der (Gast-)Anwendung einzubinden, wird die Reaktion auf Events überdefiniert. Nach der Anweisung Import folgt – optional – eine Eventliste mit erweiterter Syntax.

Beispiel:

EventOverride

 

Events ohne Prefix beziehen sich auf das importierte Widget.
Events für Child-Widgets beschreiben mit einem Pfad, welche Childwidgets gemeint sind. Mit Wildcards ist es einfach, sich auf mehrere Widgets zu beziehen.
Im Beispiel Code wird für alle Childobjekte der DetailsGroup eine (möglicherweise vorhandene) Reaktion auf Doppel-Klick unterdrückt.

Pfadangaben mit Wildcards dienen einem zweifachen Zweck:

  • Man kann die Events mehrer Childobjekte mit einer Zeile überschreiben.
  • Die Entkopplung Provider - Consumer kann verstärkt werden, wenn es bestimmte Namenskonventionen gibt.
    Der nachnutzende Code muss sich nur noch darauf verlassen, dass die Namen der Childelemente einer vereinbarten Konvention folgen.
    Ob sie alle tatsächlich verhanden sind und auf welcher Hierarchieebene ist egal.

Die Folge term1.term2 im Pfad fordert nicht, dass term2 auf der nächstfolgenden Hierarchiestufe unter tem1 steht; nur dass term2 ein Child von term1 ist.
Enthält term2 Wildcards, kann es sich auf mehrere Child-Widgets beziehen.
Beispiel:

PathHierarchy

Pfad selektiert
a.b.x1 x1
a.x1 x1
a.b.x? x1, x2
a.*.x? x1, x2, x3

 

Die Terme im Pfad sind Widgetnamen, also einfache Identifikatoren oder Zugriffsausdrücke. Zugriffsausdrücke müssen in Quotes stehen,
Beispiel: ItemGroup."itemPattern.CastedStructureByCondition(\"value < 5.3m\").uniqueID". Wildcards sind in diesem Fall nicht möglich.

 

zurück zur Einführung Widget Providing