Kontextabhängige tab-Elemente im Ribbon

Wenn Sie schon einmal benutzerdefinierte Ribbondefinitionen in einer Ihrer Anwendungen eingesetzt haben, kennen Sie vielleicht auch schon die kontextabhängigen Tabs, die man mit ein paar Extra-Elementen definiert und die gemeinsam mit dem jeweils zugeteilten Formular angezeigt werden. Die Besonderheit ist, dass diese kontextabhängigen tab-Elemente, auf Englisch Contextual Tabs, optisch etwas anders angezeigt werden und zusätzlich zu den aktuell angezeigten Ribbon-Tabs erscheinen. Es gibt jedoch nicht nur kontextabhängige Tabs für Formulare und Berichte, sondern auch noch weitere, die beispielsweise in der Entwurfsansicht verschiedener Elemente erscheinen oder in der Datenblattansicht. In diesem Beitrag schauen wir uns an, welche es gibt und wie wir diese Tabs selbst erweitern oder anpassen können.

Im Beitrag Ribbontab beim Öffnen eines Formulars anzeigen (www.access-im-unternehmen.de/1391) schauen wir uns an, wie wir bei Anzeige eines Formulars ein benutzerdefiniertes, kontextabhängiges Ribbon-Tab einblenden können.

Dort nutzen wir unter anderem die Möglichkeit, ein neues Tab im Ribbon als kontextabhängiges tab-Element zu platzieren. Dazu fügen wir unter dem ribbon-Element nicht direkt das tabs-Element und darin die tab-Elemente ein, sondern schalten noch ein contextualTabs-Element und ein tabSet-Element dazwischen.

Dieses tabSet-Element können wir nicht mit einem individuellen Wert für das Attribut id versehen, sondern es gibt nur das Attribut idMso. Für dieses hinterlegen wir dort den Wert TabSetFormReportExtensibility.

Erst darunter können wir dann die tab-Elemente und die untergeordneten Elemente anlegen, die dann in einem optisch hervorgehobenen tab-Element angezeigt werden – allerdings nur, wenn die Ribbondefinition aktiv ist und ein Formular oder Bericht in der Formular- oder Berichtsansicht angezeigt wird.

Kontextabhängige tab-Elemente nur für Formulare?

Dieses kontextabhängige Element fügen wir normalerweise einer benutzerdefinierten Ribbondefinition hinzu, die über die Eigenschaft Name des Menübands einem Formular zugewiesen wird.

Dann erscheint das kontextabhängige tab-Element auch nur, wenn das Formular angezeigt wird.

Eingebaute tabSet-Elemente

Neben den kontextabhängigen tabSet-Elementen gibt es auch einige eingebaute tabSet-Elemente, die zum Beispiel beim Anzeigen verschiedener Datenbankobjekte rechts neben den Standard-Tabs erscheinen.

Ein Beispiel ist die Anzeige einer Tabelle in der Datenblattansicht (siehe Bild 1).

Kontextabhängige Tabs bei Anzeige einer Tabelle in der Datenblattansicht

Bild 1: Kontextabhängige Tabs bei Anzeige einer Tabelle in der Datenblattansicht

Benutzerdefinierte tabSet-Elemente

Wenn man an benutzerdefinierte kontextabhängige tab-Elemente denkt, fällt einem zuerst das für Formulare und Berichte ein. Wir können aber auch für alle anderen Objekte in verschiedenen Ansichten kontextabhängige Erweiterungen hinzufügen oder auch die vorhandenen Erweiterungen anpassen. Wir schauen uns zuerst einmal an, wie wir den eingebauten tabSet-Elementen eigene tab-Elemente hinzufügen können.

Eingebaute tabSet-Elemente erweitern

Bevor wir die eingebauten tabSet-Elemente um eigene tab-Elemente mit entsprechenden group-Elementen und darin enthaltenen Steuerelementen ergänzen können, müssen wir zuerst einmal die Werte kennen, die wir für das Attribut idMso angeben müssen, um die tabSet-Elemente zu referenzieren.

Deshalb schauen wir uns diese zuerst an. Dabei fangen wir mit den aktuell, also mit den Access-Versionen 2016 und 2019 kompatiblen idMso-Werten an:

  • TabSetTableToolsDatasheet: Wird mit der Datenblattansicht einer Tabelle eingeblendet und enthält die beiden tab-Elemente Tabelle Felder und Tabelle.
  • TabSetTableToolsDesign: Wird mit der Entwurfsansicht einer Tabelle eingeblendet und bietet das tab-Element Tabellenentwurf an.
  • TabSetQueryTools: Wird mit der Entwurfsansicht und der SQL-Ansicht von Abfragen angezeigt und enthält das tabSet-Element namens Abfrageentwurf.
  • TabSetFormToolsLayout: Wird mit der Layoutansicht von Formularen eingeblendet und zeigt die tabSet-Elemente Entwurf des Formularlayouts, Anordnen und Format an.
  • TabSetFormTools: Erscheint mit der Entwurfsansicht eines Formulars und enthält die tabSet-Elemente Formularentwurf, Anordnen und Format.
  • TabSetFormDatasheet: Wird mit der Datenblattansicht von Formularen angezeigt und liefert das tabSet-Element Formulardatenblatt.
  • TabSetReportToolsLayout: Wird mit der Layoutansicht von Berichten aktiviert und enthält die tabSet-Elemente Berichtslayoutentwurf, Anordnen, Format und Seite einrichten.
  • TabSetReportTools: Erscheint mit der Entwurfsansicht von Berichten und zeigt die tabSet-Elemente Berichtsentwurf, Anordnen, Format und Seite einrichten an.
  • TabSetMacroTools: Wird mit der Entwurfsansicht eines Makros angezeigt und zeigt das tabSet-Element Makroentwurf an.
  • TabSetRelationshipTools: Wird mit dem Beziehungsfenster eingeblendet und stellt das tabSet-Element Beziehungsentwurf bereit (siehe Bild 2).
  • Contextual Tab für das Beziehungsfenster

    Bild 2: Contextual Tab für das Beziehungsfenster

Das tabSet-Element TabSetFormReportExtensibility ist ein Sonderfall. Eigentlich dachten wir, es würde nur angezeigt werden, wenn es in einer Ribbondefinition definiert ist, die einem Formular oder einem Bericht zugeordnet ist. Natürlich haben wir ausprobiert, dieses in einer Ribbondefinition anzulegen, die wir der Eigenschaft Name des Menübands der Anwendung selbst in den Access-Optionen zugewiesen haben. Haben wir dann ein Formular in der Formularansicht geöffnet, ist dieses jedoch nicht erschienen.

Wenn wir allerdings ein tabSet des Typs TabSetFormReportExtensibility für das Anwendungsribbon definieren und auch für ein Formular und das Formular dann anzeigen, dann erscheinen beide benutzerdefinierte tabSet-Elemente.

Es gibt noch einige weitere idMso-Werte für tabSet-Elemente, die für ältere Access-Versionen noch funktionieren und die vielleicht für den einen oder anderen Leser noch interessant sind. Zunächst die Elemente für die Anzeige von Tabellen in den Pivot-Ansichten, die schon länger nicht mehr verfügbar sind:

  • TabSetPivotTableAccess
  • TabSetPivotChartAccess

Noch länger fehlt die Möglichkeit, Access-Projekte (.adp) zu verwenden. Dennoch der Vollständigkeit halber hier die idMso-Werte für die verschiedenen Ansichten der Elemente, die es nur in .adp-Datenbanken gibt:

  • TabSetAdpFunctionAndViewTools
  • TabSetAdpStoredProcedure
  • TabSetAdpSqlStatement
  • TabSetAdpDiagram

Erweitern um benutzerdefinierte tab-Elemente

Wenn wir die eingebauten tabSet-Elemente um eigene tab-Elemente erweitern wollen, um den verschiedenen Ansichten von Tabellen, Abfragen, Formularen, Berichten, Makros und dem Beziehungsfenster neue Steuerelemente hinzuzufügen, benötigen wir also jeweils das contextualTabs-Element, darin das entsprechende tabSet-Element mit einer der oben angegebenen idMso-Werte und darin die gewünschten tab-, group– und Steuerelemente.

In Listing 1 finden Sie Beispiele für alle tabSet-Elemente, denen wir jeweils ein tab-Element hinzugefügt haben. Wenn Sie diese Ribbondefinition mit dem Wert Main im Feld RibbonName in der Tabelle USysRibbons speichern, die Anwendung neu starten, den Wert Main für die Eigenschaft Name des Menübands in den Access-Optionen einstellen und die Anwendung nochmals neu starten, wird diese Definition angewendet.

<?xml version="1.0"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
   <ribbon>
     <contextualTabs>
       <tabSet idMso="TabSetQueryTools">
         <tab id="tabTabSetQueryTools" label="TabSetQueryTools"/>
       </tabSet>
       <tabSet idMso="TabSetFormToolsLayout">
         <tab id="tabTabSetFormToolsLayout" label="TabSetFormToolsLayout"/>
       </tabSet>
       <tabSet idMso="TabSetFormTools">
         <tab id="tabTabSetFormTools" label="TabSetFormTools"/>
       </tabSet>
       <tabSet idMso="TabSetReportToolsLayout">
         <tab id="tabTabSetReportToolsLayout" label="TabSetReportToolsLayout"/>
       </tabSet>
       <tabSet idMso="TabSetReportTools">
         <tab id="tabTabSetReportTools" label="TabSetReportTools"/>
       </tabSet>
       <tabSet idMso="TabSetRelationshipTools">
         <tab id="tabTabSetRelationshipTools" label="TabSetRelationshipTools"/>
       </tabSet>
       <tabSet idMso="TabSetMacroTools">
         <tab id="tabTabSetMacroTools" label="TabSetMacroTools"/>
       </tabSet>
       <tabSet idMso="TabSetTableToolsDatasheet">
         <tab id="tabTabSetTableToolsDatasheet" label="TabSetTableToolsDatasheet"/>
       </tabSet>
       <tabSet idMso="TabSetTableToolsDesign">
         <tab id="tabTabSetTableToolsDesign" label="TabSetTableToolsDesign"/>
       </tabSet>
       <tabSet idMso="TabSetFormDatasheet">
         <tab id="tabTabSetFormDatasheet" label="TabSetFormDatasheet"/>
       </tabSet>
       <tabSet idMso="TabSetFormReportExtensibility">
         <tab id="tabTabSetFormReportExtensibility" label="TabSetFormReportExtensibility von Main"/>
       </tabSet>
     </contextualTabs>
   </ribbon>
</customUI>

Listing 1: Alle aktuell verfügbaren tabSet-Elemente mit je einem Beispieltab

Es erscheint dann beispielsweise bei der Anzeige einer Tabelle in der Entwurfsansicht ein zusätzliches tab-Element wie in Bild 3. Das ist nicht nur hilfreich bei der Identifikation der einzelnen tabSet-Elemente, sondern kann auch als Ausgangspunkt für die Erweiterung oder Anpassung der eingebauten Elemente dienen. Wie Sie Ribbontabs um zusätzliche groups– und Steuerelemente ergänzen, haben wir in verschiedenen Beiträgen bereits beschreiben – um diese zu finden, suchen Sie einfach auf www.access-im-unternehmen.de nach dem Begriff Ribbon.

Zusätzliches tab-Element im tabSet-Element namens TabSetTableToolsDesign

Bild 3: Zusätzliches tab-Element im tabSet-Element namens TabSetTableToolsDesign

Eingebaute tab-Elemente in tabSet-Elementen anpassen

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar