Auflösungsunabhängige Programme mit Klasse
Autor/Einsender:
Datum:
  Jürgen Beil
12.11.2007
Entwicklungsumgebung:   VB 6
Anregungen/Tipps an: Jürgen Beil
Wer hat nicht auch den Wunsch auflösungsunabhängige Programme ohne großen Aufwand zu entwickeln? Für dieses Tutorial wurde eine Klasse entwickelt, mit deren Hilfe beliebig komplexe Layouts bei minimalem Programmieraufwand realisiert werden können.
1.  Einführung
2.  Steuerelemente verankern (Anchor)
3.  Steuerelemente andocken (Dock)
4.  Steuerelemente anpassen (Resize) 
5.  Syntax / Einbinden ins Projekt
6.  Download
Das Download-Beispiel ist absichtlich recht einfach gehalten und bietet so die Möglichkeit es entsprechend auszuprobieren, und die Klasse den eigenen Bedürfnissen anzupassen.
1. Einführung
Um innerhalb kürzester Zeit und mit minimalem Aufwand auflösungsunabhängige Programme zu erstellen, wurden die beiden aus VB .NET bekannten Eigenschaften Anchor und Dock  weitestgehend nachgebildet.
Einziger kleiner Wehrmutstropfen, die Anpassungen sind in der Entwicklungsumgebung (IDE) nicht sichtbar. Dafür steht als dritte Variante die prozentuale Größenanpassung Resize zur Verfügung,
Eine Kombination aus Resize und Anchor oder Resize und Dock ist möglich. In wie weit dies sinnvoll ist, hängt vom jeweiligen Layout ab. Anchor und Dock hingegen schließen sich immer gegenseitig aus, wobei die Priorität bei Anchor liegt.
Um diese Lösung bei allen Steuerelementen zur Verfügung zu stellen wird das gewünschte Verhalten des Steuerelementes in dessen Tag-Eigenschaft hinterlegt.
2. Steuerelemente verankern (Anchor)
Mit der Anchor-Eigenschaft wird das Steuerelement am Rand des zugehörigen Containers verankert, das heißt, der Abstand zwischen dem Rand des Steuerelements und des Containers wird fixiert. Je nach dem, an wie vielen Rändern das Steuerelement verankert ist, wird die Position oder die Größe des Steuerelementes verändert.
Folgende Beispiele sollen das Konzept veranschaulichen:
  • Die Einstellung Anchor: Top, Right; bewirkt, dass das Steuerelement bei einer horizontalen Vergrößerung des Fensters mit nach außen wandert.
  • Die Einstellung Anchor: Top, Bottom, Right; bewirkt, dass das Steuerelement horizontal mit nach außen wandert, gleichzeitig wird die Höhe entsprechend der vertikalen Fensteränderung angepasst.
  • Mit der Einstellung Anchor: All; (entspricht Anchor: Top, Bottom, Left, Right;) wird das
    Steuerelement an allen Rändern des Fensters verankert. Es wird der Abstand zum Formular beibehalten, die Breite und Höhe ändert sich synchron zur Fenstergröße.

Folgende Parameter stehen zur Verfügung: Top, Bottom, Left, Right, All

3. Steuerelemente andocken (Dock)
Mit der Dock-Eigenschaft lassen sich Steuerelemente an einen Containerrand andocken. Außerdem nimmt das Steuerelement automatisch die verfügbare Breite oder Höhe ein, je nach dem, wo es befestigt wird.
Ein angedocktes Steuerelement kann nur den Platz auf seinem Container ausfüllen, der nicht schon von anderen angedockten Steuerelementen beansprucht wird.
Folgende Beispiele sollen das Konzept veranschaulichen.
  • Die Eigenschaft Dock: Top; bewirkt, dass das Steuerelement am oberen Rand des Fensters angedockt wird, dabei füllt es die gesamte Breite des Fensters aus.
  • Mit Dock: Fill; erreichen sie, dass das Steuerelement den gesamten noch verfügbaren Bereich des Fensters ausfüllt.

Folgende Parameter stehen zur Verfügung: Top, Bottom, Left, Right, Fill

Die Einfügereihenfolge bestimmt das Verhalten der Steuerelemente mit, sprich: "Wer zuerst kommt malt zuerst." Entspricht das Ergebnis nicht ihren Vorstellungen sollte diese überprüft werden. Nachträglich kann die Einfügereihenfolge durch die Kommandos In den Vordergrund und In den Hintergrund im Kontextmenü geändert werden.
4. Steuerelemente der Fenstergröße anpassen (Resize)
Mit der Resize-Eigenschaft werden alle Steuerelemente an die Containergröße verhältnismäßig angepasst.
Folgende Beispiele sollen das Konzept veranschaulichen.
  • Die Eigenschaft Resize: Left, Width; bewirkt, dass sich die horizontale Position des Steuerelementes, als auch die Breite im gleichen Verhältnis wie die horizontale Vergrößerung des Fensters ändert.
  • Mit Resize: All; (entspricht Resize: Top, Left, Height, Width;) werden alle Eigenschaften zu Position und Größe des Steuerelementes an das Formular angepasst.

Folgende Parameter stehen zur Verfügung: Top, Left, Height, Width, All

5. Syntax / Einbinden ins Projekt
Das Verhalten eines Steuerelementes wird in der Tag-Eigenschaft hinterlegt.
Die drei Eigenschaften Anchor, Dock oder Resize müssen durch Semikolon voneinander getrennt werden. Ansonsten gelten keine besonderen Formatierungen. Es funktioniert also auch dockLEFT; - was aber nicht gerade freundlich für’s Auge ist.
Um sich einiges an Arbeit zu sparen, können mehrere Objekte markiert und gleichzeitig angepasst werden.
Damit die Resize-Klasse ihre Arbeit erledigen kann sind die folgenden Zeilen Quelltext nötig.
 
Option Explicit

 'Objekt der Resize-Klasse
Private objResize As New clsResize

Private Sub Form_Load()
  'Formular registrieren
  objResize.Form = Me
End Sub

Private Sub Form_Resize()
  'Alle registrierten Steuerelemente anpassen
  objResize.ResizeControls
End Sub

Private Sub Form_Unload(Cancel As Integer)
  'Speicher freigeben
  Set objResize = Nothing
End Sub
 
Je nach gewählter Eigenschaft wird das Steuerelement seinem Container entsprechend angepasst. Normalerweise dient das Formular als Container, es gibt aber auch andere Steuerelemente die ebenfalls Steuerelemente aufnehmen können, wie der Frame, die PictureBox oder das SSTab.
Fenstergröße einschränken
Beachten sie, dass sich bei starker Verkleinerung die Größe ihrer Steuerelemente bis auf 0 reduzieren kann, beziehungsweise sich einige Steuerelemente überlappen können. Obwohl es zu keiner Fehlermeldung kommt kann die Funktionstüchtigkeit ihres Programms beeinträchtigt sein.
Der Screenshot zeigt das selbe Beispiel, das zur Beschreibung der Anchor-Eigenschaft verwendet wurde. Es empfiehlt sich daher die Fenstergröße zu begrenzen.
Dieser unerwünschte Effekt kann mit dem Tipp Fenstergröße begrenzen verhindert werden.
Hinweis
Mit Ausnahme des SSTab konnte kein besonderes Verhalten von exotischen Steuerelementen berücksichtigt werden. Sind sie dennoch unverzichtbar, erfordert dies noch etwas Zeit und Kreativität.
Ist die Anzeige-Eigenschaft Fensterinhalt beim Ziehen anzeigen aktiviert, kann es, wie bei VB.NET auch, zu leichtem Flackern kommen.
Bei Fragen zu diesem Tutorial wenden Sie sich bitte an den Autor oder nutzen Sie unser VB-Forum.

Betriebssystem/VB-Version
Win 9x
Win ME
Win NT
Win 2000
Win XP
Win Vista
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (7,4 kB) Downloads bisher: [ 2499 ]

Zum Seitenanfang

Startseite | VB/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | VB-/VBA-Forum | VB.Net-Forum | DirectX | DirectX-Forum | Foren-Archiv | VB.Net | Chat | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Montag, 12. November 2007