Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

РазработкаОфисныхЗаст

.pdf
Скачиваний:
5
Добавлен:
07.02.2016
Размер:
1.18 Mб
Скачать

41

вибрати команду Додати новий елемент. У діалоговому вікні Додавання нового елемента вибрати Стрічка (візуальний конструктор). Після цього в конструкторі стрічок відкриється файл MyRibbon.cs, відобразяться вкладка і група, що використовуються за замовчуванням;

б) у вікні Властивості розгорнути властивість ControlId, привласнити властивості ControlIdType значення Настроюваний, задати для властивості ControlId значення My Custom Tab;

в) у конструкторі стрічок обрати групу group1, а у вікні Властивості привласнити властивості Label значення "Диспетчер панелей дій", перетягнути кнопку з вкладки Елементи керування стрічки Office в панелі елементів у групу group1;

г) у вікні Властивості привласнити властивості Label кнопки button1 значення "Відобразити панель дій 1", додати другу кнопку в group1 і привласнити її властивості Label значення "Відобразити панель дій 2";

д) перетягнути елемент керування Вимикач з вкладки Елементи керування стрічки Office в панелі елементів у групу group1 та привласнити властивості Label значення "Приховати панель дій";

е) додати обробники подій для подій Click обох кнопок та події Click вимикача.

Для приховування та відображення панелей дій за допомогою кнопок налаштовуваної вкладки додайте наступний код у початок класу MyRibbon:

ActionsPaneControl1 actionsPane1=new ActionsPaneControl1 (); ActionsPaneControl2 actionsPane2=new ActionsPaneControl2 ();

Замініть метод MyRibbon_Load наступним кодом, що додає об'єкти панелей дій в колекцію панелей дій ActionsPane.Controls і приховує об'єкти:

private void MyRibbon_Load (object sender, RibbonUIEventArgs e)

{ Globals.ThisWorkbook.ActionsPane.Controls.Add (actionsPane1);

Globals.ThisWorkbook.ActionsPane.Controls.Add

(actionsPane2);

42

actionsPane1.Hide (); actionsPane2.Hide ();

Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPa ne = false;

this.button1.Click += new Microsoft.Office.Tools.Ribbon. RibbonControlEventHandler (this.button1_Click);

this.button2.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler (

this.button2_Click);

this.toggleButton1.Click += new Microsoft.Office.Tools. Ribbon.RibbonControlEventHandler (this.toggleButton1_Click);

}

Додайте наступні три методи обробників подій в клас MyRibbon. Ці методи обробляють події Click обох кнопок та події Click вимикача. Обробники подій button1 і button2 відображають відповідні панелі дій. Оброблювач подій toggleButton1 відображає і приховує активну панель дій.

private void button1_Click (object sender, RibbonControlEventArgs e) {Globals.ThisWorkbook.Application. DisplayDocumentActionTaskPane = true;

actionsPane2.Hide (); actionsPane1.Show (); ToggleButton1.Checked = false;

}

private void button2_Click (object sender, RibbonControlEventArgs e)

{ Globals.ThisWorkbook.Application. DisplayDocumentActionTaskPane = true;

actionsPane1.Hide (); actionsPane2.Show (); ToggleButton1.Checked = false;

}

private void toggleButton1_Click (object sender, RibbonControlEventArgs e)

{if (toggleButton1.Checked == true)

{Globals.ThisWorkbook.Application.

43

DisplayDocumentActionTaskPane = false;

}

else {Globals.ThisWorkbook.Application.DisplayDocumentActionTaskP ane = true;

}

}

2.2.3 Загальні відомості про об’єктну модель стрічки

Середовище виконання Visual Studio Tools for Office надає суворо типізовану об'єктну модель, яку можна використовувати для отримання та встановлення значень властивостей елементів керування стрічки під час виконання. Наприклад, можна динамічно наповнювати елементи керування меню, а також приховувати або показувати елементи керування залежно від контексту. Також на стрічку можна додавати вкладки, групи та елементи керування, але тільки до тих пір, поки стрічка не буде завантажена застосуванням Office.

Дана об'єктна модель стрічки в основному складається з класу стрічки, подій стрічки і класів елементів керування стрічки.

При додаванні в проект нового елемента Стрічка (візуальний конструктор) Visual Studio додає в проект клас стрічки. Якщо проект орієнтований на .NET Framework 4, клас стрічки є похідним від класу

RibbonBase.

Клас стрічки містить 3 події:

RibbonBase.Load: виникає при завантаженні налаштування стрічки застосуванням Office. У файл коду стрічки автоматично додається обробник подій Load, який використовується для виконання користувацького коду при завантаженні стрічки;

RibbonBase.LoadImage: дозволяє кешувати зображення в налаштуванні стрічки при її завантаженні. Якщо код буде налаштований на кешування зображень стрічки в цьому обробнику подій, це дозволить домогтися деякого поліпшення продуктивності;

RibbonBase.Close: виникає при закритті екземпляра стрічки.

Простір імен Microsoft.Office.Tools.Ribbon містить типи для

кожного елемента керування, що відображається у групі Елементи керування стрічки Office в панелі Панель елементів: RibbonBox (поле),

RibbonButton, RibbonButtonGroup, RibbonCheckBox, RibbonComboBox,

44

RibbonDropDown, RibbonEditBox, RibbonGallery (колекція), RibbonGroup, RibbonLabel, RibbonMenu, RibbonSeparator,

RibbonSplitButton, RibbonTab, RibbonToggleButton. Префікс "Ribbon"

використовується, щоб уникнути збігу з іменами класів елементів керування у просторі імен System.Windows.Forms.

При додаванні елемента керування в конструктор стрічки конструктор оголошує клас для цього елемента керування як поле у файлі коду конструктора стрічки.

Деякі властивості елементів керування стрічки можна встановити тільки до завантаження стрічки. Існує три місця для встановлення цих властивостей: у вікні Властивості Visual Studio, в конструкторі класу стрічки та в методі CreateRibbonExtensibilityObject

класу ThisAddin, ThisWorkbook або ThisDocument проекту.

Динамічні меню надають деякі винятки. Можна створювати нові елементи керування, задавати їх властивості і потім додавати їх в динамічне меню під час виконання, навіть після завантаження стрічки, яка містить меню. Властивості елементів керування, що додаються в динамічне меню, можна задавати в будь-який момент часу.

Наступний приклад додає до групи нову кнопку, якщо поточний час дорівнює 17:00 за тихоокеанським часом (UTC-8) або пізніше:

public Ribbon1 ()

: Base (Globals.Factory.GetRibbonFactory ()) {InitializeComponent ();

if (System.DateTime.Now.Hour> 16)

{ Microsoft.Office.Tools.Ribbon.RibbonButton button = this.Factory.CreateRibbonButton ();

button.Label = "New Button"; group1.Items.Add (button);

}

}

Для проектів, створених в Visual Studio 2010, конструктор відображається у файлі коду конструктора стрічок. Ім'я цього файлу

— YourRibbonItem.Designer.cs. Щоб відобразити цей файл у проектах Visual Basic, спочатку необхідно натиснути кнопку Показати всі файли у браузері рішень.

Властивості елемента керування стрічки можна задати шляхом

45

перевизначення методу CreateRibbonExtensibilityObject в класах

проекту ThisAddin, ThisWorkbook або ThisDocument.

Наступний приклад задає властивості стрічки в методі

CreateRibbonExtensibilityObject класу ThisWorkbook проекту робочої книги Excel:

protected override Microsoft.Office.Core. IRibbonExtensibility CreateRibbonExtensibilityObject () {bool myCondition = false;

if (myCondition == true)

{ Ribbon1 tempRibbon = new Ribbon1 (); tempRibbon.tab1.ControlId.ControlIdType =

Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office; tempRibbon.tab1.ControlId.OfficeId = "TabHome";

return Globals.Factory.GetRibbonFactory (). CreateRibbonManager ( new Microsoft.Office.Tools.Ribbon. IRibbonExtension[] {TempRibbon});

}

else

{ Ribbon2 tempRibbon = new Ribbon2 (); tempRibbon.tab1.ControlId.ControlIdType =

Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office; tempRibbon.tab1.ControlId.OfficeId = "TabInsert"; return Globals.Factory.GetRibbonFactory ().

CreateRibbonManager (new Microsoft.Office.Tools. Ribbon.IRibbonExtension[]{tempRibbon});

}

}

Властивості, які можна встановити тільки до завантаження стрічки: BoxStyle для RibbonBox, ButtonType для RibbonSplitButton, ColumnCount для RibbonGallery, ControlId для RibbonTab,

DialogLauncher для RibbonGroup, Dynamic для RibbonMenu, Global

для OfficeRibbon, Groups для RibbonTab, ImageName для RibbonButton, RibbonComboBox, RibbonDialogLauncher, RibbonDropDown, RibbonEditBox, RibbonGallery, RibbonMenu, RibbonSplitButton, RibbonToggleButton, ItemSize для RibbonMenu, RibbonSplitButton, MaxLength для RibbonComboBox, RibbonEditBox, Name для RibbonComponent, Position для RibbonButton,

46

RibbonCheckBox, RibbonGallery, RibbonGroup, RibbonMenu, RibbonSeparator, RibbonSplitButton, RibbonTab, RibbonToggleButton, RibbonType для OfficeRibbon, RowCount для RibbonGallery, ShowItemImage для RibbonComboBox, RibbonDropDown, RibbonGallery, ShowItemLabel для RibbonDropDown, RibbonGallery,

ShowItemSelection для RibbonGallery, SizeString для

RibbonComboBox, RibbonDropDown, RibbonEditBox, StartFromScratch для OfficeRibbon, Tabs для OfficeRibbon, Title для

RibbonSeparator.

Кожен клас елемента керування містить одну або декілька

подій: Click, TextChanged, ItemsLoading, ButtonClick, SelectionChanged, DialogLauncherClick. Обробники даних подій мають два параметри: sender та e (об'єкт RibbonControlEventArgs, що містить властивість Microsoft.Office.Core.IRibbonControl і використовується для доступу до будь-якої недоступної в об'єктній моделі стрічки властивості).

2.2.4 Робота зі стрічкою під час виконання

Об'єктна модель стрічки може використовуватись для оновлення елементів керування на стрічці після завантаження стрічки у застосування Office. Наприклад, створити елемент керування для стрічки під час виконання можна наступним чином:

private RibbonButton CreateRibbonButton ()

{RibbonButton button = this.Factory.CreateRibbonButton (); button.Click += new RibbonControlEventHandler

(button_Click); return button;

}

Існує можливість написання коду для відображення, приховування та зміни стрічки, а також надання користувачам можливості запуску коду з елементів керування налаштовуваної області задач, панелі дій. У наступному прикладі використовується клас Globals, щоб отримати доступ до користувальницької стрічки:

private void Access_All_Ribbons_Globals ()

{ Globals.Ribbons.Ribbon1.comboBox1.Text = "Hello World";}

47

Доступ до колекції стрічок можна отримати наступним чином:

private void Access_Ribbons_By_Inspector ()

{ThisRibbonCollection ribbonCollection = Globals.Ribbons [Globals.ThisAddIn.Application.ActiveInspector ()];

ribbonCollection.Ribbon1.comboBox1.Text = "Hello World";

}

Для зміни положення вкладки на стрічці:

у конструкторі стрічок виберіть користувацьку вкладку;

у вікні Властивості розгорніть властивість Position;

надайте відповідне значення властивості PositionType;

значення BeforeOfficeId розміщує групу перед зазначеною вбудованою вкладкою;

значення AfterOfficeId розміщує групу після зазначеної вбудованої вкладки;

привласніть властивості OfficeId значення ідентифікатора елемента керування вбудованої вкладки.

2.2.5 Налаштування вбудованої вкладки

Для додавання груп на вбудовану вкладку:

у Браузері рішень натисніть правою кнопкою миші на файл коду стрічки та виберіть пункт Конструктор уявлень;

у конструкторі стрічок натисніть правою кнопкою миші на будь-яку групу та виберіть пункт Властивості;

у вікні Властивості розгорніть властивість ControlId, потім привласніть властивості ControlIdType значення Office;

привласніть властивості OfficeId значення ідентифікатора елемента керування вбудованої вкладки, яку необхідно налаштувати;

перетягніть групи з вкладки Елементи керування стрічки Office в панелі елементів на вбудовану вкладку.

2.2.6 Налаштування меню Microsoft Office

У конструкторі стрічок можна додати елементи керування в меню, яке відкривається при виборі вкладки Файл (для Microsoft

48

Office 2010) або натисканні кнопки Microsoft Office (для Microsoft Office 2007). У проектах Office 2010 елементи керування, що додаються на вкладку Файл, відображаються у групі Надбудови. У проектах Office 2007 елементи керування можна розмістити поряд з будь-яким вбудованим елементом керування. Вбудованим елементом керування називається елемент, стандартно присутній в меню Microsoft Office. Наприклад, можна додати елемент керування після кнопки Зберегти.

У проектах Office 2010 неможливо розмістити елементи керування до або після вбудованих елементів керування, скориставшись конструктором стрічки в Visual Studio. Якщо потрібно розмістити елементи керування до або після вбудованих елементів керування, необхідно скористатися XML стрічкою.

Для додавання елементів керування в меню Microsoft Office:

відкрийте елемент стрічки в конструкторі;

у конструкторі стрічок виберіть вкладку Файл (для

Microsoft Office 2010) або натисніть кнопку Microsoft Office (для

Microsoft Office 2007), після чого відкривається конструктор меню, в області конструктора не містяться елементи керування;

перетягніть будь-які з наступних елементів керування зі вкладки Елементи керування стрічки Office панелі елементів в конструктор меню: Button, CheckBox, Gallery, Menu, Separator,

SplitButton, ToggleButton;

− щоб змінити положення елементів управління в меню, перетягніть їх відповідним чином.

У будь-яку групу стрічки можна додати кнопку запуску діалогового вікна. Для цього необхідно вибрати файл коду стрічки в Браузері рішень, потім в меню Вигляд вибрати Конструктор, а у конструкторі стрічок натиснути правою кнопкою миші будь-яку групу і вибрати команду Додати кнопку виклику діалогового вікна.

2.2.7 Експорт стрічок з конструктора стрічок в XML-стрічку

Елемент Стрічка (візуальний конструктор) підтримує не всі типи налаштувань стрічки. Щоб отримати доступ до додаткових налаштувань стрічок, можна експортувати стрічку з конструктора в XML-стрічку і внести зміни безпосередньо в XML.

49

Щоб виконати експорт стрічки з конструктора стрічок в XMLстрічку необхідно в браузері рішень натиснути правою кнопкою миші файл коду стрічки та вибрати пункт Конструктор уявлень, після чого натиснути правою кнопкою миші на конструктор стрічок і вибрати команду Експортувати стрічку в XML-стрічку.

Visual Studio додає XML-файл стрічки і файл XML-коду стрічки в проект. У класі коду стрічки розмістіть коментарі, що починаються з TODO:. Скопіюйте фрагмент коду в коментарях в класи ThisAddin, ThisWorkbook або ThisDocument, залежно від розроблюваного типу рішення. Скасуйте коментарі у класах ThisAddin, ThisWorkbook або

ThisDocument.

Після скасування коментарів код повинен виглядати приблизно наступним чином:

protected override Microsoft.Office.Core. IRibbonExtensibility CreateRibbonExtensibilityObject () { return new MyRibbon ();

}

Перейдіть до файлу XML-коду стрічки та знайдіть область Ribbon Callbacks. Тут записуються методи зворотного виклику для обробки дій користувача, наприклад, натискання кнопки. Створіть метод зворотного виклику для кожного обробника подій, записаного в коді конструктора стрічок. Перемістіть весь код обробника подій з обробників подій в методи зворотного виклику і змініть код для роботи з моделлю програмування коду розширюваності стрічки

(RibbonX).

2.2.8 XML-стрічки

Елемент Стрічка (XML) дозволяє налаштовувати стрічку за допомогою XML. При додаванні елементу Стрічка (XML) Visual Studio автоматично додає в проект такі файли:

XML-файл стрічки, де визначається користувальницький інтерфейс стрічки;

файл коду стрічки містить клас стрічки, а додатки Microsoft Office використовують екземпляр цього класу для завантаження користувальницької стрічки.

50

За замовчуванням ці файли додають призначену для користувача групу на вкладку стрічки Надбудови.

Після додавання в проект елемента Стрічка (XML), в клас

ThisAddin, ThisWorkbook або ThisDocument необхідно додати код, який перекриє метод CreateRibbonExtensibilityObject і поверне застосуванням Office екземпляр класу XML-стрічок.

У наступному прикладі перевизначається метод

CreateRibbonExtensibilityObject і повертається XML-клас стрічки з ім'ям MyRibbon:

protected override Microsoft.Office.Core. IRibbonExtensibility CreateRibbonExtensibilityObject () { return new MyRibbon ();

}

Методи зворотного виклику дозволяють реагувати на дії користувача (наприклад, натискання кнопки на стрічці). Методи зворотного виклику схожі на події елементів керування Windows Forms, але вони ідентифікуються за атрибутом у XML користувача інтерфейсу елемента. Методи створюються в класі стрічки, а елемент керування викликає той метод, ім'я якого збігається зі значенням атрибута. Наприклад, можна створити метод зворотного виклику, який буде викликатися, коли користувач натискає кнопку на стрічці. Методи зворотного виклику створюються в два етапи:

призначте елементу керування в XML-файлі стрічки атрибут, який ідентифікує метод зворотного виклику в коді;

визначте метод зворотного виклику в класі стрічки.

Щоб призначити метод зворотного виклику елементу керування в XML-файлі стрічки, додайте атрибут, який вказує тип методу зворотного виклику і назву методу. Наприклад, наступний елемент визначає вимикач, який має метод зворотного виклику onAction з

ім'ям OnToggleButton1:

<toggleButton id="toggleButton1" onAction="OnToggleButton1" />

Метод onAction викликається, коли користувач виконує основне завдання, пов'язане з конкретним елементом керування. Наприклад,