Color scheme: Riviera
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Seitenleiste mit Karten aufbauen

Seitenleiste mit Karten aufbauen

Zeigen Sie mehrere Unterformulare an einer Stelle eines WklDockLayout an – zum Beispiel eine Seitenleiste rechts mit den Karten „Eigenschaften“ und „Memo“ – und lassen Sie den Benutzer wie in einem Office-Aufgabenbereich über Register zwischen ihnen wechseln.

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

Lösungsüberblick

Bereiche mit derselben Gruppe in Panes (Name=Zone:Group) bilden eine Registergruppe: Sie teilen sich unter einer Registerleiste einen Platz in ihrer Zone, und es wird jeweils eine Karte angezeigt. Die Gruppe wird als ein Bereich in der Größe geändert, eingeklappt und gezogen. PaneCaption legt den Text eines Registers fest, GroupPane liest oder setzt die angezeigte Karte, und AfterTabChange meldet jeden Wechsel – durch den Benutzer, durch Code oder beim Öffnen des Formulars mit der gemerkten Karte des Benutzers. So lädt ein Formular den Inhalt einer Karte an einer einzigen Stelle.

Umsetzung

  1. Zeichnen Sie in der Entwurfsansicht die Unterformulare der Seitenleiste (sfProps, sfMemo) übereinander an den rechten Rand des Layouts; Größe und Lage ergeben sich aus der ersten Karte.
  2. Öffnen Sie den Designer des Layouts ([...] in der Zeile Benutzerdefiniert), Seite Bereiche, und tragen Sie die Karten mit derselben Gruppe ein: Zone Rechts, Gruppe Seite und den Registertext in der Spalte Register (Eigenschaften, Memo). Die Vorschau zeigt die Registerleiste; die angezeigte Karte nennt alle Karten. Klicken Sie auf OK, und speichern Sie das Formular.

Dasselbe per Code:

' Design view of frmAdmin is open.
With Forms!frmAdmin!Layout1.Object
    .Panes = "lstKunden=Left; sfProps=Right:Seite; sfMemo=Right:Seite; sfHaupt=Fill"
    .PaneCaption("sfProps") = "Eigenschaften"
    .PaneCaption("sfMemo") = "Memo"
End With

Laden Sie den Inhalt einer Karte, wenn sie angezeigt wird, und die erste Karte beim Öffnen des Formulars:

Private Sub Form_Load()
    ' The card shown when the form opens raises no AfterTabChange (Access's tab control raises no
    ' Change either): load it here.
    LoadCard Me!Layout1.Object.GroupPane("Seite")
End Sub
 
Private Sub Layout1_AfterTabChange(ByVal Group As String, ByVal Pane As String, ByVal Reason As Long)
    ' Every switch: chosen by the user (wtcUser), by code - GroupPane, Reset, Layout - (wtcCode),
    ' or the user's remembered card restored when the form opened (wtcRestore).
    LoadCard Pane
End Sub
 
Private Sub LoadCard(ByVal pane As String)
    If pane = "sfMemo" And Me!sfMemo.SourceObject = "" Then Me!sfMemo.SourceObject = "frmMemo"
End Sub

Hinweise

  • Die Karte, die beim Öffnen des Formulars angezeigt wird, löst kein AfterTabChange aus: die erste Karte der Gruppe oder die gemerkte Karte des Benutzers, wenn sie die erste ist. Nur eine gemerkte Karte, die nicht die erste ist, wird gemeldet, und zwar mit wtcRestore. Code, der Karten bei Bedarf lädt, muss die angezeigte Karte deshalb auch in Form_Load laden, sonst bleibt sie leer.
  • BeforeTabChange tritt nur bei Wechseln durch den Benutzer ein. Setzen Sie Cancel, um die angezeigte Karte zu behalten, etwa solange ein Datensatz darauf nicht gespeichert werden kann. GroupPane per Code löst AfterTabChange (wtcCode) aus, aber kein BeforeTabChange.
  • Hat die alte Karte den Fokus, verschiebt der Wechsel ihn in die neue Karte, weil Access das Steuerelement mit dem Fokus nicht ausblenden lässt. Beim Verlassen eines Unterformulars wird dessen geänderter Datensatz gespeichert, wie bei einem Klick in ein anderes Unterformular; lehnt die Tabelle den Datensatz ab, zeigt Access seine Meldung an.
  • Alle Karten einer Gruppe brauchen dieselbe Zone; eine Gruppe kann auch den restlichen Platz füllen (Fill). Die Registerleiste liegt oben am Platz der Gruppe und verwendet die Systemfarben, sodass ein hoher Kontrast den Einstellungen von Windows folgt.
  • Tastatur: Die Registerleiste ist im Layout ein Tabstopp vor der Trennleiste der Gruppe. Die Nach-links- und die Nach-rechts-Taste zeigen die benachbarte Karte, Pos1 und Ende die erste und die letzte. UI Automation stellt ein Tab mit dem Namen der Gruppe und je Karte ein TabItem dar. Strg+Tab wird nicht verwendet: In einem Unterformular verlässt Access damit das Unterformular.
  • Die angezeigte Karte gehört zur Anordnung des Benutzers (AutoSaveLayout) und kehrt beim nächsten Öffnen des Formulars zurück. Reset kehrt in jeder Gruppe zur ersten Karte zurück und meldet jede Gruppe, die dabei wechselt, mit wtcCode.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/build-a-side-bar-with-cards.txt · Last modified: by Wolfgang van der Stille