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

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

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

Документ

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

Власний об’єкт

Office

Події

Прив’язка даних

Закладка

Елементи

керування

вмістом XML-вузол

141

Аркуш

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

Власний об’єкт

Office

Події

Прив’язка даних

Об’єкт списку Іменований діапазон Діаграма Співставлений діапазон XML

Рисунок 6.1 – Відношення між ведучими елементами та елементами керування ведучої програми

У проектах рівня документа та рівня програми також можна додавати деякі ведучі елементи керування в документи під час виконання.

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

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

Remove властивості Worksheet.Controls або Document.Controls.

Якщо кінцевий користувач видаляє з документа ведучий

142

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

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

Microsoft.Office.Interop.Excel.Range в Excel і об'єкт Microsoft.Office. Interop.Word.Bookmark у Word не мають подій, але середовище виконання Visual Studio Tools for Office розширяє ці об'єкти, додаючи програмовані події. Можна мати доступ до цих подій і записувати код для реагування на них через сторінку властивостей.

6.2.1.2 Програмні обмеження ведучих елементів і елементів керування ведучої програми

Кожен ведучий елемент і елемент керування ведучої програми створюється, щоб працювати аналогічно власному об'єкту Microsoft Office Word або Microsoft Office Excel з додатковими функціями. Але існує ряд фундаментальних відмінностей між поведінкою під час виконання ведучих елементів і елементів керування ведучої програми з одного боку і власних об'єктів Office з іншого боку.

При програмному створенні або відкритті документа, книги або аркуша під час виконання з використанням об'єктної моделі Word або Excel елемент не є ведучим. Замість цього новий об'єкт є власним об'єктом Office. Наприклад, при використанні методу Documents.Add для створення нового документа Word під час виконання він буде

власним об'єктом Microsoft.Office.Interop.Word.Document, а не Microsoft.Office.Tools.Word.Document.

Упроектах рівня документа не можна створити ведучі елементи під час виконання. Ведучі елементи можуть бути створені в проектах рівня документа тільки під час розробки.

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

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

Microsoft.Office.Tools.Word.Document або Microsoft.Office.Tools.Excel. Worksheet. Не можна додавати елементи керування ведучої програми у власний документ Microsoft.Office.Interop.Word.Document або аркуш

143

Microsoft.Office.Interop.Excel.Worksheet.

Для кожного ведучого елемента і елемента керування ведучої програми існує власний об'єкт Microsoft Office Word або Microsoft Office Excel. Для доступу до основного об'єкта використовується властивість InnerObject ведучого елементу або елемента керування ведучої програми. Однак неможливо привести власний об'єкт Office до типу ведучого елементу або елементу керування ведучої програми. При такій спробі виникає виняток InvalidCastException.

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

У застосуванні Word неможливо передати елемент керування ведучої програми в метод або властивість, для якого потрібний власний об'єкт Word як обов'язковий параметр. Для повернення до основного власного об'єкту Word необхідно використовувати властивість InnerObject елемента керування ведучої програми. Наприклад, можна передати об'єкт

Microsoft.Office.Interop.Word.Bookmark у метод за допомогою передачі в метод властивості InnerObject елемента керування ведучої

програми Microsoft.Office.Tools.Word. Bookmark.

У Excel існує дві умови, за яких необхідно використовувати властивість InnerObject елемента керування ведучої програми для передачі цього елемента керування методу або властивості: якщо для методу або властивості потрібен основний об'єкт Excel або якщо значення атрибута

Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute задано як false, а

метод або властивість очікують Object замість базового об'єкта Excel.

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

Microsoft.Office.Tools.Excel.NamedRange і передається в метод

AutoFill. Код використовує властивість InnerObject іменованого діапазону для повернення основного об'єкта Office Microsoft.Office.Interop.Excel.Range, що вимагається для методу

AutoFill.

this.Range["A1", missing].Value2 = "Monday"; this.Range["A2", missing].Value2 = "Tuesday"; Micrsosoft.Office.Tools.Excel.NamedRange dayRange = this.

Controls.AddNamedRange (this.Range["A1", "A7"], "dayRange"); this.Range["A1", "A2"]. AutoFill (dayRange.InnerObject,

144

Excel.XlAutoFillType.xlFillDays);

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

NamedRange в Excel повертає об'єкт Microsoft.Office.Interop.Excel. Worksheet, а не ведучий елемент Microsoft.Office.Tools.Excel.

Worksheet.

Середовище виконання Visual Studio Tools for Office не надає окремих колекцій для кожного типу елементів керування ведучої програми. Замість цього використовується властивість Controls ведучого елементу для перебору всіх керованих елементів керування (як елементів керування ведучої програми або елементів керування Windows Forms) в документі або аркуші, а потім необхідно знайти елементи, які відповідають типу потрібного елементу керування ведучої програми. У наступному прикладі коду розглядається кожен елемент керування в документі Word і визначається, чи є елемент

керування Microsoft.Office.Tools.Word. Bookmark.

foreach (object targetControl in this.Controls)

{ Microsoft.Office.Tools.Word.Bookmark bookMark = targetControl as Microsoft.Office.Tools.Word.Bookmark;

if (bookMark!= null)

{ // Do some work with the bookmark here.

}

}

Об'єктні моделі Word і Excel включають властивості, які надають колекції власних елементів керування для документів і аркушів. За допомогою цих властивостей не можна отримати доступ до керованих елементів керування. Наприклад, неможливо перерахувати кожен Microsoft.Office.Tools.Word.Bookmark елемент керування ведучої програми за допомогою властивості Bookmarks

об'єкта Microsoft.Office.Interop.Word.Document або властивості

Bookmarks об'єкта Microsoft.Office.Tools.Word.Document. Ці властивості включають в документ лише елементи керування

Microsoft.Office.Interop. Word.Bookmark, вони не включають в документ елементи керування ведучої програми

145

Microsoft.Office.Tools.Word. Bookmark.

this.Paragraphs[1].Range.InsertParagraphBefore (); this.Paragraphs[1].Range.Select (); Microsoft.Office.Tools.Word.ContentControl checkBoxControl1

= this.Controls.AddContentControl ("checkBoxControl1", Word.WdContentControlType.wdContentControlCheckBox); checkBoxControl1.Checked = true;

6.2.1.3 Загальні відомості про використання елементів керування Windows Forms в документах Office

Елементи керування Windows Forms – об'єкти, з якими можуть взаємодіяти користувачі для введення даних або керування ними. Їх можна додати в документи і в налаштовувані елементи інтерфейсу користувача, включаючи панелі дій, налаштовувані області задач і форми Windows Forms. Елементи керування Windows Forms зазвичай ведуть себе в документах так само, як і в інших елементах інтерфейсу користувача, але існують певні відмінності.

Рішення про додавання елементів керування Windows Forms в документ або інший елемент користувацького інтерфейсу залежить від ряду факторів. При розробці інтерфейсу слід враховувати наступні варіанти використання елементів керування Windows Forms:

у документі (якщо необхідно відображати елементи керування весь час, якщо потрібно, щоб користувачі вводили дані прямо в документ, наприклад, в документи на основі форм, в яких область редагування блокована або якщо необхідно, щоб елементи керування відображалися у відповідності з даними в документі);

у панелі дій або в налаштовуваній області задач (якщо необхідно надавати користувачеві контекстно-залежну інформацію, якщо необхідно, щоб у документі з'являвся тільки результат, а не дані

іелементи керування запиту, якщо необхідно переконатися, що елементи керування не будуть надруковані разом з документом, якщо необхідно переконатися, що елементи керування не впливають на уявлення документа);

у формі Windows Forms (якщо необхідно управляти розмірами елементів інтерфейсу користувача, якщо необхідно, щоб користувачі не могли приховувати або видаляти елементи керування

146

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

Розробник може додати елементи керування Windows Forms в документи Word і аркуші Excel під час виконання. Середовище виконання Visual Studio Tools for Office надає допоміжні методи для додавання найбільш поширених елементів керування Windows Forms. Ці допоміжні методи дозволяють швидко додавати елементи керування в документи Office і отримувати доступ до об'єднаних функціональних можливостей Office і Windows Forms, реалізованих у цих елементах керування.

Деякі аспекти використання елементів керування Windows Forms у документах унікальні для проектів рівня документа, що дозволяє проектувати інтерфейс користувача створюваного документа за допомогою конструктора Visual Studio.

Можна додати елемент керування користувача в проект, а потім на Панель елементів. Потім можна перетягнути елемент керування користувача в документ таким же способом, яким в документ додається елемент керування форм Windows Forms. При створенні елементів керування користувача необхідно мати на увазі наступне:

не створюйте елемент керування користувача sealed: при перетягуванні цього елементу керування в документ Visual Studio створює для його розширення клас-оболонку, похідний від елементу керування користувача, і підтримує його використання в документах. Якщо елемент керування користувача має значення sealed, то пакет Visual Studio не здатен створити клас-оболонку;

атрибуту ComVisibleAttribute елементу керування користувача повинно бути присвоєно значення true. Для цього атрибуту елементів керування користувача, створених у проекті Office, значення true встановлено за замовчанням, проте для елементів керування користувача, що є частиною зовнішніх проектів, цьому атрибуту не завжди присвоюється значення true;

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

Якщо під час розробки в документи Word і Excel додається декілька елементів керування, можна швидко налаштувати вирівнювання всіх виділених елементів керування за допомогою панелей інструментів Microsoft Office Word, Excel в Visual Studio. Ці

147

панелі інструментів доступні тільки тоді, коли документ або аркуш відкриваються в конструкторі.

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

У проектах Word ці кнопки доступні, тільки якщо для виділених елементів керування не використовується режим обтікання "У тексті", який типово використовується для елементів керування, що додаються в документ.

При додаванні елементів керування Windows Forms в документи або аркуші під час розробки ці елементи керування залишаються в документі, коли користувач закриває документ. Елементи керування, додані під час розробки, також називаються статичними елементами керування.

Коли відкрита книга Excel, що містить статичні елементи керування, вона відображає растрове зображення елементу керування в елементі керування ActiveX до тих пір, поки виконується код налаштування і завантажується фактичний елемент керування. Excel створює це растрове зображення і зберігає його в книзі при кожному її збереженні. Це растрове зображення показує елемент керування так, як він відображався при останньому збереженні книги, включаючи будь-які дані, що відображаються елементом керування.

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

Певні елементи керування або компоненти відображаються не в документі, а в області компонентів. Visual Studio надає область компонентів для кожного вікна документа. Область компонентів відображається на екрані, тільки якщо документ містить компоненти.

148

6.2.1.4 Додавання елементів керування Windows Forms у документи Office

Елементи керування Windows Forms можна додавати в документи Microsoft Office Excel і Microsoft Office Word під час розробки в проектах на рівні документа. Під час виконання можна додавати елементи керування в налаштуваннях рівня документа і в надбудовах рівня застосування.

Для додавання елементів керування Windows Forms в документ у проекті рівня документа під час розробки перетягніть в документ необхідний елемент керування зі вкладки Стандартні елементи керування панелі елементів.

Можна додавати елементи керування Windows Forms в

документ під час виконання програмними засобами. У Word слід використовувати методи властивості Controls класу ThisDocument. У Excel слід використовувати методи властивості Controls класу Sheet n. Кожен метод має декілька перевантажень, що дозволяє вказати розташування елемента керування різними способами.

Якщо елемент керування Windows Forms додається в документ під час розробки, то цей елемент керування не зберігається в документі після його закриття. Цей елемент керування можна перестворити при наступному відкритті документа.

Використовуйте метод з ім'ям Add <клас_управління> (де клас_управління — це ім'я класу елемента керування Windows Forms, який слід додати).

У наступному прикладі коду демонструється порядок додавання елемента керування Button у клітинку C5 аркуша Sheet1 в проекті рівня документа для Excel.

private void Sheet1_Startup (object sender, System.EventArgs e)

{Microsoft.Office.Tools.Excel.Controls.Button salesButton; salesButton = this.Controls.AddButton (this.get_Range

("C5", missing), "salesButton"); salesButton.Text = "Calculate Total Sales";}

Можна додавати елементи керування Windows Forms у будьякий відкритий документ під час виконання програмними засобами. Спочатку потрібно створити ведучий елемент на основі відкритого

149

документа або аркуша. Потім у Word слід скористатися методами властивості Document.Controls створеного ведучого елементу. У Excel слід скористатися методами властивості Worksheet.Controls створеного ведучого елементу. Кожен метод має декілька перевантажень, що дозволяє вказати розташування елемента керування різними способами.

У проектах надбудов рівня застосування необхідно додати посилання на Microsoft.Office.Tools.Excel.v4.0.Utilities.dll або

Microsoft.Office.Tools.Word.v4.0.Utilities.dll, перш ніж отримувати доступ до методів Add <клас_управління>.

У наступному прикладі коду демонструється порядок додавання елемента керування Button у перший параграф активного документа за допомогою надбудови Word:

Microsoft.Office.Tools.Word.Controls.Button salesButton; Document extendedDocument = Globals.Factory.GetVstoObject (this.Application.ActiveDocument); extendedDocument.Paragraphs[1]. Range.InsertParagraphBefore ();

salesButton = extendedDocument.Controls.AddButton ( extendedDocument.Paragraphs[1]. Range, 75, 18, "salesButton"); salesButton.Text = "Calculate Sales";

6.2.1.5 Обмеження щодо використання елементів керування

Windows Forms у документах Office

Елементи керування Windows Forms, що додаються в документи

Microsoft Office Word або книги Microsoft Office Excel, відрізняються від елементів керування Windows Forms, що додаються в форми

Windows Forms.

Існує ряд методів і властивостей елементів керування Windows Forms, які по-різному поводяться в документі і у формі Windows Forms; проте їх використання не рекомендується. Наприклад, встановлення таких властивостей, як Dock та Anchor, впливає тільки на положення елемента керування Windows Forms відносно контейнера елемента керування ActiveX, а не щодо документа.

Непідтримувані методи і властивості елементів керування Excel: Anchor, Dock, Location, TabIndex, TabStop, TopLevelControl.

150

Непідтримувані методи і властивості елементів керування Word: Hide, Show, Anchor, Dock, Location, TabIndex, TabStop,

TopLevelControl, Visible.

Також не можна задати властивість Left або Top елементів керування Windows Forms, для яких у документі Word використовується стиль обтікання "У тексті".

Поведінка елементів керування Windows Forms в документах Office, як правило, не відрізняється від їхньої поведінки у формах Windows Forms. Однак деякі відмінності все ж існують. Розглянемо відмінності, які існують для функціональних можливостей елементів керування Windows Forms в документах Office:

не можна здійснювати перехід між елементами керування в робочому аркуші Excel або документі Word;

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

апотім додати цей елемент керування в документ;

тип елемента керування: елементи керування Windows Forms, що використовуються в документах, упаковуються в клас, що надається середовищу виконання Visual Studio Tools for Office, який забезпечує елементи додатковими функціональними можливостями, характерними для робочого аркуша Excel або документа Word. Наприклад, якщо при створенні посилання або перетворенні формату

об'єкта

на

робочому

аркуші

Excel

обраний

елемент

керування Button, переконайтеся в

тому, що зазначений тип

Microsoft.Office.

 

Tools.Excel.Controls.Button,

а

не System.Windows.Forms.Button;

 

 

 

розмір і позиція елемента керування визначаються властивостями, які є складовими контейнера елемента керування ActiveX. Властивості елемента керування ActiveX приймають значення, відмінні від значень еквівалентних властивостей елемента Windows Forms. Задаючи такі властивості елемента керування як Top, Left, Height або Width необхідно враховувати, що ці розміри задаються в пунктах, а не в точках;

положення елемента керування в документах Word: при