TassKaffContainer


Hier steht, was Container und Komponenten sind. Wir erinnern uns, dass Komponenten als Elemente in einen Container eingefügt werden, Container hingegen Komponenten - oder andere Container - enthalten.

Um einen Container zu definieren muss das Zeilenpaar

<[Containername] Attribut1="wert1" usw. >

und

</[Containername]>

verwendet bzw. bei XML die Tags entsprechend geschachtelt werden. Zwischen diesen beiden Zeilen können beliebig viele Zeilen mit Komponenten stehen, die in dem betreffenden Container enthalten sein sollen.

Wollen wir Container untereinander anordnen, dann  lassen wir solche Begin-End-Zeilenpaare einfach aufeinander folgen. Wollen wir sie aber nebeneinander haben, dann haben wir zwei Möglichkeiten:

1. Wir können die Attribute x und y verwenden, um der linken ober Ecke des Containers eine ganz bestimmte Zelle im Gitter unseres Layouts zuzuweisen. Wenn der erste Container in unserem Layout nur eine Spalte breit ist und wir dem zweiten x=1 sowie y=0, also die Koordinaten (1, 0) zuweisen, dann wird der zweite rechts vom ersten positioniert werden (der erste erhält per default die Koordinaten (0, 0)).

2. Den gleichen Effekt können wir auch erzielen, wenn wir beim zweiten x=REL und y=0 zuweisen. "REL" bedeutet, dass er die - relativ zum Vorgänger - nächste x-Koordinate erhält. Die Verwendung von REL hat den Vorteil, dass wir Container nebeneinander positionieren können, ohne die x-Koordinaten zu kennen.

Die Möglichkeiten der Schachtelung von Containern (siehe unten), sowie die zulässigen Komponenten innerhalb eines Containertyps sind bei der Spezifizierung zu beachten. Die Schachtelung von Containern sollte der besseren Lesbarkeit wegen durch Einrücken (Tab) kenntlich gemacht werden.

Formular

Ein Formular ist das Hauptfenster. Mit ihm muß eine Spezifikation beginnen. Je Spezifikationsdatei darf nur einmal ein Formular angegeben werden.

Das Hauptfenster ist bereits mit einer Statuszeile (siehe Attribut "st=") versehen.

Es kann ein Titel für das Fenster angegeben werden, welcher in der Titelzeile angezeigt wird, sowie die Höhe (Attribut h) und Breite (Attribut w) des Fensters (der Wert von h und w ergibt die Ausmaße des Fensters in Pixeln). Mit x und y (ebenfalls in Pixeln) wird die Position des Fensters auf dem Bildschirm vorbelegt; werden diese Attribute nicht angegeben, wird das Fenster auf dem Bildschirm zentriert.

Die Titelzeile des Fensters kann mit einem vom Default abweichenden Icon versehen werden.

Mit dem Schlüsselwort typ=SYSTEM wird das Formular zum Hauptfenster der Anwendung erklärt. Dieses bedeutet, dass mit diesem Fenster auch die Anwendung beendet wird.

<Form label="[WindowTitle]" w=[Width] h=[Height] x= y= img= >
   ...
</Form
>

Dialog

Ein Dialog ist mit einem Formular nahezu identisch; ihm kann jedoch keine Menubar zugewiesen werden.

Standardmäßig werden nicht-modale, größenveränderbare Dialoge erzeugt. Mit dem Attribut typ= kann dieses Verhalten abweichend gesetzt werden.

<Dialog label="[WindowTitle]" w=[Width] h=[Height] x= y= typ=MODAL|NORESIZE|MODAL_NORESIZE>
   ...
</Dialog
>

Applet

Ein Applet kann naturgemäß nur als Applet eingesetzt werden. Es kann also nur vom Appletviewer bzw. einem Browser ausgeführt werden, und es hat nur einen eingeschränkten Zugriff auf das lokale Dateisystem.

Im HTML-File des Applets muss die Spezifikationsdatei als Parameter für das Startfenster eingetragen werden:

<Applet>
...
<param name="StartWindow" value="tutorial/AppletBeispiel.xml">
</Applet>

Läuft der GuiBuilder als Application, wird ein Applet-Container automatisch als Formular ausgeführt. Ein Applet kann daher genauso wie ein Formular eingesetzt werden.

Es können zwar dieselben Attribute wie bei einem Formular definiert werden. Sie sind jedoch naturgemäß beim Einsatz im Browser z.T. wirkungslos: so kann der Titel und die Größe des Fensters nicht im GDL-Skript, sondern nur im HTML-File des Applets gesetzt werden.

<Applet>
   ...
</Applet
>

Panel

Ein Panel ist ein unsichtbarer Container. Es dient in der Regel zur Gliederung von Komponenten in Dialogmasken.

Jedes Formular (Form), Dialog oder Registerkarte (Tab) ist von Hause aus bereits mit einem Panel versehen.

Der Titel eines Panels dient nur der Information im GDL-Skript. Panels dürfen geschachtelt werden. Beachte, dass jedes Panel sein eigenes Koordinatensystem hat.

Panels können in beiden Dimensionen wachsen. Ist dieses Verhalten unerwünscht, kann wx und/oder wy auf 0 gesetzt werden. Enthält ein Panel ausschließlich Komponenten, die nicht vertikal größer werden können, sollte wy=0 gesetzt werden.

<Panel label="[PanelTitle]" x=[gridx] y=[gridy] w=[gridwidth] h=[gridheight] wx=[weightX] wy=[weightY] an=[anchor] fill=[fill]>
   ...
</Panel
>

Group

Eine Group (Kasten) verhält sich genauso wie ein Panel. Im Unterschied zu diesem hat sie aber einen Rahmen und - wenn dies gewünscht wird - eine Beschriftung. Sie ist ein wichtiges Gliederungsmittel für die Anwenderführung in einem Layout.

Mit dem Attribut typ= lassen sich dreidimensionale Effekte erzielen: der Kasten erscheint dann erhaben oder versenkt. .

Es kann die Schriftgröße und Schriftart des Titels gesetzt werden.

<Group label="[GroupTitle]" typ=LOW|RAISE point= style= >
  ...
</Group
>

Tabset

Bezeichnet einen Satz von Registerkarten (Tab = Registerkarte).

Registerkarten werden der Reihe nach erstellt. Die erste Registerkarte hat den Fokus, die anderen erscheinen hinter dieser eingeordnet. Jede einzelne Karte hat bereits ein Panel; es können ihr aber auch weitere Panels hinzugefügt werden.
Beachten Sie, daß TabTitles - die Beschriftung der Lasche einer Registerkarte - innerhalb eines Tabsets nicht doppelt vergeben werden können.

Mit dem Attribut typ="TOP|BOTTOM|LEFT|RIGHT" kann für einen Tabset die Anordnung der Registerkartentitel gewählt werden. Default ist TOP.

Mit dem Attribut layout="SCROLL|WRAP" wird die TabLayoutPolicy definiert; default ist WRAP.

Zusätzlich kann den einzelnen Registerkarten ein Icon zugeordnet werden.

Eine Registerkarte darf auch einen weiteren Tabset enthalten.

<Tabset layout="SCROLL">
   <Tab label="[TabTitle]" img="[ImageFileName]">
      ...
   </Tab>
   ...
</Tabset
>

Split Panel

Ein Split Panel umfaßt zwei horizontal nebeneinander angeordnete Fenster. Die relative Größe dieser Fenster kann durch den "Divider" mit der Maus variiert werden.

Es müssen genau zwei Child Container dem Split Panel zugewiesen werden.
Split Panels können auch geschachtelt werden, etwa um eine Dreiteilung der Maske zu erzielen.

Mit dem Attribut typ="VERTICAL" wird eine vertikale Teilung des Panels erzielt.

<Split typ="HORIZONTAL|VERTICAL">
   <Tree>
      ...
   </Tree>
   <Panel>
      ...
   </Panel>
</Split
>

Internal Frame

Dieser Container ist ein verschiebbares Fenster innerhalb seines Mutter-Containers. Er wird wie Panel, Group oder Tab behandelt.

<Frame label="[WindowTitle]" w= h= >
   ...
</Frame
>

Seitenanfang

home