Реализация ваших собственных смарт-тегов

Оценить
(0 голоса)

Смарт-теги приложений Office работают примерно так: по мере ввода пользователя (в от­крытом документе) сам текст ввода "разбирается" на маркеры, которые затем сравниваются со всеми терминами/выражениями, которые распознаются в любых приложениях Office. Если текст распознается смарт-тегом, то пользователю выдается список действий (отобра­жаемый при помощи того пользовательского интерфейса, который уже был описан ранее при первом представлении концепции смарт-тега). То есть у нас есть две части процесса: распознавание и действие.

При помощи VSTO вы можете создать ваши собственные смарт-теги, которые определяют распознаваемый ими текст, а также и список возможных действий, который будет представ­лен пользователю после распознавания.

Как Word, так и Excel реализуют классы, которые наследуют от базового класса

Miсrоsoft.Office.TooIs.SmartTagBase.

Для Word это класс Microsoft. Off ice. Tools. Word. SmartTag, а для Excel это класс Microsoft. Office. Tools . Excel. SmartTag. Оба этих класса реализуют два важных свойства, определенные в классе SmartTagBase: Terms и Expressions. Если вашему смарт-тегу необходимо выявлять совпадение простых текстовых маркеров, то вы можете добавить их в коллекцию Terms. Если требуется более сложное сопоставление, то свойст­во Expressions примет регулярное выражение для такого сопоставления.

Для того чтобы определить, как настроить объект вашего смарт-тега, необходимо немного узнать о том, как приложения Office разбирают текст на маркеры. Например, если пользова­тель вводит Р029302 в Word, то синтаксический анализатор автоматически создаст из этого текста два маркера: первый маркер будет РО, а второй — 29302. Добавление строки "РО" в коллекцию Terms приведет к тому, что этот текст будет распознаваться нашим смарт-тегом (поскольку один из маркеров совпадает с нашим условием). Мы могли бы также написать более сложное и надежное регулярное выражение, которому соответствуют "буквы РО, пе­ред которыми имеется один или несколько пробелов, и за которыми следует любое количе­ство цифр, а затем один или более пробелов" следующим образом: \sPO [0-9] *\s.

После того как вы решили, что хотите делать в вашем смарт-теге поиск текстовых совпаде­ний, вам необходимо определить список действий, которые будут доступны пользователю при нажатии смарт-тега. Если вы хотите сделать поиск заказа на покупку при помощи толь­ко что показанного регулярного выражения, а затем дать пользователю возможность про­смотра подробностей этого заказа на покупку (возможно, внутри панели действий или в об­ласти формы Outlook), то вы можете определить это действие при помощи класса Action (который имеется как в Word, так и в Excel). Класс Action предоставляет событие, которое мы можем перехватить для выполнения указанного действия: Описание: image582

// Создать объект действия

DisplayPO = new Action("Display PO details");

// Добавить действие в смарт-тег

POSmartTag.Actions = new Action[] { DisplayPO };

В листинге 21.1 все это сведено в один блок, который можно скопировать и вставить в класс документа Word (например, This Document) для создания нестандартного смарт-тега, а на рис. 21.18 показан смарт-тег в действии.

using System;

using System.Collections.Generic; using System.Data; using System.Linq; using System.Text;

using System.Text.RegularExpressions; using System.Windows.Forms; using System.Xml.Linq;

using Microsoft.VisualStudio.Tools.Applications.Runtime; using Tools = Microsoft.Office.Tools.Word; using Office = Microsoft.Office.Core; using Word = Microsoft.Office.Interop.Word;

namespace WordDocumentl 4

public partial class ThisDocument {

private void AddPOSmartTag()

{

// Создать объект смарт-тега Tools.SmartTag poSmartTag =

new Tools.SmartTag("www.contoso.com#POSmartTag",

"PO Smart Tag");

//Мы хотим проверять совпадение регулярного выражения: poSmartTag.Expressions.Add(new Regex(@"\sPO[0-9]*\s")) ;

// Определить действие для смарт-тега

Tools.Action displayDetails = new Tools.Action("Display PO details..."); // Добавить действие в смарт-тег

poSmartTag.Actions = new Tools.Action[] { displayDetails };

// Добавить смарт-тег в документ this.VstoSmartTags.Add(poSmartTag);

// Подключить обработчики событий для действия смарт-тега displayDetails.Click += new Tools.ActionClickEventHandler(

displayDetails_Click);

}

void displayDetails_Click(object sender, Tools.ActionEventArgs e)

{

// Здесь должен быть код доступа в систему закупок

I    i

// для предоставления информации в текущем документе

}

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

{

AddPOSmartTag() ;

}

private void ThisDocument_Shutdown(object sender, System.EventArgs e) {

}

#region VSTO Designer generated code

%

III <summary>

III Required method for Designer support - do not modify III the contents of this method with the code editor.

Ill </summary>

private void InternalStartup()

{

this.Startup += new System.EventHandler(ThisDocument_Startup); this.Shutdown += new System.EventHandler(ThisDocument Shutdown);

#endregion

}

}

Подробнее в этой категории: « Microsoft Office Резюме »
Резюме
Microsoft Office
Функциональные возможности Office
Панели задач и действий
Кэш данных

Добавить комментарий


Защитный код
Обновить

© 2018 www.visualstudios.ru. Все права защищены.