Aracılığıyla paylaş


Akıllı Etiketler Mimarisi

Visual Studio 2010 içindeki Visual Studio'da Office geliştirme araçları, Microsoft Office Word belgelerine ve Microsoft Office Excel çalışma kitaplarına hızlıca akıllı etiketler eklemenize olanak sağlayan esnek bir akıllı etiket sağlar. Gelişmiş senrayolar için, kendi akıllı etiket tanıyıcılarınızı oluşturabilir ve akıllı etikette saklanan veriye erişebilirsiniz.

Akıllı etiketler hakkında daha fazla bilgi için, bkz. Akıllı Etiketlere Genel Bakış.

Uygulama alanı: Bu konudaki bilgiler Excel 2007 ve Word 2007 uygulamalarının belge düzeyi projelerine ve uygulama düzeyi projelerine yöneliktir. Daha fazla bilgi için bkz. Office Uygulamalarında Kullanılabilir Özellikler ve Proje Türü.

Nesne Modeline Genel Bakış

Akıll etiket nesne modeli, akıllı etiketlerin gerçekleştirdiği eylemlerden, akıllı etiketleri ayırır. Aşağıdaki bölümlerde akıllı etiketler oluşturmak için kullandığınız ana nesneler anlatılmıştır. Belgeye akıllı etiketlerin nasıl eklendiğini gösteren kod örnekleri için, bkz. Nasıl Yapılır: Word Belgelerine Akıllı Etiketler Ekleme ve Nasıl Yapılır: Excel Çalışma Kitaplarına Akıllı Etiketler Ekleme.

Akıllı Etiketler

Kodunuzda, akıllı etiket Microsoft.Office.Tools.Word.SmartTag veya Microsoft.Office.Tools.Excel.SmartTag nesnesidir. Bu öğeler aşağıdaki özellikleri kapsar:

  • Terms ve Expressions. Bu özellikler akıllı etiketler için tanınabilir terimler içerir. Basit bir dizgiyi belirlemek için, Terms özelliğine bir dizgi ekleyin. Karmaşık bir dizgiyi belirlemek için, Expressions özelliğine dizgiyi tanımlayan bir normal ifade ekleyin.

  • Actions. Bu özellik, kullanıcı akıllı etiketi seçtiğinde gerçekleşecek eylemleri içerir.

  • Caption. Bu özellik akıllı etiketin etiketini belirler.

Eylemler

Kullanıcı akıllı etiketinizi seçtiğinde, kullanıcı akıllı etiketinize özel, bir veya daha fazla eylemi gerçekleştirebilir. Her eylem Microsoft.Office.Tools.Word.Action veya Microsoft.Office.Tools.Excel.Action nesnesi tarafından temsil edilir. Bu nesneler sağlarBeforeCaptionShow ve Click olaylar:

  • BeforeCaptionShow olayı, kullancı akıllı etiket simgesini tıkladıktan hemen sonra, fakat akıllı etiket menüzü görüntülenmeden önce oluşur. Akıllı etiketteki eylemin başlığını değiştirmek istiyorsanız, bu olayı çalışma zamanında işleyin.

  • Click olayı, kullancı akıllı etiket menüsündeki eylemin başlığını tıkladıktan sonra oluşur. Kullanıcı eyleme tıkladığında kodu çalıştırmak için bu olayı işleyin.

Bu olaylar için olay işleyicileri, tanınmış metne ve metnin konumuna erişim sağlayan Microsoft.Office.Tools.Excel.ActionEventArgs veya Microsoft.Office.Tools.Word.ActionEventArgs nesnesi alır.

Akıllı Etiketleri Oluşturma

Akıllı etiketi oluşturma yolunuz, projenizin .NET Framework 3.5 veya .NET Framework 4 hedeflemesine bağlıdır.

.NET Framework 3.5'i hedeflediğinizde, SmartTag ve Action, doğrudan oluşturabileceğiniz sınıflardır. Aşağıdaki kod örneğinde .NET Framework 3.5'i hedefleyen bir Word projesinde basit bir akıllı etiketin nasıl oluşturulduğu gösterilmektedir. Bu örneği kullanmak için, belge düzeyi projesindeki ThisDocument sınıfından veya uygulama düzeyi projesindeki ThisAddIn sınıfından bu kodu çalıştırın.

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);

.NET Framework 4 hedeflediğinizde, SmartTag ve Action doğrudan oluşturamayacağınız arayüzlerdir. Onun yerine, nesnelerin örneklerini almak için projenizdeki Globals sınıfı tarafından sağlanan CreateSmartTag ve CreateAction yöntemlerini kullanmalısınız. Globals sınıfı hakkında daha fazla bilgi için, bkz. Office Projeleri Nesnelerine Genel Erişim. Aşağıdaki kod örneğinde .NET Framework 4 hedefleyen bir Word projesinde basit bir akıllı etiketin nasıl oluşturulduğu gösterilmektedir. Bu örneği kullanmak için, belge düzeyi projesindeki ThisDocument sınıfından veya uygulama düzeyi projesindeki ThisAddIn sınıfından bu kodu çalıştırın.

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);

Daha karmaşık akıllı etiketleri gösteren kod örnekleri ve sonraki yönergeler için, bkz. Nasıl Yapılır: Word Belgelerine Akıllı Etiketler Ekleme ve Nasıl Yapılır: Excel Çalışma Kitaplarına Akıllı Etiketler Ekleme.

Akıllı Etiket Tanıyıcıları Oluşturma

Eğer varsayılan akıllı etiket tanıma davranışını özelleştirmek istiyorsanız, kendi akıllı etiket tanıyıcınızı oluşturabilirsiniz. Bunu yapma yolunuz, projenizin .NET Framework 3.5 ve .NET Framework 4 hedeflemesine bağlıdır.

Varsayılan Metin Tanıma Davranışı

Kullanıcı belgeye veya çalışma kitabına metin yazdığında, Word ve Excel metinden bir belirteç listesi oluşturur. Varsayılan akıllı etiket tanıyıcısı, bu belirteç listesini ve kullanıcı tarafından yazılan tüm metni alır. Varsayılan tanıyıcı, aşağıdaki durumlardan biriyle karşılaşıldığında, akıllı etiket tanımlar.

  • Terms özelliği içindeki dizgilerden bir tanesi, belge veya çalışma kitabındaki belirteçlerden bir tanesiyle tamamen eşleşir.

  • Expressions özelliği içindeki normal ifadelerden bir tanesi kullanıcı tarafından yazılan tüm metinle eşleşir.

Word ve Excel, katışık boşlukları veya sayıları, harfleri ve sembolleri katıştıran dizgileri içeren dizgileri, kullanıcı onları yazdığında, ayrı belirteçlere ayrıştırır. Örneğin, eğer kullanıcı "sales report" yazdığında, Word ve Excel "sales" ve "report" belirteçlerini oluşturur. Benzer olarak, eğer kullanıcı "2005sales" yazdığında, Word ve Excel "2005" ve "sales" belirteçlerini oluşturur.

Eğer akıllı etiketinizin, katışık boşlukları veya sayıları, harfleri ve sembolleri katıştıran dizgileri içeren dizgileri tanımasını istiyorsanız, Terms özelliğine dizgi eklemeyin. Onun yerine, bir dizgi tanımlayan normal ifadeyi Expressions özelliğine ekleyin veya dizgiyi arayan kendi tanıyıcınızı oluşturun.

.NET Framework 4 Hedefleyen Projelerde Akıllı Etiket Tanıyıcısı Oluşturma

Kendi akıllı etiket tanıyıcınızı oluşturmak için, Microsoft.Office.Tools.Word.ISmartTagExtension veya Microsoft.Office.Tools.Excel.ISmartTagExtension arayüzünü uygulayan bir sınıf tanımlayın. ISmartTagExtension.Recognize yönteminin uygulamasında, akıllı etiket terimleri için metni arayın ve eğer akıllı etiket bulunduysa Word ve Excel'le akıllı etiketi kaydedin. Akıllı etiketi kaydetmek için, Recognize yönteminin context parametresinin PersistTag yöntemini çağırın.

Aşağıdaki kod örneğinde .NET Framework 4 hedefleyen bir Word projesinde özel tanıyıcıyla birlikte basit bir akıllı etiket sınıfının nasıl oluşturulduğu gösterilmektedir.

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; }
    }
}

Özel tanıyıcılarla birlikte daha karmaşık akıllı etiket sınıflarını gösteren kod örnekleri ve sonraki yönergeler için, bkz. Nasıl Yapılır: Word and .NET Framework 4'te Özel Tanıyıcılarla Akıllı Etiketler Oluşturma ve Nasıl Yapılır: Excel and .NET Framework 4'te Özel Tanıyıcılarla Akıllı Etiketler Oluşturma.

.NET Framework 3.5 Hedefleyen Projelerde Akıllı Etiket Tanıyıcısı Oluşturma

Kendi akıllı etiket tanıyıcınızı oluşturmak için, Microsoft.Office.Tools.Word.SmartTag veya Microsoft.Office.Tools.Excel.SmartTag'den bir sınıf türetin veya sınıftaki SmartTag.Recognize yöntemini geçersiz kılın. Yönteminizde, akıllı etiket terimleri için metni arayın ve eğer akıllı etiket bulunduysa Word ve Excel'le akıllı etiketi kaydedin. Akıllı etiketi kaydetmek için, sınıfınızın Microsoft.Office.Tools.Word.SmartTag veya Microsoft.Office.Tools.Excel.SmartTag'den türettiği PersistTag yöntemini çağırın.

Aşağıdaki kod örneğinde .NET Framework 3.5 hedefleyen bir Word projesinde özel tanıyıcıyla birlikte basit bir akıllı etiket sınıfının nasıl oluşturulduğu gösterilmektedir.

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);
        }
    }
}

Özel tanıyıcılarla birlikte daha karmaşık akıllı etiket sınıflarını gösteren kod örnekleri ve sonraki yönergeler için, bkz. Nasıl Yapılır: Word and .NET Framework 3.5'te Özel Tanıyıcılarla Akıllı Etiketler Oluşturma ve Nasıl Yapılır: Excel and .NET Framework 3.5'te Özel Tanıyıcılarla Akıllı Etiketler Oluşturma.

Özellik Çantasındaki Veriyi Saklama ve Alma

Akıllı etiketler, özellik çantası olarak bilinen, anahtar ve değer çiftleri koleksiyonunda verileri saklayabilir. Özellik çantasındaki her değer ve anahtar bir dizgidir.

Özellik çantasına erişmek için iki yol vardır:

  • Microsoft.Office.Tools.Word.Action veya Microsoft.Office.Tools.Excel.Action nesnesinin Click veya BeforeCaptionShow olaylarını işleyebilir ve akıllı etiketin özellik çantasından okuyup yazmak için olay bağımsız değişken parametresinin Properties özelliğini kullanabilirsiniz. Properties özelliği, ISmartTagProperties nesnesi döndürür. ISmartTagProperties arayüzü, projenizde Microsoft Smart Tags 2.0 Tür Kitaplığı'na başvuru eklediğinizde kullanılabilir olur.

  • Yukarıdaki yönergeleri takip ederek özel akıllı etiket tanıyıcısı oluşturabilirsiniz. Uygulamanızda veya Recognize yöntemini geçersiz kılmanızda, akıllı etiketin özellik çantasından okuyup yazmak için kullanabileceğiniz ISmartTagProperties nesnesini almak amacıyla site parametresinin GetNewPropertyBag yöntemini kullanın.

Özellik çantasından nasıl okunu yazıldığının örnekleri için, aşağıdaki konulara bakınız:

Normal İfadeler ve Özellik Çantası

Akıllı etikete normal ifade atadığınızda, varsayılan tanıyıcı,normal ifadeden yakalanan her grup için akıllı etiketin özellik çantasına bir anahtar ve değer çifti ekler.

Bu davranışı gösteren bir örnek için, bkz. İzlenecek Yol: Belge Düzeyi Özelleştirmesi Kullanarak Akıllı Etiket Oluşturma. Normal ifadelerde yakalanan gruplar hakkında daha fazla bilgi için, bkz. Grouping Constructs ve The Regular Expression Object Model.

Ayrıca bkz.

Görevler

Nasıl Yapılır: Word ve Excel'de Akıllı Etiketleri Etkinleştirme

Nasıl Yapılır: Word Belgelerine Akıllı Etiketler Ekleme

Nasıl Yapılır: Excel Çalışma Kitaplarına Akıllı Etiketler Ekleme

İzlenecek Yol: Belge Düzeyi Özelleştirmesi Kullanarak Akıllı Etiket Oluşturma

İzlenecek Yol: Uygulama Düzeyi Eklentisini Kullanarak Akıllı Etiket Oluşturma

Kavramlar

Nasıl Yapılır: Word and .NET Framework 3.5'te Özel Tanıyıcılarla Akıllı Etiketler Oluşturma

Nasıl Yapılır: Excel and .NET Framework 3.5'te Özel Tanıyıcılarla Akıllı Etiketler Oluşturma

Diğer Kaynaklar

Akıllı Etiketlere Genel Bakış