Color scheme: Light
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Allen Seiten denselben Kopfbereich geben

Allen Seiten denselben Kopfbereich geben

Geben Sie einer Anwendungsshell einen gemeinsamen Kopfbereich für alle ihre Seiten – Titel, Untertitel, die Befehle der Seite und einen Status –, statt Schaltflächen und Bezeichnungsfeldern, die jede Seite oder die Shell selbst platziert und ausmisst.

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

Lösungsüberblick

  • Eine WklActionBar in der Shell, über dem Unterformular, das die Seiten zeigt (sfPage).
  • Die Shell setzt die Befehle der Seite, wenn sie eine Seite anzeigt: ein JSON-Text je Seite oder ClearCommands und AddCommand.
  • Eine einzige Ereignisprozedur führt jeden Befehl aus: CommandClick(Key) übergibt den Schlüssel an die Prozedur, die weiß, was jeder Schlüssel bewirkt.
  • Der Zustand des Datensatzes aktiviert und deaktiviert Befehle anhand ihres Schlüssels, zum Beispiel nach CommandStateChange der Liste.

Umsetzung

Im Modul des Shell-Formulars frmShell (Befehlsleiste barShell, Seiten-Unterformular sfPage):

Option Compare Database
Option Explicit
 
Public Sub ShowPage(ByVal pageForm As String)
    Me!sfPage.SourceObject = pageForm
    With Me!barShell.Object
        .Caption = Me!sfPage.Form.Caption
        .Subtitle = Nz(Me!sfPage.Form.Tag, "")
        .ClearCommands
        Select Case pageForm
            Case "frmPersonen"
                .AddCommand "neu", "&Neu", "E710", wcpStandard, "^N"
                .AddCommand "bearbeiten", "Bearbei&ten", "E70F"
                .AddCommand "loeschen", "&Löschen", "E74D"
                .AddCommand "ausstellen", "&Schlüssel ausstellen …", "E8D7", wcpPrimary
                .AddCommand "ausstellen-test", "Testschlüssel ausstellen …", "", , , "ausstellen"
                .AddCommand "sperren", "Schlüssel s&perren …", "", wcpMenu
                .AddCommand "spalten", "S&palten zurücksetzen", "", wcpMenu, , , , True
        End Select
        .AddCommand "export", "E&xportieren …", "EDE1", wcpRight
        .AddCommand "refresh", "&Aktualisieren", "E72C", wcpRight, "{F5}"
    End With
End Sub
 
Private Sub barShell_CommandClick(ByVal Key As String)
    Select Case Key
        Case "neu": Me!sfPage.Form!grdList.Object.NewRecord
        Case "bearbeiten": Me!sfPage.Form!grdList.Object.EditSelected
        Case "loeschen": Me!sfPage.Form!grdList.Object.DeleteSelected
        Case "refresh": Me!sfPage.Form!grdList.Object.Requery
        Case "export": Me!sfPage.Form!grdList.Object.ShowExportDialog
        Case Else: RunPageCommand Key
    End Select
End Sub
 
' Called by the page after its list changed what can be done (CommandStateChange of WklGrid).
Public Sub ListStateChanged(ByVal grid As Object)
    With Me!barShell.Object
        .CommandEnabled("neu") = grid.CanAdd
        .CommandEnabled("bearbeiten") = grid.CanEdit
        .CommandEnabled("loeschen") = grid.CanDelete
    End With
End Sub
 
Private Sub RunPageCommand(ByVal Key As String)
    ' The commands only this page has, for example opening a dialog.
End Sub

Hinweise

  • Eine Shell, die für jede Seite einen eigenen Befehlssatz führt, kann jeden als JSON-Text speichern und mit .Commands = text zuweisen; ein fehlerhafter Text wird als Ganzes abgelehnt, und die Befehlsleiste behält ihre Befehle.
  • Das Statusfeld zeigt, was die gesamte Anwendung gerade tut, zum Beispiel .StatusText = "aktualisiert " & Format(Now, "hh:nn:ss") mit .StatusKind = wskOk.
  • Führen Sie jede Tastenkombination nur einmal auf: in der Befehlsleiste (Shortcut eines Befehls) oder in WklDockLayout.ShortcutKeys, nicht in beiden.
  • Das Band der Befehlsleiste übernimmt BackColor und ForeColor; die Befehlszeile behält die Fensterfarbe, sodass die Schaltflächen auf einem dunklen Band lesbar bleiben.
  • Per Code in der Formularansicht gesetzte Befehle kennzeichnen das Formular nicht als geändert; in der Entwurfsansicht gesetzte Befehle (per Code oder im Designer) werden mit dem Formular gespeichert.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/give-every-page-the-same-header.txt · Last modified: by Wolfgang van der Stille