Color scheme: Light
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » Layout » WklSplitter und WklDockLayout

WklSplitter und WklDockLayout

Zwei Steuerelemente, mit denen der Benutzer die Bereiche eines Access-Formulars zur Laufzeit anordnet, ohne Formularcode: WklDockLayout liegt hinter den Bereichen des Detailbereichs und ordnet sie bei jeder Größenänderung des Fensters in Zonen um einen Füllbereich an; WklSplitter ist eine einzelne Trennleiste zwischen zwei Gruppen von Steuerelementen. Beide merken sich die Anordnung jedes Benutzers und funktionieren auch auf UserForms in Excel und Word.

Erste Schritte

Häufige Aufgaben

Schaubild

+- frmAdmin ---------------------------------------------------------------+
| Formularkopf: Titel, Suche, Befehle                                      |
+--------------+-+---------------------------------------------------------+
| tlNav        |#| sfMain                                            [3]   |
|              |#|                                                         |
| [1]          |#|                                                         |
|              |#|                                                         |
|              |#+---------------------------------------------------------+
|              |#|=========================================================| [2]
|              |#| sfInfo                                            [4]   |
+--------------+-+---------------------------------------------------------+
| Formularfuß: Status                                                      |
+--------------------------------------------------------------------------+
 
+- frmKunde ----------------------------------------------+
| lstKunden          |#| sfBestellungen                   |
|                    |#|                                  |
| [5]                |#| [6]                              |
+---------------------------------------------------------+
BereichBedeutung
1Links angedockter Bereich: eine WklTreeList, ein Unterformular oder ein beliebiges Steuerelement (WklDockLayout, Zone links)
2Trennleisten des Layouts: Ziehen ändert die Größe des Bereichs davor, Doppelklick oder Eingabetaste klappt ihn ein
3Füllbereich: nimmt den Platz ein, den die angedockten Bereiche übrig lassen
4Unten angedockter Bereich
5Erste Seite eines WklSplitter: wächst oder schrumpft mit der Trennleiste
6Zweite Seite: verschiebt ihre nahe Kante mit der Trennleiste

Wichtige Funktionen

  • Kein Formularcode: Die Bereiche werden über ihre Lage auf dem Formular gefunden (oder benannt), das Layout folgt von selbst jeder Fenstergröße, und die Anordnung des Benutzers ist beim nächsten Öffnen des Formulars wieder da.
  • Zonen wie beim Andocken in Windows Forms: links, oben, rechts, unten und ein Füllbereich; ein früherer Bereich wird weiter außen angedockt. Jeder angedockte Bereich behält seine entworfene Breite oder Höhe und hat eine Mindestgröße.
  • Füllt den Detailbereich (FillSection, Standardwert): Titel und Befehle im Formularkopf, Status im Formularfuß, die Bereiche in allem Platz, den das Fenster hat – ohne das Layout exakt zu zeichnen oder etwas zu verankern.
  • Ziehen, Einklappen, Ereignisse: eine Vorschau während des Ziehens, eine einzige Neuanordnung beim Loslassen, Esc bricht ab; ein Doppelklick klappt einen Bereich oder eine Seite ein. BeforeLayoutChange und BeforeSplit können eine Änderung des Benutzers ändern oder abbrechen, AfterLayoutChange, AfterSplit und AfterCollapse melden sie.
  • Gespeichert je Windows-Benutzer (AutoSaveLayout): in der lokalen Tabelle USysWklLayout des Frontends, auf UserForms in der Registrierung; Layout liefert die Anordnung als Text für Code, der sie anderswo aufbewahrt; Reset kehrt zum Entwurf zurück.
  • Registergruppen: Mehrere Bereiche teilen sich einen Platz unter einer Registerleiste – eine Seitenleiste mit den Karten „Eigenschaften“ und „Memo“ –, von denen jeweils eine angezeigt wird; AfterTabChange meldet jeden Wechsel, ob durch den Benutzer, durch Code oder beim Öffnen, sodass eine Karte ihren Inhalt an einer einzigen Stelle lädt.
  • Tastatur und Sprachausgaben: Auf Access-Formularen wechseln F6 und Umschalt+F6 zwischen den Bereichen, durch ein Layout auf einem Seitenunterformular hindurch als Teil eines einzigen Zyklus; die Trennleisten sind Tabstopps: Die Pfeiltasten ändern die Größe, die Eingabetaste klappt ein; UI Automation zeigt sie als Schieberegler mit der Größe als Wert.
  • Designer mit einer Vorschau, die aus den echten Steuerelementen des Formulars gezeichnet wird; der Designer des Andocklayouts setzt bei OK außerdem Verankerungen und Reihenfolge, legt fest, was jedes Unterformular zeigt, und fügt neue Unterformularbereiche hinzu.

Grundkonzepte

Der Entwurf ist der Ausgangspunkt, die Anordnung ein paar Zahlen darüber. Beide Steuerelemente lesen die Lage ihrer Bereiche einmal, wenn das Formular zum ersten Mal angezeigt wird, und berechnen jede Anordnung aus diesem Entwurf: der Splitter aus einem Versatz (Position) und der eingeklappten Seite, das Layout aus Zone, Größe und Einklappzustand jedes Bereichs. Versatz 0 oder Reset ergibt genau den Entwurf; wiederholtes Ziehen kann keine Rundungsfehler anhäufen. Von einer Anordnung zur Laufzeit wird nichts mit dem Formular gespeichert.

Die Bereiche sind gewöhnliche Steuerelemente. Unterformulare, Listenfelder, WKL-Steuerelemente – Layout und Trennleiste setzen ihre Lage und blenden sie im eingeklappten Zustand aus, mehr nicht. Überlassen Sie ihre Verankerung dem Designer des Layouts: Er gibt jedem Bereich die horizontale Verankerung seines Platzes und belässt die vertikale Verankerung oben (siehe „Fenster breiter als 22 Zoll“ unten). Access streckt verankerte Steuerelemente, ohne das Objektmodell davon zu unterrichten; das Layout berücksichtigt deshalb nur die Verankerungen, die der Designer vergibt; die Bereiche eines WklSplitter bleiben oben links verankert. Ein WKL-Steuerelement, das als Bereich dient, behält beim Verschieben seine Daten und seine Auswahl, obwohl Access die Fenster von ActiveX-Steuerelementen nach jedem Verschieben neu aufbaut.

Welches Steuerelement wann. WklSplitter teilt zwei Gruppen von Steuerelementen entlang eines Zwischenraums und lässt den Rest des Formulars unberührt – zum Beispiel eine Liste und ein Unterformular nebeneinander. WklDockLayout übernimmt den Detailbereich: Es eignet sich für Anwendungsrahmen und Verwaltungsformulare, deren Bereiche das ganze Fenster nutzen sollen. Ein Layout hat bereits nach jedem angedockten Bereich eine Trennleiste; fügen Sie keine Splitter zwischen seinen Bereichen hinzu.

Änderungen durch den Benutzer und durch Code. Ein Ziehen, ein Doppelklick, eine Taste oder ein Aufruf über UI Automation ist eine Benutzeraktion und löst die Before- und After-Ereignisse aus. Dieselbe Änderung durch Code (PaneSize, Position, Collapsed, Layout) löst keines davon aus, außer AfterCollapse; beide werden für den Benutzer gespeichert.

Die Entwurfsansicht zeigt die Anordnung. Ist Beim Übernehmen einrichten eingeschaltet, verschiebt OK im Designer des Andocklayouts die Bereiche in der Entwurfsansicht dorthin, wo das Layout sie platziert: angedockte Bereiche in ihren Größen an den Rändern, die Breite einer Trennleiste dazwischen, den Füllbereich im Rest – berechnet aus dem entworfenen Detailbereich (mit FillSection) oder aus dem Rechteck des Layouts. Die Formularansicht weicht nur dort ab, wo das Fenster vom Entwurf abweicht: Mit FillSection wächst der Füllbereich mit dem Fenster, und eine eigene Anordnung des Benutzers (eingeklappte Bereiche, verschobene Trennleisten) gilt nur in der Formularansicht. Findet das Layout seine Bereiche über ihre Lage und würde das angeordnete Formular anders gelesen, schreibt der Designer zuerst Panes aus; so bleiben die Zonen wie entworfen.

Nur Einzelformulare. Access zeigt keine Endlosformulare mit Unterformularen oder ActiveX-Steuerelementen; beide Steuerelemente gehören deshalb auf das Einzelformular, das solche Bereiche umgibt.

Fenster breiter als 22 Zoll. Access lehnt Left und Width über 31.680 Twips (22 Zoll) ab, seine Verankerungen strecken ein Steuerelement aber über jede Breite. Das Layout nutzt sie: Der Designer gibt jedem Bereich beim Anordnen die Verankerung seines Platzes (der Füllbereich und die Bereiche darüber und darunter links und rechts verankert, ein Bereich rechts rechts verankert, ein Bereich links links verankert), und das Layout füllt damit das ganze Fenster. Setzen Sie die Verankerungen im Entwurf, nicht per Code zur Laufzeit: Ändert sich die Verankerung eines Unterformularsteuerelements in der Formularansicht, erstellt Access die Seite neu (Datensatzposition und alles, was zur Laufzeit gesetzt wurde, gehen verloren). Ein Bereich ohne Verankerung endet bei 22 Zoll. Höhen bleiben auf 22 Zoll begrenzt.

Innerhalb einer Seite (ein Formular in einem Unterformularsteuerelement) wendet Access die Verankerungen der Steuerelemente der Seite an, wenn sich die Größe des Access-Fensters ändert, wie auf jedem Formular: In einem verankerten Unterformularsteuerelement behält ein links und rechts verankertes Textfeld seinen rechten Rand aus dem Entwurf, auch über 22 Zoll hinaus. Eine per Code gesetzte Breite (sfPage.Width = …) wird nicht sofort auf die Access-Steuerelemente der Seite angewendet: Sie behalten ihre Größe, bis sich das Fenster das nächste Mal in der Größe ändert, und übernehmen dann die neue Breite. Verankern Sie deshalb das Unterformularsteuerelement, statt es per Code zu verbreitern; ein WklDrawer platziert die Steuerelemente seines Inhalts selbst (AnchorContent). Ein links und rechts verankertes WKL-Steuerelement in einer Seite folgt der Seite sofort, auch über 22 Zoll hinaus und ohne Andocklayout; es behält seinen rechten Rand aus dem Entwurf, während sein Width weiterhin den Entwurfswert meldet. Ein WklDockLayout auf der Seite und die WKL-Steuerelemente in seinen Bereichen reichen ebenfalls über 22 Zoll hinaus; außer dem Anordnen der Bereiche im Designer ist dafür nichts einzustellen. Setzen Sie die Verankerungen also im Entwurf der Seite, wie auf jedem Formular.

Ränder im Code prüfen. WKL-Steuerelemente bieten kein Fensterhandle (hWnd), und Left und Width eines verankerten Steuerelements behalten die Werte des Entwurfs, wenn Access es streckt. In einem Fenster, das breiter ist als das Formular, verschiebt Access ein rechts verankertes Steuerelement um InsideWidth - Width des Formulars und verbreitert ein links und rechts verankertes Steuerelement um denselben Betrag; InsideWidth meldet die sichtbare Breite auch über 31.680 Twips hinaus. Sein rechter Rand im Fenster ist daher Left + Width + (InsideWidth - Width), mit Width des Formulars in der Klammer. Das gilt auch für die Bereiche eines WklDockLayout: Das Layout gibt einem verankerten Bereich das Rechteck, das Access durch Hinzufügen seines Zuwachses in das angeordnete verwandelt; Left und Width des Bereichs melden deshalb dieses kleinere Rechteck, nicht die Lage auf dem Bildschirm. Um zu erfahren, wo ein Bereich liegt, fragen Sie das Layout (PaneZone, PaneSize, PaneCollapsed und GroupPane für die sichtbare Karte einer Gruppe), nicht das Steuerelement. Die Zoll sind logische Zoll – die Pixel des Fensters geteilt durch die Anzeigeskalierung von Windows, 96 Pixel je Zoll bei 100 % –, nicht die Bildschirmdiagonale: Ein maximiertes Fenster auf 2.560 Pixeln ist bei 100 % 26,7 Zoll breit, bei 125 % 21,3 Zoll; 1.920 Pixel bei 100 % sind 20 Zoll.

Administration

Fehlerbehebung

Für Entwickler

Verwandte Themen

Keine

de/wiki/msaccess/comctl/layout/dock-layout-and-splitter/start.txt · Last modified: by Wolfgang van der Stille