Arquitetura de marcas inteligentes

Ferramentas de desenvolvimento do Office em Visual Studio 2010 fornecem um modelo de objeto de marca inteligente de flexível que lhe permite adicionar rapidamente as marcas inteligentes para documentos do Word de Microsoft Office e pastas de trabalho do Excel de Microsoft Office. Para cenários avançados, você também pode criar seus próprios identificadores de marcas inteligentes e acessar os dados que são armazenados na marca inteligente.

Para obter mais informações sobre marcas inteligentes, consulte Visão geral sobre marcas inteligentes.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Excel 2007 e Word 2007. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Visão geral do modelo de objeto

O modelo de objeto de marca inteligente separa as ações de marcas inteligentes realizam as marcas inteligentes. As seções a seguir descrevem os principais objetos que você pode usar para criar marcas inteligentes. Para obter exemplos de código que demonstram como adicionar marcas inteligentes a um documento, consulte Como: Adicionar marcas inteligentes em documentos do Word e Como: Adicionar marcas inteligentes para pastas de trabalho do Excel.

Smart Tags

No seu código, uma marca inteligente é um Microsoft.Office.Tools.Word.SmartTag ou Microsoft.Office.Tools.Excel.SmartTag objeto. Esses objetos incluem as seguintes propriedades:

  • Terms and Expressions. Essas propriedades contêm os termos reconhecíveis para a marca inteligente. Para especificar uma seqüência de caracteres simple, adicionar a seqüência de caracteres para o Terms propriedade. Para especificar uma seqüência de caracteres complexa, adicionar uma expressão regular que descreve a seqüência de caracteres para o Expressions propriedade.

  • Actions. Esta propriedade contém as ações a serem executadas quando o usuário seleciona a marca inteligente.

  • Caption. Esta propriedade especifica o rótulo da marca inteligente.

Actions

Quando o usuário seleciona a marca inteligente, o usuário pode executar uma ou mais ações que são específicas para a marca inteligente. Cada ação é representada por um Microsoft.Office.Tools.Word.Action ou Microsoft.Office.Tools.Excel.Action objeto. Esses objetos fornecem aBeforeCaptionShow e Click eventos:

  • O BeforeCaptionShow evento é gerado após o usuário clica no ícone de marca inteligente, mas antes da marca inteligente menu é exibido. Trate este evento se desejar modificar o título da ação no menu de marcas inteligentes em tempo de execução.

  • O Click evento é gerado quando o usuário clica no título da ação no menu de marca inteligente. Trate este evento para executar código quando o usuário clica a ação.

Os manipuladores de eventos para esses eventos recebem um Microsoft.Office.Tools.Excel.ActionEventArgs ou Microsoft.Office.Tools.Word.ActionEventArgs objeto que fornece acesso para o texto reconhecido e o local do texto.

Criando marcas inteligentes

A maneira que você crie uma marca inteligente depende seus destinos do projeto a.NET Framework 3.5 ou o .NET Framework 4.

Quando você direcionar o.NET Framework 3.5, SmartTag e Action são classes que você pode instanciar diretamente. O exemplo de código a seguir demonstra como criar uma marca inteligente simple em um projeto do Word voltado para o.NET Framework 3.5. Para usar esse exemplo, executar o código da ThisDocument classe em um projeto de nível de documento ou o ThisAddIn a classe em um projeto de nível de aplicativo.

Dim simpleSmartTag As Microsoft.Office.Tools.Word.SmartTag =
        New Microsoft.Office.Tools.Word.SmartTag(
        "www.microsoft.com/Demo#DemoSmartTag",
        "Test Smart Tag")
Dim simpleAction As Microsoft.Office.Tools.Word.Action = 
    New Microsoft.Office.Tools.Word.Action("Test Action")

simpleSmartTag.Terms.Add("blue")
simpleSmartTag.Actions = New Microsoft.Office.Tools.Word.Action() { _
    simpleAction}
Me.VstoSmartTags.Add(simpleSmartTag)
Microsoft.Office.Tools.Word.SmartTag simpleSmartTag =
    new Microsoft.Office.Tools.Word.SmartTag(
    "www.microsoft.com/Demo#DemoSmartTag",
    "Test Smart Tag");
Microsoft.Office.Tools.Word.Action simpleAction = 
    new Microsoft.Office.Tools.Word.Action("Test Action");

simpleSmartTag.Terms.Add("blue");
simpleSmartTag.Actions = new Microsoft.Office.Tools.Word.Action[] { 
    simpleAction };
this.VstoSmartTags.Add(simpleSmartTag);

Quando você direcionar o .NET Framework 4, SmartTag e Action são interfaces que você não pode criar uma instância diretamente. Em vez disso, você deve usar o CreateSmartTag e CreateAction métodos fornecidos pelo Globals a classe em seu projeto para obter as instâncias desses objetos. For more information about the Globals class, see Acesso global a objetos em projetos do Office. O exemplo de código a seguir demonstra como criar uma marca inteligente simple em um projeto do Word voltado para o .NET Framework 4. Para usar esse exemplo, executar o código da ThisDocument classe em um projeto de nível de documento ou o ThisAddIn a classe em um projeto de nível de aplicativo.

Dim simpleSmartTag As Microsoft.Office.Tools.Word.SmartTag =
    Globals.Factory.CreateSmartTag(
        "www.microsoft.com/Demo#DemoSmartTag",
        "Test Smart Tag")
Dim simpleAction As Microsoft.Office.Tools.Word.Action =
    Globals.Factory.CreateAction("Test Action")

simpleSmartTag.Terms.Add("blue")
simpleSmartTag.Actions = New Microsoft.Office.Tools.Word.Action() { _
    simpleAction}
Me.VstoSmartTags.Add(simpleSmartTag)
Microsoft.Office.Tools.Word.SmartTag simpleSmartTag =
    Globals.Factory.CreateSmartTag(
    "www.microsoft.com/Demo#DemoSmartTag",
    "Test Smart Tag");
Microsoft.Office.Tools.Word.Action simpleAction =
    Globals.Factory.CreateAction("Test Action");

simpleSmartTag.Terms.Add("blue");
simpleSmartTag.Actions = new Microsoft.Office.Tools.Word.Action[] { 
    simpleAction };
this.VstoSmartTags.Add(simpleSmartTag);

Para obter mais instruções e exemplos de código que demonstram a mais complexas marcas inteligentes, consulte Como: Adicionar marcas inteligentes em documentos do Word e Como: Adicionar marcas inteligentes para pastas de trabalho do Excel.

A criação de identificadores de marcas inteligentes

Se você quiser personalizar o comportamento de reconhecimento de marca inteligente do padrão, você pode criar seu próprio identificador de marca inteligente. A maneira de fazer isso depende seus destinos do projeto a.NET Framework 3.5 e o .NET Framework 4.

Comportamento de reconhecimento de texto padrão

Quando um texto de tipos de usuário em um documento ou pasta de trabalho, o Word e Excel criam uma lista de tokens do texto. O reconhecedor de marca inteligente padrão recebe esta lista de tokens e todo o texto digitado pelo usuário. O reconhecedor padrão identifica uma marca inteligente se uma das seguintes condições for atendida:

  • Uma das seqüências de Terms propriedade corresponde exatamente um dos tokens do documento ou pasta de trabalho.

  • Uma das expressões regulares no Expressions corresponde à propriedade em todo o texto digitado pelo usuário.

Incorporado de seqüências de análise do Word e Excel que contêm espaços ou seqüências que combinam letras, números e símbolos, para separam os tokens quando um usuário digita-los. Por exemplo, se o usuário digitar "relatório de venda", Word e Excel cria tokens de "vendas" e "relatório". Da mesma forma, se o usuário digita "2005sales", Word e Excel criam tokens de "2005" e "vendas".

Se você deseja tornar sua marca inteligente para reconhecer uma seqüência de caracteres que contenha espaços incorporados ou uma seqüência de caracteres que combine letras, números e símbolos, não adicione a seqüência de caracteres para o Terms propriedade. Em vez disso, adicione uma expressão regular que descreve a seqüência de caracteres para o Expressions propriedade, ou criar seu próprio identificador de procura a seqüência de caracteres.

Criação de identificadores de marcas inteligentes em projetos destinados a.NET Framework 4

Para criar seu próprio identificador de marca inteligente, definir uma classe que implementa o Microsoft.Office.Tools.Word.ISmartTagExtension ou Microsoft.Office.Tools.Excel.ISmartTagExtension interface. Na implementação da ISmartTagExtension.Recognize método, o texto de pesquisa para os termos de marca inteligente e registrar a marca inteligente com o Word ou Excel, se um termo de marca inteligente for encontrado. Para registrar uma marca inteligente, chame o PersistTag método o context parâmetro da Recognize método.

O exemplo de código a seguir demonstra como criar uma classe simples de marca inteligente com um reconhecedor personalizado em um projeto do Word voltado para o .NET Framework 4.

Public Class SmartTagWithCustomRecognizer
    Implements Microsoft.Office.Tools.Word.ISmartTagExtension

    Private theSmartTag As Microsoft.Office.Tools.Word.SmartTag

    Public Sub New()
        theSmartTag = Globals.Factory.CreateSmartTag("www.microsoft.com/Demo#DemoSmartTag",
            "Test Smart Tag", Me)
        Dim simpleAction As Microsoft.Office.Tools.Word.Action = Globals.Factory.CreateAction("Test Action")
        theSmartTag.Actions = New Microsoft.Office.Tools.Word.Action() {simpleAction}
    End Sub

    Private Sub Recognize(ByVal text As String,
        ByVal site As Microsoft.Office.Interop.SmartTag.ISmartTagRecognizerSite,
        ByVal tokenList As Microsoft.Office.Interop.SmartTag.ISmartTagTokenList,
        ByVal context As Microsoft.Office.Tools.Word.SmartTagRecognizeContext) _
        Implements Microsoft.Office.Tools.Word.ISmartTagExtension.Recognize

        Dim index As Integer = text.IndexOf("blue")
        If index >= 0 Then
            context.PersistTag(index, 4, Nothing)
        End If
    End Sub

    Public ReadOnly Property ExtensionBase() As Object _
        Implements Microsoft.Office.Tools.Word.ISmartTagExtension.ExtensionBase
        Get
            Return theSmartTag
        End Get
    End Property
End Class
public class SmartTagWithCustomRecognizer : Microsoft.Office.Tools.Word.ISmartTagExtension
{
    private Microsoft.Office.Tools.Word.SmartTag theSmartTag;

    public SmartTagWithCustomRecognizer()
    {
        theSmartTag = Globals.Factory.CreateSmartTag("www.microsoft.com/Demo#DemoSmartTag", 
            "Test Smart Tag", this);
        Microsoft.Office.Tools.Word.Action simpleAction = Globals.Factory.CreateAction("Test Action");
        theSmartTag.Actions = new Microsoft.Office.Tools.Word.Action[] { simpleAction };
    }

    public void Recognize(string text, Microsoft.Office.Interop.SmartTag.ISmartTagRecognizerSite site, 
        Microsoft.Office.Interop.SmartTag.ISmartTagTokenList tokenList,
        Microsoft.Office.Tools.Word.SmartTagRecognizeContext context)
    {
        int index = text.IndexOf("blue");
        if (index >= 0)
        {
            context.PersistTag(index, 4, null);
        }
    }

    public object ExtensionBase
    {
        get { return theSmartTag; }
    }
}

Para obter mais instruções e exemplos de código que demonstram as classes mais complexa de marca inteligente com reconhecedores personalizados, consulte Como: Criar marcas inteligentes com reconhecedores de personalizado no Word e.NET Framework 4 e Como: Criar marcas inteligentes com reconhecedores de personalizadas no Excel e.NET Framework 4.

Criação de identificadores de marcas inteligentes em projetos destinados a.NET Framework 3.5

Para criar seu próprio identificador de marca inteligente, derivar uma classe de Microsoft.Office.Tools.Word.SmartTag ou Microsoft.Office.Tools.Excel.SmartTag e, em seguida, substituir o SmartTag.Recognize método na classe a. No seu método, o texto de pesquisa para os termos de marca inteligente e registrar a marca inteligente com o Word ou Excel, se um termo de marca inteligente for encontrado. Para registrar uma marca inteligente, chame o PersistTag método sua classe derivada de Microsoft.Office.Tools.Word.SmartTag ou Microsoft.Office.Tools.Excel.SmartTag.

O exemplo de código a seguir demonstra como criar uma classe simples de marca inteligente com um reconhecedor personalizado em um projeto do Word voltado para o.NET Framework 3.5.

Public Class SmartTagWithCustomRecognizer 
    Inherits Microsoft.Office.Tools.Word.SmartTag

    Public Sub New()
    MyBase.New("https://www.contoso.com/Demo#DemoSmartTag", _
        "Test Smart Tag")
        Dim simpleAction As Microsoft.Office.Tools.Word.Action = _
            New Microsoft.Office.Tools.Word.Action("TestAction")
        Me.Actions = new Microsoft.Office.Tools.Word.Action() { simpleAction }
    End Sub

    Protected Overrides Sub Recognize(ByVal text As String, _
        ByVal site As Microsoft.Office.Interop.SmartTag.ISmartTagRecognizerSite, _
        ByVal tokenList As Microsoft.Office.Interop.SmartTag.ISmartTagTokenList)

        Dim index As Integer = text.IndexOf("blue")
        If index >= 0 Then
            Me.PersistTag(index, 4, Nothing)
        End If
    End Sub
End Class
public class SmartTagWithCustomRecognizer : Microsoft.Office.Tools.Word.SmartTag
{
    public SmartTagWithCustomRecognizer() : base(
        "https://www.contoso.com/Demo#DemoSmartTag", 
        "Test Smart Tag")
    {
        Microsoft.Office.Tools.Word.Action simpleAction = 
            new Microsoft.Office.Tools.Word.Action("TestAction");
        this.Actions = new Microsoft.Office.Tools.Word.Action[] { simpleAction };
    }

    protected override void Recognize(string text, 
        Microsoft.Office.Interop.SmartTag.ISmartTagRecognizerSite site, 
        Microsoft.Office.Interop.SmartTag.ISmartTagTokenList tokenList)
    {
        int index = text.IndexOf("blue");
        if (index >= 0)
        {
            this.PersistTag(index, 4, null);
        }
    }
}

Para obter mais instruções e exemplos de código que demonstram as classes mais complexa de marca inteligente com reconhecedores personalizados, consulte Como: Criar marcas inteligentes com reconhecedores de personalizado no Word e.NET Framework 3.5 e Como: Criar marcas inteligentes com reconhecedores de personalizadas no Excel e.NET Framework 3.5.

Armazenar e recuperar dados no conjunto de propriedades

As marcas inteligentes podem armazenar dados em uma coleção de pares de chave e valor, conhecido como conjunto de propriedades. Cada valor e a chave no conjunto de propriedades são uma seqüência de caracteres.

Há duas maneiras para acessar o conjunto de propriedades:

  • Você pode manipular o Click ou BeforeCaptionShow eventos de um Microsoft.Office.Tools.Word.Action ou Microsoft.Office.Tools.Excel.Action de objeto e, em seguida, use o Properties a propriedade do parâmetro de argumento de evento para gravar e ler a partir do conjunto de propriedade. da marca inteligente O Properties propriedade retorna um ISmartTagProperties objeto. O ISmartTagProperties interface está disponível quando você adiciona uma referência à biblioteca do Microsoft Smart Tags 2.0 tipo ao seu projeto.

  • Você pode criar um reconhecedor de marca inteligente personalizada, seguindo as instruções acima. Em sua implementação ou a substituição da Recognize método, use o GetNewPropertyBag método o site parâmetro para obter um ISmartTagProperties objeto que você pode usar para gravar e ler a partir do conjunto de propriedades da marca inteligente.

Para obter exemplos de como gravar e ler a partir do conjunto de propriedades, consulte os seguintes tópicos:

Expressões regulares e o conjunto de propriedades

Quando você atribui uma expressão regular para uma marca inteligente, o reconhecedor padrão adiciona um par de chave e valor para cada grupo capturado de expressão regular para o conjunto de propriedades da marca inteligente.

Para obter um exemplo que demonstra esse comportamento, consulte Demonstra Passo a passo: A criação de uma marca inteligente usando uma personalização em nível de documento. Para obter mais informações sobre grupos capturados em expressões regulares, consulte Agrupando Construtores e O modelo de objeto de expressão Regular.

Consulte também

Tarefas

Como: Ativar marcas inteligentes no Word e Excel

Como: Adicionar marcas inteligentes em documentos do Word

Como: Adicionar marcas inteligentes para pastas de trabalho do Excel

Como: Criar marcas inteligentes com reconhecedores de personalizado no Word e.NET Framework 3.5

Como: Criar marcas inteligentes com reconhecedores de personalizadas no Excel e.NET Framework 3.5

Demonstra Passo a passo: A criação de uma marca inteligente usando uma personalização em nível de documento

Demonstra Passo a passo: A criação de uma marca inteligente usando-se um suplemento em nível de aplicativo

Outros recursos

Visão geral sobre marcas inteligentes