ntip» onAction=«OnClick»=«HappyFace» />
Малюнок 1 XML-файл визначення стрічки
В автоматично створеному визначенні стрічки, функція зворотного виклику визначається для події завантаження onLoad стрічки і дії onAction для кнопки. Щоб обробляти ці зворотні виклики, необхідно змінити методи, сформовані в класі Ribbon1. Клас Ribbon1 був створений при додаванні елемента підтримки стрічки. Клас Ribbon1 реалізує інтерфейс IRibbonExtensibility, який передається в Office за запитом.
Стрічка Office використовує наступну модель запиту служби: Office викликає метод RequestService і запитує наявність класу реалізовує інтерфейс IRibbonExtensibility. Після відправки у відповідь екземпляра класу Ribbon1, Office використовує цей екземпляр для зворотних викликів.
Код для обробки методу RequestService вже записаний при додаванні елемента підтримки стрічки. Далі Розкоментувати неповний код класу у верхній частині файлу Ribbon1. Потім написані методи обробки зворотних викликів. У зворотному виклику OnLoad Office передає посилання на екземпляр Ribbon. Цю посилання можна зберегти на той випадок, коли необхідно зробити стрічку недійсною.
Єдиний спосіб оновити стрічку полягає в тому, щоб зробити її недійсною. При оголошенні стрічки недійсною, Office скасовує всі зворотні виклики для стрічки, що вимагає оновлення. Крім того, можна зробити недійсним окремий елемент управління для виборчої обробки:
Private ribbon As Office.IRibbonUISub OnLoad (ByVal ribbonUI As Office.IRibbonUI). ribbon=ribbonUISub
У зворотному виклику OnClick для кнопки використаний клас Globals, щоб отримати посилання на клас ThisAddIn. Визовается підпрограма створення нової презентації CreateNewPresentation, щоб створити нову презентацію і виконати всі дії:
Public Sub OnClick (ByVal control As Office.IRibbonControl). ThisAddIn.CreateNewPresentation () Sub
3.5.5 Додавання елементів керування на стрічку
На першому етапі проектування надбудови розміщуються елементи управління на стрічці.
/ * У конструкторі стрічки крім автоматично згенерованої функції InitializeComponent (); ми написали власну функцію, яка програмно додає на стрічку 60 кнопок по 20 в кожну з 3-х груп * /
public Ribbon1 ()
: base (Globals.Factory.GetRibbonFactory ())
{(); ();
}
Додавання на стрічку елементів управління
/ * Це колекція всіх створюваних кнопок * /
System.Collections.Generic.List buttons=new.Collections.Generic.List (); void CreateButtons ()
{
/ / Зовнішній цикл за групами (int j=1; j <= 3; j + +) / / лічильник групи
/ / внутрішній цикл, в якому відбувається додавання кнопки до групи, № якої визначений зовнішнім циклом
for (int i=0; i <20; i + +)