Farbschema: Dunkel
Sie befinden sich hier: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Bereiche eines Layouts festlegen

Bereiche eines Layouts festlegen

Legen Sie fest, welche Steuerelemente ein WklDockLayout anordnet, in welcher Zone und mit welcher Mindestgröße, statt es sie anhand ihrer Lage finden zu lassen – etwa wenn zwei Bereiche sich so oder so deuten ließen oder wenn Code Bereiche ein- und ausblendet.

Voraussetzungen: WKL Forms Object Library 1.23 oder höher.

Lösungsüberblick

Panes listet die Bereiche in der Andockreihenfolge als Name=Zone oder Name=Zone,MinSize (Twips) auf, getrennt durch Semikolons; die Zonen sind Left, Top, Right, Bottom und Fill. Mit Name=Zone:Group werden Bereiche zu Karten einer Registergruppe (Seitenleiste mit Karten aufbauen); bei einer Mindestgröße steht die Gruppe zuerst, Name=Zone:Group,MinSize (sfBearbeiten=Right:Seite,3402; Right,3402:Seite wird abgelehnt). Eine Gruppe ist ein Bereich, und ihre Mindestgröße ist die größte ihrer Karten. Ist Panes leer, findet das Layout die Bereiche anhand ihrer Lage. PaneNames gibt in beiden Fällen die Bereiche zurück, die das Layout verwendet. MinPaneSize ist die Mindestgröße für Einträge ohne eigene Angabe. Refresh liest die Lage neu ein, nachdem Code Steuerelemente dauerhaft verschoben hat.

Umsetzung

Im Designer ([...] in der Zeile Benutzerdefiniert), Seite Bereiche: Nach Lage übernehmen füllt die Liste mit den Bereichen, die anhand ihrer Lage gefunden wurden; ändern Sie dort Zonen und Mindestgrößen. Dasselbe per Code:

' Navigation outermost on the left, a log strip at the bottom under the main area only.
Me!Layout1.Object.Panes = "sfNavigation=Left,1500; sfHaupt=Fill; sfProtokoll=Bottom,800"
 
Debug.Print Me!Layout1.Object.PaneNames     ' sfNavigation;sfHaupt;sfProtokoll

Die Andockreihenfolge ist entscheidend: Ein früherer Eintrag wird weiter außen angedockt und nimmt die volle Höhe oder Breite ein, die übrig ist, wenn er an der Reihe ist. Stünde sfProtokoll=Bottom vor sfNavigation=Left, nähme die Protokollleiste die gesamte Breite ein, auch unterhalb der Navigation.

Einen Bereich zur Laufzeit ändern:

With Me!Layout1.Object
    .PaneZone("sfProtokoll") = wdzRight ' move the log to the right edge
    .PaneSize("sfNavigation") = 3000  ' width of a left or right area, height of a top or bottom one
    .PaneCollapsed("sfProtokoll") = True ' take it away: the others get its room, its strip stays at the edge
End With

Klappen Sie einen Bereich mit PaneCollapsed ein, statt seine Eigenschaft Visible zu setzen: Das Layout ordnet nach seinen Zonen, Größen und eingeklappten Bereichen an; ein über Visible ausgeblendetes Steuerelement behält deshalb seinen Platz.

Hinweise

  • Findet das Layout die Bereiche anhand ihrer Lage, nimmt es die Steuerelemente innerhalb seines Rechtecks der Reihe nach von seinen Rändern ab: Ein Steuerelement entlang eines ganzen Randes wird dort angedockt, das schmalste zuerst; das größte verbleibende Steuerelement füllt den Rest. Es zählen nur sichtbare Steuerelemente im selben Formularbereich wie das Layout.
  • Jeder angedockte Bereich behält seine entworfene Breite oder Höhe. Wird das Fenster zu klein, schrumpft zuerst der Füllbereich, danach die angedockten Bereiche von innen nach außen, jeder bis auf seine Mindestgröße.
  • Ein ungültiger Text in Panes löst sofort wkeInvalidValue aus; ein Name, den das Formular nicht hat, löst den Fehler aus, sobald das Layout zum ersten Mal anordnet.
  • Wird Panes in der Formularansicht gesetzt, liest das Layout die Bereiche neu ein, wie bei Refresh, und verwirft die Anordnung des Benutzers.
  • Überlassen Sie die Verankerung der Bereiche dem Designer: Mit Beim Übernehmen einrichten erhält jeder Bereich die horizontale Verankerung seines Platzes, und die vertikale Verankerung bleibt oben. Setzen Sie sie nicht von Hand.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/choose-the-areas-of-a-layout.txt · Zuletzt geändert: von Wolfgang van der Stille