Exemplarische Vorgehensweise: Aktualisieren der Steuerelemente in einer Multifunktionsleiste zur Laufzeit
Aktualisiert: November 2007
Betrifft |
---|
Die Informationen in diesem Thema gelten nur für die angegebenen Visual Studio Tools for Office-Projekte und Versionen von Microsoft Office. Projekttyp
Microsoft Office-Version
Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp. |
In dieser exemplarischen Vorgehensweise wird gezeigt, wie mit dem Multifunktionsleisten-Objektmodell die Steuerelemente auf einer Multifunktionsleiste nach dem Laden der Multifunktionsleiste in die Office-Anwendung aktualisiert werden.
In dem Beispiel werden die Daten der AdventureWorks-Beispieldatenbank entnommen, um ein Kombinationsfeld und ein Menü in Microsoft Office Outlook auszufüllen.
In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:
Erstellen eines neuen Outlook-Add-In-Projekts
Entwerfen einer benutzerdefinierten Multifunktionsleistengruppe
Hinzufügen der benutzerdefinierten Gruppe zu einer integrierten Registerkarte
Aktualisieren von Steuerelementen auf der Multifunktionsleiste während der Laufzeit
Hinweis: |
---|
Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio, die in den folgenden Anweisungen aufgeführt sind, angezeigt. Die von Ihnen verwendete Visual Studio-Edition und die Einstellungen legen diese Elemente fest. Weitere Informationen finden Sie unter Visual Studio-Einstellungen. |
Vorbereitungsmaßnahmen
Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:
Visual Studio Tools for Office (eine optionale Komponente von Visual Studio 2008 Professional und Visual Studio Team System).
Microsoft Office Outlook 2007.
Zugriff auf die AdventureWorks-Beispieldatenbank für SQL Server Express Weitere Information zum Erstellen der Datenbank AdventureWorks finden Sie unter Exemplarische Vorgehensweise: Installieren der AdventureWorks-Datenbank.
Visual Studio Tools for Office wird standardmäßig mit den aufgeführten Versionen von Visual Studio installiert. Wie Sie überprüfen können, ob die Software installiert ist, erfahren Sie in Installieren von Visual Studio Tools for Office.
Erstellen eines neuen Outlook-Add-In-Projekts
Erstellen Sie zuerst ein Outlook-Add-In-Projekt.
So erstellen Sie ein neues Outlook-Add-In-Projekt
Erstellen Sie in Visual Studio ein Outlook 2007-Add-In-Projekt mit der Bezeichnung MyOutlookAddIn.
Wählen Sie im Dialogfeld Neues Projekt die Option Projektmappenverzeichnis erstellen.
Speichern Sie das Projekt im Standardprojektverzeichnis.
Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Visual Studio Tools for Office-Projekte.
Entwerfen einer benutzerdefinierten Multifunktionsleistengruppe
Die Multifunktionsleiste wird nicht im Hauptschnittstellenbereich von Outlook angezeigt, sodass die Multifunktionsleiste für dieses Beispiel beim Erstellen einer neuen E-Mail-Nachricht angezeigt wird. Wenn Sie eine benutzerdefinierte Gruppe für die Multifunktionsleiste erstellen möchten, fügen Sie dem Projekt zuerst eine Multifunktionsleiste hinzu, und entwerfen Sie anschließend die Gruppe im Multifunktionsleisten-Designer. Mithilfe dieser benutzerdefinierten Gruppe können Sie Folge-E-Mail-Nachrichten für Kunden generieren, indem Sie einer Datenbank Namen und die bisherigen Bestellungen entnehmen.
So entwerfen Sie eine benutzerdefinierte Gruppe
Klicken Sie im Menü Projekt auf Neues Element hinzufügen.
Wählen Sie im Dialogfeld Neues Element hinzufügen die Option Multifunktionsleiste (Visual Designer) aus.
Ändern Sie den Namen der neuen Multifunktionsleiste in CustomerRibbon, und klicken Sie anschließend auf Hinzufügen.
Die Datei CustomerRibbon.cs oder CustomerRibbon.vb wird im Multifunktionsleisten-Designer geöffnet. Sie beinhaltet eine Standardregisterkarte und eine Gruppe.
Klicken Sie auf den Multifunktionsleisten-Designer, um diesen auszuwählen.
Klicken Sie im Menü Ansicht auf Eigenschaftenfenster.
Klicken Sie im Fenster Eigenschaften auf den Dropdownpfeil neben der RibbonType-Eigenschaft, und klicken Sie anschließend af Microsoft.Outlook.Mail.Compose.
Beim Erstellen einer neuen E-Mail-Nachricht in Outlook wird daraufhin wird die Multifunktionsleiste angezeigt.
Klicken Sie im Multifunktionsleisten-Designer auf Group1, um diese Option auszuwählen.
Legen Sie im Fenster Eigenschaften die Label-Eigenschaft auf Customer Purchases fest.
Ziehen Sie von der Registerkarte Steuerelemente für Office-Multifunktionsleisten der Toolbox ein Steuerelement mit der Bezeichnung ComboBox zur Gruppe Customer Purchases.
Klicken Sie auf ComboBox1, um das Element auszuwählen.
Legen Sie im Fenster Eigenschaften die Label-Eigenschaft auf Customers fest.
Ziehen Sie von der Registerkarte Steuerelemente für Office-Multifunktionsleisten der Toolbox ein Menü zur Gruppe Customer Purchases.
Legen Sie im Fenster Eigenschaften die Label-Eigenschaft auf Product Purchased fest.
Legen Sie Dynamic auf true fest.
Dadurch können Sie Steuerelemente für das Menü während der Laufzeit hinzufügen und entfernen, nachdem die Multifunktionsleiste in die Office-Anwendung geladen wurde.
Hinzufügen der benutzerdefinierten Gruppe zu einer integrierten Registerkarte
Eine integrierte Registerkarte ist eine Registerkarte, die sich bereits auf der Multifunktionsleiste eines Outlook-Inspektors befindet. In dieser Prozedur wird die benutzerdefinierte Gruppe einer integrierten Registerkarte hinzugefügt und anschließend die Position der benutzerdefinierten Gruppe auf der Registerkarte angegeben.
So fügen die benutzerdefinierte Gruppe einer integrierten Registerkarte hinzu
Klicken Sie auf die Registerkarte TabAddins (Integriert), um diese auszuwählen.
Erweitern Sie im Fenster Eigenschaften die ControlId-Eigenschaft, und legen Sie die OfficeId-Eigenschaft auf TabNewMailMessage fest.
Dadurch wird die Gruppe Customer Purchases der Registerkarte Nachrichten der Multifunktionsleiste hinzugefügt, die in einer neuen E-Mail-Nachricht angezeigt wird.
Klicken Sie auf die Gruppe Customer Purchases, um diese auszuwählen.
Erweitern Sie im Fenster Eigenschaften die Position-Eigenschaft, klicken Sie zuerst auf den Dropdownpfeil neben der PositionType-Eigenschaft und anschließend auf Microsoft.Outlook.Mail.Compose.
Legen Sie die OfficeId-Eigenschaft auf GroupClipBoard fest.
Dadurch wird die Gruppe Customer Purchases vor der Gruppe Zwischenablage der Registerkarte Nachrichten angeordnet.
Aktualisieren der Steuerelemente in der benutzerdefinierten Gruppe während der Laufzeit
Verwenden Sie das Multifunktionsleisten-Objektmodell zum Ausführen der folgenden Aufgaben:
Fügen Sie im Kombinationsfeld Customers Kundennamen hinzu.
Fügen Sie dem Menü Products Purchased Menü- und Kontrollkästchensteuerelemente hinzu, die Bestellungen und verkaufte Produkte darstellen.
Füllen Sie das Microsoft.Office.Interop.Outlook.MailItem.To, Microsoft.Office.Interop.Outlook.MailItem.Subject-Feld und das Microsoft.Office.Interop.Outlook.MailItem.Body-Feld neuer E-Mail-Nachrichten aus. Verwenden Sie dabei Daten aus dem Kombinationsfeld Customers und dem Menü Products Purchased.
So aktualisieren Sie Steuerelemente in der benutzerdefinierten Gruppe mithilfe des Multifunktionsleisten-Objektmodells
Klicken Sie im Menü Projekt auf Verweis hinzufügen.
Wählen Sie im Dialogfeld Verweis hinzufügen auf der Registerkarte .NET die System.Data.Linq aus-Assembly aus, und klicken Sie anschließend auf OK.
Diese Assembly beinhaltet Klassen für die Verwendung von Language-Integrated Queries (LINQ). Mit LINQ werden Steuerelemente in der benutzerdefinierten Gruppe mit Daten aus der AdventureWorks-Datenbank ausgefüllt. Weitere Informationen zu LINQ finden Sie unter Sprachintegrierte Abfrage (Language-Integrated Query, LINQ).
Klicken Sie im Projektmappen-Explorer auf CustomerRibbon.cs oder CustomerRibbon.vb, um diese Dateien auszuwählen.
Klicken Sie im Menü Code auf anzeigen.
Die Multifunktionsleisten-Codedatei wird im Code-Editor geöffnet.
Fügen Sie am Anfang der Multifunktionsleisten-Codedatei die folgenden Anweisungen hinzu. Diese Anweisungen ermöglichen einfachen Zugriff auf LINQ-Namespaces und auf den Namespace der primären Interopassembly (PIA) von Outlook.
Imports Microsoft.Office.Tools.Ribbon Imports System.Data.Linq Imports System.Linq Imports System.Data.Linq.Mapping Imports System.Linq.Expressions Imports Outlook = Microsoft.Office.Interop.Outlook
using System.Data.Linq; using System.Linq; using System.Data.Linq.Mapping; using System.Linq.Expressions; using Outlook = Microsoft.Office.Interop.Outlook; using System.IO;
Fügen Sie der Multifunktionsleisten-Codedatei die folgenden Klassen hinzu. Diese Klassen dienen zum Speichern von Informationen in den Tabellen für Kunden, Kontakte, Auftragsheader, Auftragsdetails und Produkte in der AdventureWorks-Datenbank.
' Customer Table. <Table(Name:="Sales.Customer")> _ Public Class Customer <Column(IsPrimaryKey:=True)> _ Public CustomerID As Integer End Class ' Contact Table. <Table(Name:="Person.Contact")> _ Public Class Contact <Column(IsPrimaryKey:=True)> _ Public ContactID As Integer <Column()> _ Public LastName As String End Class ' Sales Order Header Table. <Table(Name:="Sales.SalesOrderHeader")> _ Public Class SalesOrderHeader <Column(IsPrimaryKey:=True)> _ Public SalesOrderID As Integer <Column()> _ Public SalesOrderNumber As String <Column()> _ Public CustomerID As Integer End Class ' Sales Order Detail Table. <Table(Name:="Sales.SalesOrderDetail")> _ Public Class SalesOrderDetail <Column(IsPrimaryKey:=True)> _ Public SalesOrderDetailID As Integer <Column()> _ Public SalesOrderID As Integer <Column()> _ Public ProductID As Integer End Class ' Product Table. <Table(Name:="Production.Product")> _ Public Class Product <Column(IsPrimaryKey:=True)> _ Public ProductID As Integer <Column()> _ Public Name As String End Class ' Data Context Class. Partial Public Class AdventureWorks Inherits DataContext Public Customer As Table(Of Customer) Public Contact As Table(Of Contact) Public SalesOrderHeader As Table(Of SalesOrderHeader) Public SalesOrderDetail As Table(Of SalesOrderDetail) Public Product As Table(Of Product) Public Sub New(ByVal connection As String) MyBase.New(connection) End Sub End Class
// Customer Table. [Table(Name = "Sales.Customer")] public class Customer { [Column(IsPrimaryKey = true)] public int CustomerID; } // Contact Table. [Table(Name = "Person.Contact")] public class Contact { [Column(IsPrimaryKey = true)] public int ContactID; [Column] public string LastName; } // Sales Order Header Table. [Table(Name = "Sales.SalesOrderHeader")] public class SalesOrderHeader { [Column(IsPrimaryKey = true)] public int SalesOrderID; [Column] public string SalesOrderNumber; [Column] public int CustomerID; } // Sales Order Detail Table. [Table(Name = "Sales.SalesOrderDetail")] public class SalesOrderDetail { [Column(IsPrimaryKey = true)] public int SalesOrderDetailID; [Column] public int SalesOrderID; [Column] public int ProductID; } // Product Table. [Table(Name = "Production.Product")] public class Product { [Column(IsPrimaryKey = true)] public int ProductID; [Column] public string Name; } // Data Context Table. public partial class AdventureWorks : DataContext { public Table<Customer> Customer; public Table<Contact> Contact; public Table<SalesOrderHeader> SalesOrderHeader; public Table<SalesOrderDetail> SalesOrderDetail; public Table<Product> Product; public AdventureWorks(string connection) : base(connection) { } }
Ersetzen Sie die CustomerRibbon_Load-Ereignishandlermethode durch folgenden Code. In diesem Code wird für die folgenden Aufgaben eine LINQ-Abfrage verwendet:
Füllen Sie das Kombinationsfeld Customers mithilfe der ID und des Namens von zwanzig Kunden in der AdventureWorks-Datenbank aus.
Ruft die PopulateSalesOrderInfo-Hilfsmethode auf. Mit dieser Methode wird das Menü ProductsPurchased mit Verkaufauftragsnummern aktualisiert, die sich auf den derzeit ausgewählten Kunden beziehen.
Private Sub CustomerRibbon_Load(ByVal sender As System.Object, _ ByVal e As Microsoft.Office.Tools.Ribbon.RibbonUIEventArgs) _ Handles MyBase.Load Dim programFilesDir As String = Environment.GetFolderPath _ (Environment.SpecialFolder.ProgramFiles) Dim db As New AdventureWorks(programFilesDir + _ "\Microsoft SQL Server\" + "MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf") Dim customerQuery = From customers In db.Customer.Take(20), contact In db.Contact _ Where customers.CustomerID = contact.ContactID _ Select CustomerID = customers.CustomerID, LastName = _ contact.LastName ' Execute the query. For Each item In customerQuery Me.ComboBox1.Items.Add(New RibbonDropDownItem()) Me.ComboBox1.Items.Last().Label = item.CustomerID.ToString() _ + "|" + item.LastName Next item Me.ComboBox1.Text = Me.ComboBox1.Items.First().Label PopulateSalesOrderInfo() End Sub
private void CustomerRibbon_Load(object sender, RibbonUIEventArgs e) { string programFilesDir = Environment.GetFolderPath (Environment.SpecialFolder.ProgramFiles); AdventureWorks db = new AdventureWorks (programFilesDir + "\\Microsoft SQL Server\\" + "MSSQL.1\\MSSQL\\Data\\AdventureWorks_Data.mdf"); var customerQuery = from customers in db.Customer.Take(20) join contacts in db.Contact on customers.CustomerID equals contacts.ContactID select new { customers.CustomerID, contacts.LastName }; // Execute the query. foreach (var item in customerQuery) { this.comboBox1.Items.Add(new RibbonDropDownItem()); this.comboBox1.Items.Last().Label = item.CustomerID.ToString() + "|" + item.LastName; } this.comboBox1.Text = this.comboBox1.Items.First().Label; PopulateSalesOrderInfo(); }
Fügen Sie der CustomerRibbon-Klasse folgenden Code hinzu. In diesem Code werden für die folgenden Aufgaben LINQ-Abfragen verwendet:
Fügt dem Menü ProductsPurchased für jeden Verkaufsauftrag in Zusammenhang mit dem ausgewählten Kunden ein Untermenü hinzu.
Fügt jedem Untermenü Kontrollkästchen für die Produkte in Zusammenhang mit dem Verkaufsauftrag hinzu.
Fügt jedem Kontrollkästchen Ereignishandler hinzu.
Private Sub PopulateSalesOrderInfo() Dim tempArray As [String]() = comboBox1.Text.Split(New [Char]() {"|"c}) Menu1.Items.Clear() Dim programFilesDir As String = Environment.GetFolderPath _ (Environment.SpecialFolder.ProgramFiles) Dim db As New AdventureWorks(programFilesDir + _ "\Microsoft SQL Server\" + "MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf") Dim orderQuery = From orders In db.SalesOrderHeader _ Where orders.CustomerID.ToString() = tempArray(0) _ Select SalesOrderID = _ orders.SalesOrderID, SalesOrderNumber = _ orders.SalesOrderNumber For Each orderItem In orderQuery Dim Menu2 As New RibbonMenu() Menu2.Dynamic = True Menu1.Items.Add(Menu2) CType(Menu1.Items.Last(), RibbonMenu).Label = _ orderItem.SalesOrderNumber.ToString() CType(Menu1.Items.Last(), RibbonMenu).Tag = _ orderItem.SalesOrderID Dim productQuery = From orderDetail In db.SalesOrderDetail, _ product In db.Product _ Where orderDetail.ProductID = _ product.ProductID _ And orderDetail.SalesOrderID = _ orderItem.SalesOrderID _ Select productName = product.Name For Each productItem In productQuery CType(Menu1.Items.Last(), RibbonMenu).Items.Add _ (New RibbonCheckBox()) CType(CType(Menu1.Items.Last(), _ RibbonMenu).Items.Last(), RibbonCheckBox).Label = productItem AddHandler (CType(CType(Menu1.Items.Last(), _ RibbonMenu).Items.Last(), RibbonCheckBox).Click), AddressOf CheckBox_Click Next productItem Next orderItem End Sub
private void PopulateSalesOrderInfo() { String[] tempArray = comboBox1.Text.Split(new Char[] { '|' }); menu1.Items.Clear(); string programFilesDir = Environment.GetFolderPath (Environment.SpecialFolder.ProgramFiles); AdventureWorks db = new AdventureWorks (programFilesDir + "\\Microsoft SQL Server\\" + "MSSQL.1\\MSSQL\\Data\\AdventureWorks_Data.mdf"); var orderQuery = from orders in db.SalesOrderHeader where orders.CustomerID.ToString() == tempArray[0] select new { orders.SalesOrderID, orders.SalesOrderNumber }; foreach (var orderItem in orderQuery) { RibbonMenu menu2 = new RibbonMenu(); menu2.Dynamic = true; menu1.Items.Add(menu2); ((RibbonMenu)menu1.Items.Last()).Label = orderItem.SalesOrderNumber.ToString(); ((RibbonMenu)menu1.Items.Last()).Tag = orderItem.SalesOrderID; var productQuery = from orderDetail in db.SalesOrderDetail join product in db.Product on orderDetail.ProductID equals product.ProductID where orderDetail.SalesOrderID == orderItem.SalesOrderID select new { product.Name }; foreach (var productItem in productQuery) { ((RibbonMenu)menu1.Items.Last()).Items.Add (new RibbonCheckBox()); ((RibbonCheckBox)((RibbonMenu)menu1.Items.Last()). Items.Last()).Label = productItem.Name; ((RibbonCheckBox)((RibbonMenu)menu1.Items.Last()). Items.Last()).Click += new EventHandler<RibbonControlEventArgs>(checkBox_Click); } } }
Doppelklicken Sie im Projektmappen-Explorer auf die Multifunktionsleisten-Codedatei.
Der Multifunktionsleisten-Designer wird geöffnet.
Doppelklicken Sie im Multifunktionsleisten-Designer auf das Kombinationsfeld Customers.
Die Multifunktionsleisten-Codedatei wird im Code-Editor geöffnet, und der ComboBox1_TextChanged-Ereignishandler wird angezeigt.
Ersetzen Sie den ComboBox1_TextChanged-Ereignishandler durch folgenden Code. Mit diesen Code werden die folgenden Aufgaben ausgeführt:
Ruft die PopulateSalesOrderInfo-Hilfsmethode auf. Mit dieser Methode wird das Menü Products Purchased mit Verkaufsauftragsnummern aktualisiert, die sich auf den derzeit ausgewählten Kunden beziehen.
Ruft die PopulateMailItem-Hilfsmethode auf. Mit dieser Methode wird das Microsoft.Office.Interop.Outlook.MailItem.To-Feld, das Microsoft.Office.Interop.Outlook.MailItem.Subject-Feld und das Microsoft.Office.Interop.Outlook.MailItem.Body-Feld von neuen E-Mail-Nachrichten ausgefüllt.
Private Sub ComboBox1_TextChanged(ByVal sender As System.Object, _ ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _ Handles ComboBox1.TextChanged PopulateSalesOrderInfo() PopulateMailItem(ComboBox1.Text) End Sub
private void comboBox1_TextChanged(object sender, RibbonControlEventArgs e) { PopulateSalesOrderInfo(); PopulateMailItem(comboBox1.Text); }
Fügen Sie der CustomerRibbon-Klasse folgenden Code hinzu. Mit diesem Code wird der Name der ausgewählten Produkte dem Microsoft.Office.Interop.Outlook.MailItem.Body-Feld neuer E-Mail-Nachrichten hinzugefügt.
Private Sub CheckBox_Click(ByVal sender As System.Object, _ ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Dim application As Outlook.Application = Globals.ThisAddIn.Application Dim inspector As Outlook.Inspector = application.ActiveInspector() Dim myMailItem As Outlook.MailItem = CType(inspector.CurrentItem, _ Outlook.MailItem) Dim myCheckBox As RibbonCheckBox = CType(sender, RibbonCheckBox) myMailItem.Subject = "Following up on your order" myMailItem.Body = myMailItem.Body + ControlChars.Lf + "* " _ + myCheckBox.Label End Sub
private void checkBox_Click(object sender, RibbonControlEventArgs e) { Outlook.Application application = Globals.ThisAddIn.Application; Outlook.Inspector inspector = application.ActiveInspector(); Outlook.MailItem myMailItem = (Outlook.MailItem)inspector.CurrentItem; RibbonCheckBox myCheckBox = (RibbonCheckBox)sender; myMailItem.Subject = "Following up on your order"; myMailItem.Body = myMailItem.Body + "\n" + "* " + myCheckBox.Label; }
Fügen Sie der CustomerRibbon-Klasse folgenden Code hinzu. Mit diesen Code werden die folgenden Aufgaben ausgeführt:
Füllt die Microsoft.Office.Interop.Outlook.MailItem.To-Zeile neuer E-Mail-Nachrichten mithilfe der E-Mail-Adresse des derzeit ausgewählten Kunden aus.
Fügt dem Microsoft.Office.Interop.Outlook.MailItem.Subject-Feld und dem Microsoft.Office.Interop.Outlook.MailItem.Body-Feld neuer E-Mail-Nachrichten Text hinzu.
Private Sub PopulateMailItem(ByVal addressToLine As String) Dim application As Outlook.Application = Globals.ThisAddIn.Application Dim inspector As Outlook.Inspector = application.ActiveInspector() Dim myMailItem As Outlook.MailItem = _ CType(inspector.CurrentItem, Outlook.MailItem) myMailItem.To = "" Dim tempArray As [String]() = addressToLine.Split(New [Char]() {"|"c}) myMailItem.To = tempArray(1) + "@example.com" myMailItem.Subject = "Following up on your order" myMailItem.Body = "Hello " + tempArray(1) + "," myMailItem.Body = myMailItem.Body + ControlChars.Lf + _ "We would like to get your " + _ "feedback on the following products that you recently ordered: " End Sub
private void PopulateMailItem(string addressToLine) { Outlook.Application application = Globals.ThisAddIn.Application; Outlook.Inspector inspector = application.ActiveInspector(); Outlook.MailItem myMailItem = (Outlook.MailItem)inspector.CurrentItem; myMailItem.To = ""; String[] tempArray = addressToLine.Split(new Char[] { '|' }); myMailItem.To = tempArray[1] + "@example.com"; myMailItem.Subject = "Following up on your order"; myMailItem.Body = "Hello " + tempArray[1] + ","; myMailItem.Body = myMailItem.Body + "\n" + "We would like to get your " + "feedback on the following products that you recently ordered: "; }
Testen der Steuerelemente in der benutzerdefinierten Gruppe
Beim Öffnen eines neuen E-Mail-Formulars in Outlook wird auf der Registerkarte Nachrichten der Multifunktionsleiste eine benutzerdefinierte Gruppe mit der Bezeichnung Customer Purchases angezeigt.
Wählen Sie zum Erstellen einer Folge-E-Mail-Nachricht für Kunden einen Kunden und anschließend vom Kunden erworbene Produkte aus. Die Steuerelemente in der Gruppe Customer Purchases werden während der Laufzeit mit Daten aus der AdventureWorks-Datenbank aktualisiert.
So testen Sie die Steuerelemente in der benutzerdefinierten Gruppe
Drücken Sie F5, um das Projekt auszuführen.
Outlook wird gestartet.
Zeigen Sie in Outlook im Menü Datei auf Neu, und klicken Sie dann auf E-Mail-Nachricht.
Folgende Aktionen werden ausgeführt:
Ein neues Inspektorfenster für E-Mail-Nachrichten wird angezeigt.
Auf der Registerkarte Nachrichten der Multifunktionsleiste wird die Gruppe Customer Purchases vor der Gruppe Zwischenablage angezeigt.
Das Kombinationsfeld Customers in der Gruppe wird mit den Namen der Kunden in der AdventureWorks-Datenbank aktualisiert.
Wählen Sie auf der Registerkarte Nachrichten der Multifunktionsleiste in der Gruppe Customer Purchases im Kombinationsfeld Customers einen Kunden aus.
Folgende Aktionen werden ausgeführt:
Das Menü Products Purchased wird mit einem Menü aktualisiert, in dem jeder Verkaufsauftrag für den Kunden dargestellt wird.
Jedes Verkaufsauftragsmenü wird mit Kontrollkästchen aktualisiert, in denen die vom Kunden erworbenen Produkte dargestellt werden.
Die E-Mail-Adresse des ausgewählten Kunden wird der Zeile An der E-Mail-Nachricht hinzugefügt, und die Betreffzeile und der Textkörper der E-Mail-Nachricht werden mit Text ausgefüllt.
Klicken Sie im Menü Products Purchased auf einen beliebigen Verkaufsauftrag, und klicken Sie anschließend auf ein Produkt im Verkaufsauftrag.
Der Produktname wird dem Textkörper der E-Mail-Nachricht hinzugefügt.
Nächste Schritte
Weitere Informationen über das Anpassen der Office-Benutzeroberfläche finden Sie in diesen Themen:
Fügen Sie jeder Anpassung auf Dokumentebene kontextbasierte Benutzeroberfläche hinzu. Weitere Informationen finden Sie unter Aktionsbereichsübersicht.
Erweitern Sie ein standardmäßiges oder benutzerdefiniertes Microsoft Office Outlook-Formular. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Entwerfen eines Outlook-Formularbereichs.
Fügen Sie Outlook einen benutzerdefinierten Aufgabenbereich hinzu. Weitere Informationen hierzu finden Sie unter Übersicht über benutzerdefinierte Aufgabenbereiche.
Siehe auch
Aufgaben
Gewusst wie: Erste Schritte beim Anpassen der Multifunktionsleiste
Gewusst wie: Ändern der Reihenfolge von Registerkarten in der Multifunktionsleiste
Gewusst wie: Anpassen einer integrierten Registerkarte
Gewusst wie: Anpassen des Microsoft Office-Menüs
Gewusst wie: Anzeigen von Add-In-Benutzeroberflächenfehlern
Konzepte
Zugreifen auf die Multifunktionsleiste zur Laufzeit
Übersicht über die Multifunktionsleiste
Multifunktionsleisten-Designer