3.9 Größenveränderung

Eine der wichtigsten Eigenschaften von RapaGUI ist die Fähigkeit, das gesamte GUI-Layout automatisch neu zu berechnen, wenn die Größe des Fensters mit den Widgets geändert wird. Dies ist jedoch nur möglich, wenn alle Gruppen in einem Fenster in der Größe geändert werden können, da sonst die Größe des Fensters unverändert bleibt und nicht skalierbar ist. Um frei skalierbare Fenster zu erstellen, müssen Sie wissen, welche Widgets in der Größe geändert werden können und welche nicht. Beachten Sie die folgende GUI-Definition:

 
<window>
   <vgroup>
      <button id="btn">Hello World!</button>
   </vgroup>
</window>

Dieses Fenster ist nur horizontal skalierbar, da Schaltflächen-Widgets standardmäßig nur horizontal gedehnt/gestaucht werden können. Sie sind standardmäßig nicht vertikal skalierbar, da Schaltflächen, die ihre vertikale Größe ändern, ziemlich hässlich aussehen. Normalerweise ist die Höhe einer Schaltfläche an die Standardschaltflächenhöhe gebunden, die derzeit auf dem Betriebssystem benutzt wird.

Wenn Sie möchten, dass dieses Fenster in der Größe veränderbar ist, haben Sie mehrere Möglichkeiten: Die meistgebrauchte Möglichkeit ist das Einfügen von leerem Raum mit dem Rechteck-Objekt Rectangle-Klasse. Diese sind in alle Richtungen veränderbar. Wenn Sie also ein Objekt <rectangle> einfügen, wird Ihr Fenster plötzlich in alle Richtungen skalierbar:

 
<window>
   <vgroup>
      <button id="btn">Hello World!</button>
      <rectangle/>
   </vgroup>
</window>

Alternativ können Sie auch ein anderes Widget einfügen, das vertikal skalierbar ist, z.B. eine Listenansicht (Listview). Oder Sie können die Schaltfläche sogar vertikal skalierbar machen, indem Sie das Attribut Area.FixHeight auf False setzen:

 
<window>
   <vgroup>
      <button id="btn" fixheight="false">Hello World!</button>
   </vgroup>
</window>

Aber das sieht nicht so schön aus, weil der Benutzer jetzt eine Schaltfläche mit einer Höhe von einigen hundert Pixeln haben könnte. Deshalb ist der Ansatz mit <rectangle> die am häufigsten verwendete Methode, um Füllbereiche für nicht veränderbare Objekte einzufügen. Deshalb hier eine Übersicht über die Größe der einzelnen Widgets, die von RapaGUI unterstützt werden:

Busybar-Klasse (Beschäftigung):
Horizontal veränderbar.

Button-Klasse (Schaltflächen):
Horizontal veränderbar.

Checkbox-Klasse (Auswahlkästchen):
Nicht veränderbar.

Choice-Klasse (Auswahl):
Horizontal veränderbar.

Combobox-Klasse (Textlisten):
Horizontal veränderbar.

Hollywood-Klasse:
Nicht veränderbar.

HLine-Klasse (HorizontalLinie):
Horizontal veränderbar.

HSpace-Klasse (HorizontalAbstand):
Vertikal veränderbar.

HTMLview-Klasse (HTMLAnsicht):
In alle Richtungen veränderbar.

Image-Klasse (Bild):
Nicht veränderbar.

Label-Klasse (Beschriftung):
Nicht veränderbar.

Listview-Klasse (Listenansicht):
In alle Richtungen veränderbar.

Pageview-Klasse (Seitenansicht):
In alle Richtungen veränderbar.

Popcolor-Klasse (Farbdialog):
Horizontal veränderbar.

Popfile-Klasse (Dateidialog):
Horizontal veränderbar.

Popfont-Klasse (Schriftdialog):
Horizontal veränderbar.

Poppath-Klasse (Verzeichnisdialog):
Horizontal veränderbar.

Progressbar-Klasse (Fortschrittsbalken):
Horizontal skalierbar für horizontale Fortschrittsbalken. Vertikal skalierbar für vertikale Fortschrittsbalken.

Radio-Klasse:
Nicht veränderbar.

Rectangle-Klasse (Rechteck):
In alle Richtungen veränderbar.

Scrollbar-Klasse (Bildlaufleisten):
Horizontal skalierbar für horizontale Bildlaufleisten. Vertikal skalierbar für vertikale Bildlaufleisten.

Scrollcanvas-Klasse (Bildlaufleinwand):
In alle Richtungen veränderbar.

Scrollgroup-Klasse (Bildlaufgruppen):
In alle Richtungen veränderbar.

Slider-Klasse (Schieberegler):
Horizontal skalierbar für horizontale Schieberegler. Vertikal skalierbar für vertikale Schieberegler.

Text-Klasse:
Horizontal veränderbar.

Texteditor-Klasse:
In alle Richtungen veränderbar.

Textentry-Klasse (Texteingabe):
Horizontal veränderbar.

Textview-Klasse (Textanzeige):
In alle Richtungen veränderbar.

Treeview-Klasse (Baumansicht):
In alle Richtungen veränderbar.

VLine-Klasse (VertikalLinie):
Vertikal veränderbar.

VSpace-Klasse (VertikalAbstand):
Horizontal veränderbar.

Natürlich können Sie diese Voreinstellungen ändern, indem Sie die Attribute Area.FixWidth und Area.FixHeight entsprechend setzen, um bestimmte Größeneinstellungen zu aktivieren oder zu deaktivieren. Aber das ist oft nicht empfehlenswert, da es ziemlich hässlich aussieht, wenn z.B. ein Texteingabe-Widget plötzlich vertikal skalierbar ist. Dies würde den Benutzer unnötig verwirren, da er am Ende ein Texteintrags-Widget mit einer Höhe von 300 Pixeln haben könnte, welches aber nur die Eingabe einer Textzeile erlaubt. Daher ist es die beste Idee, die Voreinstellungen des Betriebssystems für die Standard-Widgets zu respektieren.

Natürlich gibt es auch Widgets, bei denen es völlig akzeptabel ist, die Voreinstellungen von oben zu überschreiben. Zum Beispiel sind Widgets, die von der Hollywood-Klasse abgeleitet sind, standardmäßig nicht skalierbar. Aber natürlich sollten Sie Area.FixWidth und Area.FixHeight verwenden, um die Größe des Widgets an Ihre persönlichen Bedürfnisse anzupassen.


Navigation zeigen