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

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

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

131

При зіставленні стовпців об'єкту DataTable також можна вказати, щоб певні стовпці НЕ були прив'язані до даних, передавши порожній рядок. Після цього в елемент керування ListObject додається новий стовпець, не прив'язаний до даних.

Щоб вказати місце, у яке додається неспівставлений стовпець, використовуйте порожній рядок; в даному випадку цей стовпець розташований між стовпцем посади та стовпцем прізвища:

this.list1.SetDataBinding (table, "", "Title", "", "LastName", "FirstName");

Можна використовувати прив'язку даних в якості способу швидкого додавання даних у документ. Після виконання прив'язки даних до об'єкта списку можна відключити об'єкт списку, щоб об'єкт відображав дані, але більше не був прив'язаний до джерела даних.

Для прив'язки даних до елементу керування ListObject створіть на рівні класу об'єкт DataTable:

System.Data.DataTable table = new System.Data.DataTable ("Employees");

Додайте стовпці і дані в обробник подій Startup класу Sheet1 (для проекту рівня документа) або класу ThisAddIn (для проекту рівня застосування):

table.Columns.Add ("FirstName", typeof (string)); table.Columns.Add ("LastName", typeof (string)); table.Columns.Add ("Title", typeof (string)); table.Rows.Add ("Nancy", "Anderson", "Sales

Representative");

table.Rows.Add ("Robert", "Brown", "Sales Representative");

Викличте метод SetDataBinding і передайте в якості параметрів імена стовпців в порядку їх відображення. Порядок стовпців в об'єкті списку може відрізнятися від порядку їх появи в об'єкті DataTable.

list1.AutoSetDataBoundColumnHeaders = true; list1.SetDataBinding (table, null, "LastName",

"FirstName");

132

Для відключення елементів керування ListObject від джерела даних викличте метод Disconnect аркуша List1:

list1.Disconnect ();

5.2.4 Елемент керування NamedRange

Елемент керування NamedRange являє собою діапазон з унікальним ім'ям, подіями і можливістю прив'язки до даних.

У проектах на рівні документа можна додати елементи керування NamedRange на аркуш Microsoft Office Excel під час розробки або під час виконання. У надбудові рівня застосування елементи керування NamedRange додаються на аркуш під час виконання.

Елементи керування NamedRange можуть складатися тільки з діапазонів на певних аркушах. Елементи керування NamedRange не можуть мати відносних імен, які можна застосувати для всіх аркушів, і вони не можуть складатися з діапазонів, що тягнуться на декількох аркушах у книзі (тривимірні діапазони).

Елементи керування NamedRange підтримують тільки просту прив'язку даних. Елемент керування ListObject може використовуватися для складної прив'язки даних.

Елемент керування NamedRange може бути прив'язаний до джерела даних за допомогою властивостей DataBindings. Типовоюю властивістю прив'язки даних елемента керування NamedRange є

Value2.

Якщо дані в прив'язаному наборі оновлюються яким-небудь способом, зміни відображаються в елементі керування NamedRange.

Форматування, яке може застосовуватися до елемента

Microsoft.Office.Interop.Excel.Range, може застосовуватися до

елемента керування Microsoft.Office.Tools.Excel.NamedRange. Це включає границі, шрифти, числовий формат та стилі.

При додаванні елемента керування NamedRange на аркуш з панелі елементів Visual Studio автоматично створює ім'я для елемента керування. Ім'я можна змінити у вікні Властивості.

Для елемента керування NamedRange доступні наступні події: BeforeDoubleClick, BeforeRightClick, BindingContextChanged, Change, Deselected, Disposed, Selected, SelectionChange

133

Існує декілька способів додавання елементів керування NamedRange на аркуш в проекті рівня документа під час розробки: з Excel, з панелі елементів Visual Studio і з вікна Джерела даних.

Для додавання елемента керування NamedRange ведучої програми з використанням поля "Ім'я" додатка Excel виділіть клітинки, які необхідно включити в іменований діапазон, а у полі Ім'я введіть ім'я діапазону.

Елементи керування NamedRange можна додавати на аркуш програмними засобами під час виконання. Це дозволяє створювати елементи керування ведучої програми при виникненні певних подій. Динамічно створені іменовані діапазони не зберігаються як ведучі елементи керування на аркуші при його закритті.

У обробнику подій Startup аркуша Sheet1 вставте наступний код для додавання елемента керування NamedRange в клітинку A1 і присвоювання значення його властивості Value2:

Microsoft.Office.Tools.Excel.NamedRange textInCell; textInCell = this.Controls.AddNamedRange (this.get_Range

("A1", missing), "cellText"); textInCell.Value2 = "Hello world!";

Елемент керування NamedRange можна програмними засобами додавати на будь-який відкритий аркуш в проекті рівня застосування:

private void AddNamedRange ()

{Microsoft.Office.Tools.Excel.NamedRange textInCell; Worksheet worksheet = Globals.Factory.GetVstoObject (

Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]); Excel.Range cell = worksheet.Range["A1", missing]; textInCell = worksheet.Controls.AddNamedRange (cell,

"MyNamedRange");

textInCell.Value2 = "Hello World";

}

Розглянемо додавання елемента керування NamedRange в аркуш Microsoft Office Excel і створення коду для його подій за допомогою засобів розробки Office в Visual Studio.

Оскільки елементи керування ведучої програми є розширеними об'єктами Office, їх можна додавати в документ таким же чином, як

134

додається власний об'єкт. Наприклад, можна додати в аркуш елемент керування Excel NamedRange, відкривши меню Вставка, помістивши покажчик на пункт Ім'я та вибравши Визначити. Можна також додати елемент керування NamedRange, перетягнувши його в аркуш з панелі елементів.

Додамо на аркуш два елементи керування іменованого діапазону. Для цього необхідно перетягнути елемент керування NamedRange у комірку A1 на аркуші Sheet1, після чого відкривається діалогове вікно Додавання елемента керування NamedRange. Переконайтеся, що в редагованому текстовому полі відображається $ A $ 1, і комірка A1 вибрана. Натисніть кнопку ОК. Комірка A1 стає діапазоном namedRange1. Додайте інший елемент керування

NamedRange в клітинку B3.

У клітинку A1 введіть “ Це приклад елемента керування

NamedRange.”, а в клітинку A3 (зліва від namedRange2) – “ Події:”

Доповніть код, щоб обробник подій namedRange1_BeforeDoubleClick виглядав наступним чином:

private void namedRange1_BeforeDoubleClick (Microsoft. Office.Interop.Excel.Range Target, ref bool Cancel)

{ this.namedRange2.Value2 = "The BeforeDoubleClick event occurred.";

this.namedRange2.Font.Color = System.Drawing. ColorTranslator.ToOle (System.Drawing.Color.Red);

this.namedRange2.Font.Italic = true;

}

Додайте обробники подій для іменованих діапазонів, як показано в описі події Startup:

this.namedRange1.BeforeDoubleClick += new Microsoft.Office. Interop.Excel.DocEvents_BeforeDoubleClickEventHandler (namedRange1_BeforeDoubleClick);

this.namedRange1.Change += new Microsoft.Office.Interop. Excel.DocEvents_ChangeEventHandler (namedRange1_Change);

this.namedRange1.SelectionChange += new Microsoft.Office. Interop.Excel.DocEvents_SelectionChangeEventHandler (namedRange1_SelectionChange);

135

Доповніть код, щоб обробник подій NamedRange1_Change виглядав наступним чином:

private void namedRange1_Change (Microsoft.Office.Interop.Excel.Range Target)

{this.namedRange2.Value2 = "The Change event occurred."; this.namedRange2.Font.Color = System.Drawing.

ColorTranslator.ToOle (System.Drawing.Color.Blue); this.namedRange2.Font.Italic = false;

}

Доповніть код, щоб обробник подій

NamedRange1_SelectionChange виглядав наступним чином:

private void namedRange1_SelectionChange (Microsoft.Office.Interop.Excel.Range Target)

{ this.namedRange2.Value2 = "The SelectionChange event occurred.";

this.namedRange2.AddComment ("SelectionChange always occurs before BeforeDoubleClick.");

this.namedRange2.Font.Color = System.Drawing. ColorTranslator.ToOle (System.Drawing.Color.Black);

}

5.3 Порядок виконання роботи

5.3.1Ознайомитися з рекомендованою літературою за темою

роботи.

5.3.2Створити проект рівня документа Excel.

5.3.3Додати в проект елемент «Стрічка (візуальний конструктор)».

5.3.4Додати на стрічку вкладку користувача, використовуючи своє прізвище для заголовку вкладки.

5.3.5Додати на вкладку користувача три групи: «Chart»,

«ListObject» і «NamedRange».

5.3.6 У групу «Chart» додати елементи керування і назначити обробники їх подій так, щоб це дозволило виконувати сценарії демонстрації роботи з діаграмами. Аналогічно для групи «ListObject»

— для демонстрації роботи з елементами ListObject та для групи

136

«NamedRange» — для демонстрації роботи з елементами NamedRange. 5.3.7 Додати в проект три елемента керування користувача

«ChartUserControl», «ListObjectUserControl» і «NamedRangeUserControl». Додати елементи керування в елементи керування користувача і призначити обробники їх подій так, щоб це дозволило виконувати сценарії демонстрації роботи з діаграмами, з елементами ListObject та з елементами NamedRange відповідно, як це було зроблено для груп вкладки стрічки.

5.3.8Додати кнопки запуску діалогового вікна в групи вкладки

стрічки.

5.3.9Призначити обробники подій для кнопок запуску діалогового вікна груп таким чином, щоб натискання цих кнопок призводило до показу відповідного елемента керування користувача у панелі дій.

5.3.10Виконати додавання діаграми на аркуш під час розробки.

5.3.11Продемонструвати додавання діаграми на аркуш під час

виконання.

5.3.12Виконати додавання аркуша в книгу під час розробки.

5.3.13Продемонструвати додавання аркуша в книгу під час

виконання.

5.3.14Виконати додавання аркуша діаграми (ChartSheet) в книгу під час розробки.

5.3.15Продемонструвати додавання аркуша діаграми (ChartSheet) в книгу під час виконання.

5.3.16Виконати додавання елемента керування ListObject на аркуш під час розробки.

5.3.17Продемонструвати додавання елемента керування ListObject на аркуш під час виконання у проекті рівня документа.

5.3.18Виконати прив’язку елемента керування ListObject до джерела даних (колекції або таблиці) під час розробки у проекті рівня документа. Виконати зіставлення стовпців елементу керування ListObject із даними джерела. Виконувати перевірку даних, введених користувачем при додаванні рядка.

5.3.20Виконати відключення елемента керування ListObject від джерела даних під час виконання.

5.3.21Виконати додавання та видалення рядків та стовпців елемента керування ListObject під час виконання.

5.3.22Виконати зміну розмірів елемента керування ListObject

137

під час розробки.

5.3.23Продемонструвати зміну розмірів елемента керування ListObject під час виконання.

5.3.24Виконати додавання елемента керування NamedRange під час розробки.

5.3.25Продемонструвати додавання елемента керування NamedRange під час виконання.

5.3.26Виконати обробку подій елемента керування

NamedRange.

5.3.27Виконати тестування розробленої програми.

5.3.28Оформити звіт з роботи.

5.3.29Відповісти на контрольні питання.

5.4 Зміст звіту

5.4.1Тема та мета роботи.

5.4.2Короткі теоретичні відомості.

5.4.3Завдання на лабораторну роботу.

5.4.4Текст розробленого програмного забезпечення з коментарями.

5.4.5Результати роботи програмного забезпечення (розроблені проекти, зображення форм інтерфейсу користувача).

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

5.5 Контрольні запитання

5.5.1Які існують ведучі елементи керування для Excel?

5.5.2Яким чином можна змінити коротке ім’я та програмне ім’я аркуша під час розробки?

5.5.3Чим аркуш діаграми (ChartSheet) відрізняється від звичайного аркуша (Sheet)?

5.5.4Які можливості надає елемент керування Chart?

5.5.5Як додати діаграму на аркуш під час розробки у проекті рівня документа?

5.5.6Що представляє собою елемент керування ListObject?

5.5.7Які можливості надає елемент керування ListObject?

138

5.5.8Як виконати прив’язку елемента керування ListObject до джерела даних під час розробки? Під час виконання?

5.5.9Як додати елемент керування ListObject на аркуш під час розробки у проекті рівня документа? Під час виконання у проекті рівня документа? Під час виконання у проекті рівня застосування?

5.5.10Як змінити розміри елемента керування ListObject під час розробки у проекті рівня документа? Під час виконання у проекті рівня документа? Під час виконання у проекті рівня застосування?

5.5.11Що представляє собою елемент керування NamedRange?

5.5.12Які можливості надає елемент керування NamedRange?

5.5.13Як відрізняється прив’язка даних у елементів керування

ListObject і NamedRange?

5.5.14Як додати елемент керування NamedRange на аркуш під час розробки у проекті рівня документа? Під час виконання у проекті рівня документа? Під час виконання у проекті рівня застосування?

5.5.15За яких умов виникає подія Change у елементі керування

NamedRange?

5.5.16 Які події надає елемент керування NamedRange?

139

6 ЛАБОРАТОРНА РОБОТА №6 ВИКОРИСТАННЯ ЕЛЕМЕНТІВ КЕРУВАННЯ

WINDOWS FORMS У ДОКУМЕНТАХ OFFICE

6.1 Мета роботи

Навчитися використовувати елементи керування Windows Forms у документах Office.

6.2 Основні теоретичні відомості

6.2.1 Елементи керування у документах Office

Засоби розробки Office в Visual Studio можна використовувати для додавання елементів керування Windows Forms і елементів керування ведучої програми до документів Word і книг Excel. Ведучі елементи розширюють різні об'єкти користувальницького інтерфейсу в об'єктних моделях Word і Excel.

При розробці проектів рівня застосування для Excel або Word можна програмним способом додавати такі елементи керування в будь-який відкритий документ або аркуш під час виконання.

При створенні проектів рівня документа для Excel або Word можна програмним чином додати елементи керування під час виконання або скористатися конструктором Visual Studio для додавання в документ або на аркуш даних елементів керування на стадії розробки, або ж додати елементи керування програмним способом під час виконання.

6.2.1.1 Загальні відомості про ведучі елементи й елементи керування ведучої програми

Ведучі елементи і елементи керування ведучої програми є типами, які надають модель програмування для рішень Office, що створюються за допомогою засобів розробки Office в Visual Studio. Вони забезпечують можливість взаємодії з об'єктними моделями додатків Microsoft Office Word і Microsoft Office Excel, заснованими на COM за аналогією зі взаємодією з керованими об'єктами, наприклад, елементами керування Windows Forms.

140

Ведучі елементи розширюють різні об'єкти користувальницького інтерфейсу в об'єктних моделях Word і Excel,

наприклад, об'єкти Microsoft.Office.Interop.Word.ContentControl і

Microsoft.Office.Interop. Excel.Range.

Для проектів Excel доступні наступні ведучі елементи: Chart,

ListObject, NamedRange, XmlMappedRange.

Для проектів Word доступні наступні ведучі елементи: Bookmark, XMLNode, XMLNodes та елементи керування вмістом.

Ведучі елементи керування, що додаються в документи Office, функціонують як власні об'єкти Office, однак, ведучі елементи керування мають додаткові функції, що включають події та можливість прив'язки до даних. Наприклад, якщо потрібно перехоплювати події власного об'єкта

Microsoft.Office.Interop.Excel.Range в Excel, необхідно спочатку обробити подію зміни аркуша. Потім необхідно визначити, чи відбулася зміна в Microsoft.Office.Interop.Excel.Range. На противагу цьому, елемент керування ведучої програми

Microsoft.Office.Tools.Excel. NamedRange має подію Change, яку може бути оброблено безпосередньо.

Відношення між ведучим елементом і елементами керування ведучої програми дуже схоже на відношення між Windows Forms і елементами керування Windows Forms. Аналогічно розміщенню елемента керування текстового поля на формі Windows Forms,

елемент керування Microsoft.Office.Tools.Excel.NamedRange

розміщується на ведучому елементі

Microsoft.Office.Tools.Excel.Worksheet. На рис. 6.1 показано відношення між ведучими елементами та елементами керування ведучої програми.

Крім того можна використовувати елементи керування Windows Forms в рішеннях Office, додаючи їх безпосередньо в область документа Word і Excel.

У проектах рівня документа під час розробки в документи Word або аркуші Excel можна додавати ведучі елементи керування одним із таких способів: додати ведучі елементи керування в документ під час розробки таким же чином, як додається власний об'єкт, перетягнути ведучі елементи керування з Панелі елементів або з вікна Джерела даних у документи і аркуші (дає можливість додавати елементи керування, вже пов'язані з даними).