|
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.
|
|
|
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.
|
|
|
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.
|
|
|
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. |
|