Custom Task Panes mit VB6

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Neben Ribbon, Formularen und Berichten liefert Access 2007 noch eine weitere Möglichkeit zum Anpassen der Benutzeroberfläche: Das Custom Task Pane. Wie Sie dieses erstellen und steuern, erfahren Sie im vorliegenden Beitrag.

Ein Custom Task Pane ist ein spezielles Fenster innerhalb der Benutzeroberfläche von Access 2007 oder einer anderen Office 2007-Anwendung und das benutzerdefinierte Pendant zu den eingebauten Task Panes, die etwa in Access die Eigenschaften oder die Feldliste enthalten.

Der Unterschied zu üblichen Formularen ist, dass Sie Task Panes am Rand des Anwendungsfensters verankern können und dass diese immer sichtbar sind (das heißt, sie werden nicht von Formularen überdeckt- tatsächlich sind Task Panes technisch von den alten Symbolleisten abgeleitet). Ihre Verwendung bietet sich beispielsweise an, um Schnittstellen zu anderen Anwendungen oder andere wichtige Funktionen ständig anzuzeigen. Denkbar ist etwa auch, die Navigation in der Datenbank komplett über ein Taskpane zu realisieren – der einbaute Navigationsbereich von Access 2007 macht es vor.

Neben Visual Basic 6 können Sie solche Custom Task Panes auch mit Visual Studio .NET und Sprachen wie VB.NET oder C# erstellen. Allerdings sind für die daraus entstehenden DLLs das .NET-Framework sowie Assemblies des Visual Studio Tools for Office auf dem Zielrechner Voraussetzung. Mit VB6 geht das wesentlich einfacher, weil man nur die DLL auf den Zielrechner kopieren und sie registrieren muss.

Vorbereitungen

Als Ausgangspunkt dient eine verschlankte Vorlage für ein Add-In-Projekt unter VB6. Dieses legen Sie zunächst über den Menüpunkt Datei/Neues Projekt und die anschließende Auswahl des Eintrags Addin an. Nun geht es ans Ausdünnen: Werfen Sie zunächst das Formular frmAddin raus und leeren Sie dann das Modul hinter dem Objekt Connect bis auf die erste Zeile Option Explicit.

Task Pane-Verbraucher

Um auf die Methoden zum Erzeugen eines Task Panes zuzugreifen, legen Sie zunächst einen Verweis auf die Bibliothek Microsoft Office 12.0 Object Library an. Gegebenenfalls müssen Sie zuvor noch die eingestellte Version 8.0 der gleichen Bibliothek entfernen. Mit der folgenden Zeile fügen Sie dem Projekt die ICustomTaskPaneConsumer-Schnittstelle hinzu:

Implements ICustomTaskPaneConsumer

Bevor Sie die Ereignisprozedur zum Erzeugen des Task Panes anlegen, brauchen Sie noch eine Objektvariable, die einen Verweis auf das zu erzeugende Task Pane aufnimmt und deren Ereignisse abfangen kann:

Public WithEvents CTP As CustomTaskPane

Dann implementieren Sie die einzige Methode der Schnittstelle ICustomTaskPaneConsumer, indem Sie die passenden Einträge aus den beiden Kombinationsfeldern im oberen Bereich des Codefensters auswählen:

Private Sub _
ICustomTaskPaneConsumer_CTPFactoryAvailable _
(ByVal CTPFactoryInst As Office.ICTPFactory) End Sub

Task Pane als UserDocument-Container

Bevor Sie diese Methode mit Leben füllen, legen Sie erst noch ein UserDocument an, das die im Task Pane anzuzeigenden Steuerelemente enthält. Dazu rufen Sie den Eintrag Hinzufügen/Benutzerdokument des Kontextmenüs im Projekt-Explorer auf und wählen dann im Dialog Benutzerdokument hinzufügen das Element Benutzerdokument aus. ändern Sie seinen Namen in aiuTask Pane. Fügen Sie außerdem eine Schaltfläche hinzu. Anschließend brauchen Sie nur noch die soeben angelegte Methode zu füllen:

Private Sub _
ICustomTaskPaneConsumer_CTPFactoryAvailable _
(ByVal CTPFactoryInst As Office.ICTPFactory) Set CTP = CTPFactoryInst.CreateCTP _
("MyAddin.aiuTask Pane", "AiU-Task Pane") CTP.Visible = True End Sub

Dabei kommt das Objekt CTPFactoryInst als Parameter der Methode selbst. CreateCTP erzeugt das Task Pane und die Visible-Methode macht es schließlich sichtbar. Achten Sie dabei auf die genaue Schreibweise der ProgID ihres Benutzerdokuments. Sie setzt sich so zusammen: <Name des VB6-Projekts>.<Name des Benutzerdokuments>. Debugging anwerfen, Access starten, fertig – es erscheint ein Task Pane wie in Bild 1. Wichtig ist es zu erwähnen, dass das Debuggen an dieser und anderen Stellen in Zusammenhang mit dem Erzeugen von Custom Task Panes und Ribbon-Anpassungen nicht zuverlässig funktioniert. Verwenden Sie in jedem Fall eine Fehlerbehandlung, die gegebenenfalls Fehlercode und -beschreibung ausgibt.

abb001.tif

Bild 1: Das Access-Fenster mit einem benutzerdefinierten TaskPane

Ein- und ausblenden

Nun war das noch lange nicht alles – selbst wenn Sie das Bestücken des Task Panes mit echten Funktionen außen vor lassen. Denn irgendwie müssen Sie ja beim Arbeiten mit umfangreichen Formularen oder Berichten auch mal Platz schaffen – zum Beispiel durch Ausblenden des Task Panes. Das funktioniert sehr zuverlässig mit der Schließen-Schaltfläche rechts oben im Custom Task Pane. Leider gibt es keine passende Möglichkeit zum Wiedereinblenden des Task Panes. Also bauen Sie sich einfach eine eigene Schaltfläche, und zwar in Form eines Ribbon-Steuerelements. Am besten ist dafür eine Umschaltfläche geeignet, die das Ein- und Ausblenden gleichermaßen erledigen kann. Die zum Hinzufügen dieser Ribbon-Umschaltfläche notwendigen Schritte sehen wie folgt aus:

  • Legen Sie die Ribbon-XML-Definition aus Listing 1 als Textdatei an, speichern Sie diese unter dem Namen Ribbon.xml und fügen Sie sie als benutzerdefinierte VB-Ressource zum Projekt hinzu.
  • Listing 1: XML-Code zur Anzeige einer Umschaltfläche zum Ein- und Ausblenden des Custom Task Panes

    <customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui”

    loadImage=”LoadImage”>

    <ribbon startFromScratch=”false”>

    <tabs>

    <tab idMso=”TabHomeAccess”>

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

    Testzugang

    eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

    diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar