Sdílet prostřednictvím


Návod: Aktualizace ovládacích prvků na pásu karet za běhu

Tento návod ukazuje, jak pomocí objektového modelu pásu karet aktualizovat ovládací prvky na pásu karet po načtení pásu karet do aplikace Office lication.

Platí pro: Informace v tomto tématu platí pro projekty na úrovni dokumentů a projekty doplňků VSTO pro následující aplikace: Excel; InfoPath 2013 a InfoPath 2010; Aplikace outlook; Powerpoint; Projektu; Aplikace visio; Slovo. Další informace naleznete v tématu Funkce dostupné aplikace Office lication a typu projektu.

Příklad načte data z ukázkové databáze Northwind a naplní pole se seznamem a nabídku v aplikace Microsoft Office Outlook. Položky, které vyberete v těchto ovládacích prvcích, automaticky vyplní pole, jako je To a Předmět v e-mailové zprávě.

Tento návod znázorňuje následující úlohy:

  • Vytvořte nový projekt doplňku VSTO aplikace Outlook.

  • Návrh vlastní skupiny pásu karet

  • Přidejte vlastní skupinu na integrovanou kartu.

  • Aktualizujte ovládací prvky na pásu karet za běhu.

Poznámka:

Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace naleznete v tématu Přizpůsobení integrovaného vývojového prostředí sady Visual Studio.

Požadavky

K dokončení tohoto návodu budete potřebovat následující komponenty:

Vytvoření nového projektu doplňku VSTO aplikace Outlook

Nejprve vytvořte projekt doplňku VSTO aplikace Outlook.

Vytvoření nového projektu doplňku VSTO aplikace Outlook

  1. V sadě Visual Studio vytvořte projekt doplňku VSTO aplikace Outlook s názvem Ribbon_Update_At_Runtime.

  2. V dialogovém okně Nový projekt vyberte Vytvořit adresář pro řešení.

  3. Uložte projekt do výchozího adresáře projektu.

    Další informace naleznete v tématu Postupy: Vytváření projektů Office v sadě Visual Studio.

Návrh vlastní skupiny pásu karet

Pás karet pro tento příklad se zobrazí, když uživatel vytvoří novou e-mailovou zprávu. Pokud chcete vytvořit vlastní skupinu pro pás karet, nejdřív do projektu přidejte položku pásu karet a pak vytvořte skupinu v Návrháři pásu karet. Tato vlastní skupina vám pomůže generovat následné e-mailové zprávy zákazníkům tak, že z databáze načítá jména a historii objednávek.

Návrh vlastní skupiny

  1. V nabídce Projekt klepněte na tlačítko Přidat novou položku.

  2. V dialogovém okně Přidat novou položku vyberte pás karet (Vizuální návrhář).

  3. Změňte název nového pásu karet na CustomerRibbon a potom klikněte na Přidat.

    Soubor CustomerRibbon.cs nebo CustomerRibbon.vb se otevře v Návrháři pásu karet a zobrazí výchozí kartu a skupinu.

  4. Kliknutím na Návrhář pásu karet ho vyberte.

  5. V okně Vlastnosti klikněte na šipku rozevíracího seznamu vedle vlastnosti RibbonType a potom klikněte na Microsoft.Outlook.Mail.Compose.

    Díky tomu se pás karet zobrazí, když uživatel v Outlooku vytvoří novou e-mailovou zprávu.

  6. V Návrháři pásu karet klikněte na Group1 a vyberte ho.

  7. V okně Vlastnosti nastavte Popisek na Nákupy zákazníků.

  8. Na kartě Ovládací prvky pásu karet Office na panelu nástrojů přetáhněte pole Se seznamem do skupiny Zákaznické nákupy.

  9. Kliknutím na pole ComboBox1 ho vyberte.

  10. V okně Vlastnosti nastavte popisek na Zákazníci.

  11. Na kartě Ovládací prvky pásu karet Office na panelu nástrojů přetáhněte nabídku do skupiny Zákaznické nákupy.

  12. V okně Vlastnosti nastavte Popisek na Zakoupený produkt.

  13. Nastavte dynamickou hodnotu na true.

    To umožňuje přidávat a odebírat ovládací prvky v nabídce za běhu po načtení pásu karet do aplikace Office lication.

Přidání vlastní skupiny na integrovanou kartu

Integrovaná karta je karta, která už je na pásu karet Průzkumníka Outlooku nebo inspektoru. V tomto postupu přidáte vlastní skupinu na integrovanou kartu a pak určíte pozici vlastní skupiny na kartě.

Přidání vlastní skupiny na předdefinované kartě

  1. Kliknutím na kartu TabAddins (Předdefinované) ji vyberte.

  2. V okně Vlastnosti rozbalte vlastnost ControlId a pak nastavte OfficeId na TabNewMailMessage.

    Tím se skupina Customer Purchases přidá na kartu Zprávy na pásu karet, která se zobrazí v nové e-mailové zprávě.

  3. Kliknutím na skupinu Zákaznické nákupy ji vyberte.

  4. V okně Vlastnosti rozbalte vlastnost Position, klepněte na rozevírací šipku vedle PositionType vlastnost a potom klepněte na tlačítko BeforeOfficeId.

  5. Nastavte vlastnost OfficeId na GroupClipboard.

    Tím se skupina Customer Purchases umístí před skupinu Schránka na kartě Zprávy .

Vytvoření zdroje dat

Pomocí okna Zdroje dat přidejte do projektu typovou datovou sadu.

Vytvoření zdroje dat

  1. V nabídce Data klepněte na tlačítko Přidat nový zdroj dat.

    Spustí se Průvodce konfigurací zdroje dat.

  2. Vyberte Databázi a potom klepněte na tlačítko Další.

  3. Vyberte Datovou sadu a potom klikněte na Další.

  4. Vyberte datové připojení k ukázkové databázi Microsoft SQL Server Compact 4.0 pro Northwind nebo přidejte nové připojení pomocí tlačítka Nový Připojení ion.

  5. Po výběru nebo vytvoření připojení klikněte na tlačítko Další.

  6. Kliknutím na Tlačítko Další uložte připojovací řetězec.

  7. Na stránce Zvolit databázové objekty rozbalte tabulky.

  8. Zaškrtněte políčko vedle každé z následujících tabulek:

    1. Zákazníci

    2. Podrobnosti objednávky

    3. Objednávky

    4. Produkty

  9. Klikněte na Finish (Dokončit).

Aktualizace ovládacích prvků ve vlastní skupině za běhu

K provedení následujících úloh použijte objektový model pásu karet:

  • Do pole se seznamem Zákazníci přidejte jména zákazníků.

  • Přidat ovládací prvky nabídky a tlačítka do nabídky Zakoupené produkty, které představují prodejní objednávky a prodané produkty.

  • Vyplňte pole Komu, Předmět a Text nových e-mailových zpráv pomocí dat ze pole Se seznamem Zákazníci a Nabídka Zakoupené produkty.

Aktualizace ovládacích prvků ve vlastní skupině pomocí objektového modelu pásu karet

  1. V nabídce Projekt klepněte na tlačítko Přidat odkaz.

  2. V dialogovém okně Přidat odkaz klepněte na kartu .NET , vyberte system.Data.Linq sestavení a klepněte na tlačítko OK.

    Toto sestavení obsahuje třídy pro použití jazykově integrovaných dotazů (LINQ). LinQ použijete k naplnění ovládacích prvků ve vlastní skupině daty z databáze Northwind.

  3. V Průzkumník řešení ho vyberte kliknutím na CustomerRibbon.cs nebo CustomerRibbon.vb.

  4. V nabídce Zobrazení klepněte na tlačítko Kód.

    Soubor kódu pásu karet se otevře v Editoru kódu.

  5. Na začátek souboru kódu pásu karet přidejte následující příkazy. Tyto příkazy poskytují snadný přístup k oborům názvů LINQ a k oboru názvů primárního sestavení vzájemné spolupráce aplikace Outlook (PIA).

    using System.Data.Linq;
    using System.Data.Linq.Mapping;
    using System.Linq.Expressions;
    using Outlook = Microsoft.Office.Interop.Outlook;
    using System.Data;
    using System.IO;
    using Ribbon_Update_At_Runtime.Northwind40DataSetTableAdapters;
    
  6. Do třídy přidejte následující kód CustomerRibbon . Tento kód deklaruje datové tabulky a adaptéry tabulek, které použijete k ukládání informací z tabulek Zákazník, Objednávky, Podrobnosti objednávky a Produktů databáze Northwind.

    //Declare the Northwind dataset.
    Northwind40DataSet nwDataSet = new Northwind40DataSet();
    
    //Declare the data tables.
    
    Northwind40DataSet.CustomersDataTable customerTable;
    Northwind40DataSet.OrdersDataTable orderTable;
    Northwind40DataSet.Order_DetailsDataTable orderDetailsTable;
    Northwind40DataSet.ProductsDataTable productsTable;
    
    //Declare the data table adapters for each table.
    
    CustomersTableAdapter customerTableAdapter = new CustomersTableAdapter();
    OrdersTableAdapter ordersTableAdapter = new OrdersTableAdapter();
    Order_DetailsTableAdapter detailsTableAdapter = new Order_DetailsTableAdapter();
    ProductsTableAdapter productsTableAdapter = new ProductsTableAdapter();
    
  7. Do třídy přidejte následující blok kódu CustomerRibbon . Tento kód přidá tři pomocné metody, které vytvářejí ovládací prvky pro pás karet za běhu.

    private RibbonDropDownItem CreateRibbonDropDownItem()
    {
        return this.Factory.CreateRibbonDropDownItem();
    }
    private RibbonMenu CreateRibbonMenu()
    {
        return this.Factory.CreateRibbonMenu();
    }
    private RibbonButton CreateRibbonButton()
    {
        RibbonButton button = this.Factory.CreateRibbonButton();
        button.Click += new RibbonControlEventHandler(button_Click);
        return button;
    }
    
  8. Nahraďte metodu CustomerRibbon_Load obslužné rutiny události následujícím kódem. Tento kód používá k provádění následujících úloh dotaz LINQ:

    • Vyplňte pole se seznamem Zákazníci pomocí ID a názvu 20 zákazníků v databázi Northwind.

    • Volá pomocnou metodu PopulateSalesOrderInfo . Tato metoda aktualizuje nabídku ProductsPurchased čísly prodejních objednávek, které se týkají aktuálně vybraného zákazníka.

      private void CustomerRibbon_Load(object sender, RibbonUIEventArgs e)
      {
          customerTable = nwDataSet.Customers;
          customerTableAdapter.Fill(customerTable);
      
          var customerQuery = from customers in customerTable.AsEnumerable().Take(20)
                              select new
                              {
                                  CustomerID = customers.Field<string>("Customer ID"),
                                  CustomerName = customers.Field<string>("Contact Name")
                              };
      
      
          // Execute the query.
          foreach (var item in customerQuery)
          {
              this.comboBox1.Items.Add(CreateRibbonDropDownItem());
              this.comboBox1.Items.Last().Label =
              item.CustomerName + "|" + item.CustomerID.ToString();
          }
          this.comboBox1.Text = this.comboBox1.Items.First().Label;
          PopulateSalesOrderInfo();
      }
      

  9. Do třídy CustomerRibbon přidejte následující kód. Tento kód používá dotazy LINQ k provádění následujících úloh:

    • Přidá podnabídku do nabídky ProductsPurchased pro každou prodejní objednávku související s vybraným zákazníkem.

    • Přidá tlačítka do každé podnabídky pro produkty související s prodejní objednávkou.

    • Přidá obslužné rutiny událostí do každého tlačítka.

      private void PopulateSalesOrderInfo()
      {
          String[] tempArray = comboBox1.Text.Split(new Char[] { '|' });
          menu1.Items.Clear();
      
          orderTable = nwDataSet.Orders;
          orderDetailsTable = nwDataSet.Order_Details;
          productsTable = nwDataSet.Products;
      
          ordersTableAdapter.Fill(orderTable);
          detailsTableAdapter.Fill(orderDetailsTable);
          productsTableAdapter.Fill(productsTable);
      
          var orderQuery = from orders in orderTable.AsEnumerable()
                           where orders.Field<string>("Customer ID") == tempArray[1]
                           select new { OrderID = orders.Field<int>("Order ID") };
      
          foreach (var orderItem in orderQuery)
          {
              menu1.Items.Add(CreateRibbonMenu());
      
              RibbonMenu orderMenu = (RibbonMenu)menu1.Items.Last();
              orderMenu.Dynamic = true;
              orderMenu.Label = orderItem.OrderID.ToString();
              orderMenu.Tag = orderItem.OrderID;
      
              var productQuery = from orderDetail in orderDetailsTable.AsEnumerable()
                                 join product in productsTable.AsEnumerable() on
                                     orderDetail.Field<int>("Product ID")
                                 equals product.Field<int>("Product ID")
                                 where orderDetail.Field<int>("Order ID") ==
                                     orderItem.OrderID
                                 select new { ProductName = product.Field<string>("Product Name") };
      
              foreach (var productItem in productQuery)
              {
                  RibbonButton button = CreateRibbonButton();
                  button.Label = productItem.ProductName;
                  orderMenu.Items.Add(button);
              }
          }
      }
      

  10. V Průzkumník řešení poklikejte na soubor s kódem pásu karet.

    Otevře se Návrhář pásu karet.

  11. V Návrháři pásu karet poklikejte na pole Se seznamem Zákazníci .

    Soubor kódu pásu karet se otevře v Editoru kódu a zobrazí se obslužná rutina ComboBox1_TextChanged události.

  12. Obslužnou rutinu ComboBox1_TextChanged události nahraďte následujícím kódem. Tento kód provádí následující úlohy:

    • Volá pomocnou metodu PopulateSalesOrderInfo . Tato metoda aktualizuje nabídku Zakoupené produkty s prodejními objednávkami, které se vztahují k vybranému zákazníkovi.

    • Zavolá pomocnou metodu PopulateMailItem a předá aktuální text, což je vybrané jméno zákazníka. Tato metoda naplní pole To, Předmět a Text nových e-mailových zpráv.

      private void comboBox1_TextChanged(object sender,
          RibbonControlEventArgs e)
      {
          PopulateSalesOrderInfo();
          PopulateMailItem(comboBox1.Text);
      }
      

  13. Do třídy přidejte následující Click obslužnou rutinu CustomerRibbon události. Tento kód přidá název vybraných produktů do pole Text nových e-mailových zpráv.

    void button_Click(object sender, RibbonControlEventArgs e)
    {
        Outlook.Application application = Globals.ThisAddIn.Application;
        Outlook.Inspector inspector = application.ActiveInspector();
        Outlook.MailItem myMailItem = (Outlook.MailItem)inspector.CurrentItem;
        RibbonButton myCheckBox = (RibbonButton)sender;
        myMailItem.Subject = "Following up on your order";
        myMailItem.Body = myMailItem.Body + "\n" + "* " + myCheckBox.Label;
    }
    
  14. Do třídy CustomerRibbon přidejte následující kód. Tento kód provádí následující úlohy:

    • Naplní řádek To nových e-mailových zpráv pomocí e-mailové adresy aktuálně vybraného zákazníka.

    • Přidá text do polí Předmět a Text nových e-mailových zpráv.

      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[0] + "@example.com";
          myMailItem.Subject = "Following up on your order";
          myMailItem.Body = "Hello " + tempArray[0] + "," +
              "\n" + "We would like to get your feedback on the " +
              "following products that you recently ordered: ";
      }
      

Testování ovládacích prvků ve vlastní skupině

Když v Outlooku otevřete nový poštovní formulář, zobrazí se na kartě Zprávy na pásu karet vlastní skupina s názvem Customer Purchases (Nákupy zákazníků).

Pokud chcete vytvořit e-mailovou zprávu pro následné odeslání zákazníka, vyberte zákazníka a pak vyberte produkty zakoupené zákazníkem. Ovládací prvky ve skupině Customer Purchases se aktualizují za běhu daty z databáze Northwind.

Otestování ovládacích prvků ve vlastní skupině

  1. Stisknutím klávesy F5 spusťte projekt.

    Spustí se Outlook.

  2. V Aplikaci Outlook přejděte v nabídce Soubor na příkaz Nový a potom klikněte na položku Pošta.

    Proběhnou následující akce:

    • Zobrazí se nové okno inspektoru poštovní zprávy.

    • Na kartě Zpráva na pásu karet se skupina Zákaznické nákupy zobrazí před skupinou Schránka.

    • Pole Se seznamem Zákazníci ve skupině se aktualizuje o jména zákazníků v databázi Northwind.

  3. Na kartě Zpráva na pásu karet ve skupině Nákupy zákazníků vyberte zákazníka ze pole se seznamem Zákazníci.

    Proběhnou následující akce:

    • Nabídka Zakoupené produkty se aktualizuje tak, aby zobrazovala každou prodejní objednávku pro vybraného zákazníka.

    • Každá podnabídka prodejní objednávky se aktualizuje tak, aby zobrazovala produkty zakoupené v této objednávce.

    • E-mailová adresa vybraného zákazníka se přidá do řádku Do e-mailové zprávy a předmět a text e-mailové zprávy se vyplní textem.

  4. Klikněte na nabídku Nákupy produktů, přejděte na libovolnou prodejní objednávku a potom klikněte na produkt z prodejní objednávky.

    Název produktu se přidá do textu e-mailové zprávy.

Další kroky

Další informace o přizpůsobení uživatelského rozhraní Office najdete v těchto tématech:

  • Přidejte kontextové uživatelské rozhraní k libovolnému přizpůsobení na úrovni dokumentu. Další informace najdete v tématu Přehled podokna Akce.

  • Rozšíření standardního nebo vlastního formuláře aplikace Microsoft Office Outlook Další informace naleznete v tématu Návod: Návrh oblasti formuláře aplikace Outlook.

  • Přidejte do Outlooku vlastní podokno úloh. Další informace naleznete v tématu Vlastní podokna úloh.