Inhaltsverzeichnis

18.8 HBox und VBox

Die beiden Klassen HBox und VBox präsentieren Container, in denen die Objekte automatisch horizontal oder vertikal angeordnet werden:

A1

Abbildung 18.8.1: HBox (3) und VBox (1) in einem Container HSplit

Der Container (2) im Container HSplit (horizontaler Splitter) ist ein Panel ohne Rahmen und mit der Eigenschaft Panel.Arrangement = Arrange.Vertical und verhält sich somit wie eine VBox.­

A1

Abbildung 18.8.2: HBoxen und VBoxen sowie ein Panel mit speziellen Eigenschaften in einer Anwendung

18.8.1 Die Eigenschaften HBox

EigenschaftDatentypBeschreibung
.AutoResize BooleanWenn wahr, dann passt sich die Größe der HBox an den Inhalt im Container an.
.IndentBooleanWenn wahr, dann wird das erste Element eingerückt. Die Einrücktiefe beträgt Desktop.Scale (Pixel). Die Richtung wird durch den Wert von .Invert festgelegt.
.InvertBooleanWenn wahr, dann wird der Inhalt im Container nicht von links nach rechts sondern umgekehrt angeordnet.
.MarginBooleanWenn wahr, dann wird ein Zwischenraum zwischen dem Containerrand und den Elementen im Container eingefügt. Dieser Abstand beträgt Desktop.Scale (Pixel).
.PaddingIntegerEs wird ein Abstand von k Pixel (Default 0) zwischen dem Containerrand und den Elementen im Container eingefügt.
.SpacingBooleanWenn wahr, dann wird ein (horizontaler) Zwischenraum zwischen die Elemente im Container eingefügt. Dieser Abstand beträgt Desktop.Scale (Pixel).

Tabelle 18.8.1.1: Übersicht Eigenschaften HBox

Die Eigenschaften der beiden Container HBox und VBox unterscheiden sich nur sehr gering und bei der VBox fehlt die Eigenschaft .Invert.

18.8.2 Die Eigenschaften VBox

EigenschaftDatentypBeschreibung
.AutoResize BooleanWenn wahr, dann passt sich die Größe der VBox an den Inhalt im Container an.
.IndentBooleanWenn wahr, dann wird das erste Element eingerückt. Die Einrücktiefe beträgt Desktop.Scale (Pixel).
.MarginBooleanWenn wahr, dann wird ein Zwischenraum zwischen dem Containerrand und den Elementen im Container eingefügt. Dieser Abstand beträgt Desktop.Scale (Pixel).
.PaddingIntegerEs wird ein Abstand von k Pixel (Default 0) zwischen dem Containerrand und den Elementen im Container eingefügt.
.SpacingBooleanWenn wahr, dann wird ein (horizontaler) Zwischenraum zwischen die Elemente im Container eingefügt. Dieser Abstand beträgt Desktop.Scale (Pixel).

Tabelle 18.8.2.1: Übersicht Eigenschaften VBox

18.8.3 Projekt EMail-Client

In diesem Projekt stehen nicht die Client-Funktionen im Mittelpunkt, sondern das Design der Komponenten auf dem Formular (IDE). Um die Container auf dem Formular so anzuordnen wie im Bild 18.8.2 sind einige Eigenschaften der verwendeten Container und deren Inhalte in spezieller Weise festzulegen. Diese Forderungen sollten erfüllt werden:

Im nächsten Abschnitt sehen Sie nur den Ausschnitt aus dem Quelltext, der die o.a. Forderungen umsetzt:

Public Sub Form_Open()
 
  FMain.Center
  FMain.Arrangement = Arrange.Vertical
  FMain.Expand = False
  FMain.Margin = True
  FMain.Spacing = True
 
' Container HSplit
  HSplit1.Layout = [100, 0] ' Man sieht nach dem Programmstart die Box für die Anhänge zunächst nicht
 
' Container VBox links im Container HSplit
  vboxLeft.Margin = True ' Fester Abstand zwischen VBox-Rand und den 4 inneren HBoxen
  vboxLeft.Spacing = True ' Fester vertikaler Abstand zwischen den 4 inneren HBoxen
 
  hboxTo.Spacing = True ' Fester Abstand zwischen TextLabel und TextBox in der HBox (Empfänger)
  txlTo.W = 120 ' Feste Breite des TextLabels. Gilt für alle 4 TextLabel!
  txlTo.Alignment = Align.Right ' Text-Ausrichtung auf dem TextLabel ist "rechts"
  txbTo.Expand = True ' Die Weite der Textbox passt sich dynamisch an die Container-Weite von VBox an
 
  hboxCC.Spacing = True
  txlCC.W = 120
  txlCC.Alignment = Align.Right
  txbCC.Expand = True
 
  hboxBCC.Spacing = True
  txlBCC.W = 120
  txlBCC.Alignment = Align.Right
  txbBCC.Expand = True
 
  hboxSubject.Spacing = True
  lblSubject.W = 120
  lblSubject.Alignment = Align.Right
  txbSubject.Expand = True
 
' Container rechts im Container HSplit
' vboxSubstitute ist ein Panel mit spezifischen Eigenschaftswerten (ohne Rand, Anordnung vertikal)
  vboxSubstitute.Border = Border.None ' Panel ohne Rand
  vboxSubstitute.Arrangement = Arrange.Vertical ' Vertikale Anordnung der 2 inneren Komponenten
  vboxSubstitute.Margin = True ' Fester Abstand zwischen VBox-Substitute und den zwei inneren HBoxen
  vboxSubstitute.Spacing = True ' Fester (vertikaler) Abstand zwischen den zwei inneren HBoxen
 
  lblAttachment.Alignment = Align.TopLeft ' Textanzeige in der linken, oberen Ecke
  hboxLIstBox.Expand = True ' Maximale Ausdehnung
  ListBox1.Expand = True ' Maximale Ausdehnung
  ListBox1.ScrollBar = Scroll.Both
 
' Komponente TextArea
  txaMailBody.Expand = True ' Füllt automatisch die Fläche, die HSplit und HBox (unten) frei lassen
 
' Container HBox unten
  hboxBottom.Height = 24
  hboxBottom.Margin = False 
  hboxBottom.Spacing = True
  panelSpace.Expand = True ' Schiebt die 2 Button an den linken bzw. an den rechten Rand des Containers
 
End ' Form_Open()  

Alle Farbwerte sind in der IDE gesetzt worden. Diese haben ja mit der Anordnung der Container und deren Inhalt nichts zu tun.

Download