Aracılığıyla paylaş


İzlenecek Yol: İçerik Denetimlerini Kullanarak Şablon Oluşturma

Bu anlatım, Microsoft Office Word şabolunundaki yapılandırılmış ve yeniden kullanılabilir içeriği oluşturmak için içerik denetimleri kullanan belge düzeyi özelleştirmesinin nasıl oluşturulduğunu gösterir.

Uygulama hedefi: Bu konudaki bilgiler, Word 2013 ve Word 2010 için belge düzeyi projelere yöneliktir. Daha fazla bilgi edinmek için, bkz. Office Uygulaması ve Proje Türüne Göre Kullanılabilir Özellikler.

Word, yapı taşları adı verilen, yeniden kullanılabilir belge kısımlarının bir koleksiyonunu oluşturmanıza olanak sağlar.Bu izlenecek yolda, iki tablonun yapı taşları olarak nasıl oluşturulduğu açıklanmaktadır.Her tablo, düz metin veya tarihler gibi farklı içerik türü içerebilen birçok içerik denetimi içerir.Tablolardan biri bir çalışan hakkında bilgi içerirken, diğer tablo müşteri geri bildirimini içerir.

Şablondan belge oluşturduktan sonra, tabloları, belgeye şablondaki kullanılabilir yapı taşlarını gösteren, birçok BuildingBlockGalleryContentControl nesneleri kullanarak ekleyebilirsiniz.

Bu örneklerde aşağıdaki görevler gösterilir:

  • Tasarım zamanında Word'de içerik denetimleri içeren tablolar oluşturma.

  • Birleşik giriş kutusu içerik denetimini ve açılan listeyi programlı olarak doldurma.

  • Kullanıcıların, belirlenmiş bir tabloyu düzenlemelerini engelleme.

  • Şablonun yapı taşları koleksiyonuna tablolar ekleme.

  • Şablondaki kullanılabilir yapı taşlarını gösteren içerik denetimlerini oluşturma.

[!NOT]

Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için, bkz. Visual Studio'da Geliştirme Ayarlarını özelleştirme.

Önkoşullar

Bu örneği tamamlamak için aşağıdaki bileşenler gerekmektedir:

Yeni Bir Word Şablonu Projesi Oluşturma

Kullanıcıların kendi kopyasını kolaylıkla oluşturabilmesi için, Word şablonu oluşturun.

Yeni bir Word şablonu projesi oluşturmak için

  • MyBuildingBlockTemplate isimli bir Word şablon projesi oluşturun.Sihirbazda, çözümde yeni bir belge oluşturun.Daha fazla bilgi için bkz. Nasıl Yapılır: Visual Studio'da Office Projeleri Oluşturma.

    Visual Studio tasarımcıda yeni Word şablonunu açar ve Çözüm Gezgini'ne MyBuildingBlockTemplate projesini ekler.

Çalışan Tablosu Oluşturma

Dört farklı içerik denetimi türü bulunan, kullanıcının bir çalışan hakkındaki bilgileri girebileceği bir tablo oluşturun.

Çalışan tablosu oluşturmak için

  1. Visual Studio tasarımcısında bulunan Word şablonunda, Şerit'in üzerindeki Ekle sekmesini tıklatın.

  2. Tablolar grubunda Tablo'yu tıklatın ve 2 sütüna 4 satırlık bir tablo ekleyin.

  3. İlk sütuna aşağıdaki sütundaki gibi metinler girin.

    Çalışan adı

    İşe Giriş Tarihi

    Başlık

    Resim

  4. Tablonun ikinci sütununda ilk hücresini tıklatın (Çalışan Adı'nın yanı).

  5. Şerit'te Developer (Geliştirici) sekmesine tıklatın.

    [!NOT]

    Geliştirici sekmesi görünür değilse önce onu görünür yapın.Daha fazla bilgi için bkz. Nasıl Yapılır: Şeritte Geliştirici Sekmesini Gösterme.

  6. Denetimler grubunda, ilk hücreye bir PlainTextContentControl'ü eklemek için PlainTextContentControlMetin düğmesini tıklatın.

  7. Tablonun ikinci sütununda ikinci hücreyi tıklatın (İşe Giriş Tarihi'nin yanı).

  8. Denetimler grubunda ikinci hücreye bir DatePickerContentControl'ü eklemek için Tarih Seçici düğmesine DatePickerContentControl tıklatın.

  9. Tablonun ikinci sütununda üçüncü hücreyi tıklatın (Başlık'ın yanı).

  10. Denetimler grubunda, üçüncü hücreye bir ComboBoxContentControl'ü eklemek için Birleşik Giriş Kutusu düğmesini ComboBoxContentControl tıklatın.

  11. Tablonun ikinci sütununda son hücreyi tıklatın (Resim'in yanı).

  12. Denetimler grubunda, son hücreye bir PictureContentControl'ü eklemek için PictureContentControlResim İçerik Denetimi düğmesini tıklatın.

Müşteri Geri Bildirimi Tablosu Oluşturma

Üç farklı içerik denetimi türü bulunan, kullanıcının müşteri geri bildirimi bilgilerini girebileceği bir tablo oluşturun.

Müşteri geri bildirimi tablosu oluşturmak için

  1. Word şablonunda, önceden eklediğiniz çalışan tablosunun son satırını tıklatın ve yeni paragraf eklemek için ENTER'a basın.

  2. Şerit üzerinde Ekle sekmesini tıklatın.

  3. Tablolar grubunda Tablo'yu tıklatın ve 2 sütüna 3 satırlık bir tablo ekleyin.

  4. İlk sütuna aşağıdaki sütundaki gibi metinler girin.

    Müşteri Adı

    Memnuniyet Derecesi

    Comments

  5. Tablonun ikinci sütununun ilk hücresini tıklatın (Müşteri Adı'nın yanı).

  6. Şerit'te Developer (Geliştirici) sekmesine tıklatın.

  7. Denetimler grubunda, ilk hücreye bir PlainTextContentControl'ü eklemek için PlainTextContentControlMetin düğmesini tıklatın.

  8. Tablonun ikinci sütununun ikinci hücresini tıklatın (Memnuniyet Derecesi'nin yanı).

  9. Denetimler grubunda, ikinci hücreye bir DropDownListContentControl'ü eklemek için Açılan Liste düğmesini DropDownListContentControl tıklatın.

  10. Tablonun ikinci sütununun son hücresini tıklatın (Açıklama'nın yanı).

  11. Denetimler grubunda, son hücreye bir RichTextContentControl'ü eklemek için RichTextContentControlZengin Metin düğmesini tıklatın.

Birleşik Giriş Kutusu ve Açılan Listeyi Programlı Olarak Doldurma

İçerik denetimlerini, Visual Studio içindeki Özellikler penceresini kullanarak tasarım zamanında başlatabilirsiniz.Ayrıca, onları çalışma zamanında da başlatabilirsiniz, böylece başlangıç durumlarını dinamik olarak ayarlamanıza olanak sağlanır.Bu anlatım için, nesnelerin nasıl çalıştığını görmek için çalışma zamanında ComboBoxContentControl ve DropDownListContentControl'ündeki girdileri doldurmak üzere kod kullanabilirsiniz.

İçerik denetiminin UI'ını programlı olarak değiştirmek için

  1. Çözüm Gezgini'nde ThisDocumen.cs veya ThisDocument.vb'ye sağ tıklatın ve sonra Kodu Göster'i tıklatın.

  2. Aşağıdaki kodu ThisDocument sınıfına ekleyin.Bu kod, bu anlatımın sonrasına kullanacağınız birçok nesneyi bildirir.

    Private GroupControl1 As Microsoft.Office.Tools.Word.GroupContentControl
    Private BuildingBlockControl1 As Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl
    Private BuildingBlockControl2 As Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl
    
    private Microsoft.Office.Tools.Word.GroupContentControl groupControl1;
    private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl1;
    private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl2;
    
  3. ThisDocument sınıfının ThisDocument_Startup yöntemine aşağıdaki kodu ekleyin.Bu kod, tablolardaki ComboBoxContentControl ve DropDownListContentControl'e girdiler ekler ve kullanıcı düzenlemeden önce her denetimde gösterilen yer tutucuyu ayarlar.

    ComboBoxContentControl1.PlaceholderText = "Choose a title, or enter your own"
    ComboBoxContentControl1.DropDownListEntries.Add("Engineer", "Engineer", 0)
    ComboBoxContentControl1.DropDownListEntries.Add("Designer", "Designer", 1)
    ComboBoxContentControl1.DropDownListEntries.Add("Manager", "Manager", 2)
    
    DropDownListContentControl1.PlaceholderText = _
        "Choose a rating (1 lowest, 3 highest)"
    DropDownListContentControl1.DropDownListEntries.Add("1", "1", 0)
    DropDownListContentControl1.DropDownListEntries.Add("2", "2", 1)
    DropDownListContentControl1.DropDownListEntries.Add("3", "3", 2)
    
    comboBoxContentControl1.PlaceholderText = "Choose a title, or enter your own";
    comboBoxContentControl1.DropDownListEntries.Add("Engineer", "Engineer", 0);
    comboBoxContentControl1.DropDownListEntries.Add("Designer", "Designer", 1);
    comboBoxContentControl1.DropDownListEntries.Add("Manager", "Manager", 2);
    
    dropDownListContentControl1.PlaceholderText =
        "Choose a rating (1 lowest, 3 highest)";
    dropDownListContentControl1.DropDownListEntries.Add("1", "1", 0);
    dropDownListContentControl1.DropDownListEntries.Add("2", "2", 1);
    dropDownListContentControl1.DropDownListEntries.Add("3", "3", 2);
    

Kullanıcıların, Çalışan Tablosunu Düzenlemelerini Engelleme

Çalışan tablosunu korumak için önceden kullandığınız GroupContentControl nesnesini kullanın.Tabloyu koruduktan sonra, kullanıcılar halen tablodaki içerik denetimlerini düzenleyebilir.Fakat, ilk sütundaki metni düzenleyemezler veya tabloyu diğer yollardan değiştiremezler, örn. satır ve sütun ekleme veya silme.Belgenin bir kısmını korumak için GroupContentControl'ün nasıl kullanılacağı hakkında daha fazla bilgi için, bkz. İçerik Denetimleri.

Kullanıcıların çalışan tablosunu düzenlemesini engellemek için

  • Bir önceki basamaktaki kodu ekledikten sonra, aşağıdaki kodu ThisDocument sınıfının ThisDocument_Startup yöntemine ekleyin.Bu kod, kullanıcıların önceden bildirdiğiniz GroupContentControl nesnesinin içine tabloyu koyarak, çalışan tablosunu düzenlemesini engeller.

    Me.Tables(1).Select()
    GroupControl1 = Me.Controls.AddGroupContentControl("groupControl1")
    
    this.Tables[1].Range.Select();
    groupControl1 = this.Controls.AddGroupContentControl("groupControl1");
    

Şablonun Yapı Taşları Koleksiyonuna Tablolar Ekleme

Kullanıcıların, oluşturduğunuz tabloları belgeye eklemesi için, tabloları şablondaki belge yapı taşları koleksiyonuna ekleyin.Belge yapı taşları hakkında daha fazla bilgi için, bkz. İçerik Denetimleri.

Şablonda yapı taşlarına tablolar eklemek için

  1. Bir önceki basamaktaki kodu ekledikten sonra, aşağıdaki kodu ThisDocument sınıfının ThisDocument_Startup yöntemine ekleyin.Bu kod, şablondaki tüm yeniden kullanılabilir yapı taşlarını içeren Microsoft.Office.Interop.Word.BuildingBlockEntries koleksiyonuna, tablolar içeren yeni yapı taşları ekler.Yeni yapı taşları, Çalışan ve Müşteri Bilgisi isimli yeni kategoride tanımlanır ve Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1 yapı taşı türüne atanır.

    Dim template1 As Word.Template = TryCast(Me.AttachedTemplate, Word.Template)
    If template1 IsNot Nothing Then
    
        template1.BuildingBlockEntries.Add("Employee Table", _
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", _
            Me.Tables(1).Range, InsertOptions:=Word.WdDocPartInsertOptions.wdInsertContent)
        template1.BuildingBlockEntries.Add("Customer Table", _
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", _
            Me.Tables(2).Range, InsertOptions:=Word.WdDocPartInsertOptions.wdInsertContent)
    End If
    
    Word.Template template1 = this.AttachedTemplate as Word.Template;
    
    if (template1 != null)
    {
        object description = null;
        template1.BuildingBlockEntries.Add("Employee Table",
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information",
            this.Tables[1].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent);
        template1.BuildingBlockEntries.Add("Customer Table",
            Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information",
            this.Tables[2].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent);
    }
    
  2. Bir önceki basamaktaki kodu ekledikten sonra, aşağıdaki kodu ThisDocument sınıfının ThisDocument_Startup yöntemine ekleyin.Bu kod, şablondan tabloları siler.Tablolar artık gerekli değildir, çünkü onları şablondaki yeniden kullanılabilir yapı taşları galerisine eklediniz.Kod ilk olarak, korunan çalışan tablosunun silinebilmesi için, belgeyi tasarım moduna koyar.

    If Me.FormsDesign = False Then 
        Me.ToggleFormsDesign()
    End If 
    Me.Tables(2).Delete()
    Me.Tables(1).Delete()
    Me.ToggleFormsDesign()
    
    if (!this.FormsDesign)
    {
        this.ToggleFormsDesign();
    }
    this.Tables[2].Delete();
    this.Tables[1].Delete();
    this.ToggleFormsDesign();
    

Yapı Taşlarını Görüntüleyen İçerik Denetimi Oluşturma

Önceden oluşturduğunuz yapı taşlarına (tablolar) erişim sağlayan içerik denetimi oluşturun.Kullanıcılar bu denetimi, belgeye tablo eklemek için tıklatabilir.

Yapı taşlarını görüntüleyen içerik denetimi oluşturmak için

  • Bir önceki basamaktaki kodu ekledikten sonra, aşağıdaki kodu ThisDocument sınıfının ThisDocument_Startup yöntemine ekleyin.Bu kod, önceden bildirdiğiniz BuildingBlockGalleryContentControl nesnesini başlatır.BuildingBlockGalleryContentControl, Çalışan ve Müşteri Bilgisi kategorisinde tanımlanan ve Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1 yapı taşı türüne sahip olan yapı taşlarını görüntüler.

    BuildingBlockControl1 = Me.Controls.AddBuildingBlockGalleryContentControl( _
        Me.Paragraphs(1).Range, "buildingBlockControl1")
    BuildingBlockControl1.BuildingBlockCategory = "Employee and Customer Information"
    BuildingBlockControl1.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1
    BuildingBlockControl1.PlaceholderText = "Choose your first building block"
    
    BuildingBlockControl2 = Me.Controls.AddBuildingBlockGalleryContentControl( _
        Me.Paragraphs(2).Range, "buildingBlockControl2")
    BuildingBlockControl2.BuildingBlockCategory = "Employee and Customer Information"
    BuildingBlockControl2.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1
    BuildingBlockControl2.PlaceholderText = "Choose your second building block"
    
    buildingBlockControl1 = this.Controls.AddBuildingBlockGalleryContentControl(
        this.Paragraphs[1].Range, "buildingBlockControl1");
    buildingBlockControl1.BuildingBlockCategory = "Employee and Customer Information";
    buildingBlockControl1.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1;
    buildingBlockControl1.PlaceholderText = "Choose your first building block";
    
    buildingBlockControl2 = this.Controls.AddBuildingBlockGalleryContentControl(
        this.Paragraphs[2].Range, "buildingBlockControl2");
    buildingBlockControl2.BuildingBlockCategory = "Employee and Customer Information";
    buildingBlockControl2.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1;
    buildingBlockControl2.PlaceholderText = "Choose your second building block";
    

Projeyi Test Etme

Kullanıcılar, çalışan tablosu veya müşteri geri bildirim tablosunu eklemek için belgedeki yapı taşı galeri denetimlerini tıklatabilir.Kullanıcılar, her iki tablodaki içerik denetimlerinde yanıtları yazabilir veya seçebilir.Kullanıcılar, müşteri geri bildirim tablosunun diğer kısımlarını değiştirebilir, ama çalışan tablosunun diğer kısımlarını değiştirmemeliler.

Çalışan tablosunu sınamak için

  1. F5 tuşuna basarak projeyi çalıştırın.

  2. İlk yapı taşınızı seçin'i, ilk yapı taşı galerisi içerik denetimini görüntülemek için tıklatın.

  3. Denetimdeki Custom Gallery 1 başlığının yanındaki açılan oku tıklatın ve Çalışan Tablosu'nu seçin.

  4. Çalışan Adı'nın sağındaki hücreyi tıklatın ve bir ad yazın.

    Bu hücreye sadece metin ekleyebildiğinizi doğrulayın.PlainTextContentControl, kullanıcıların sadece metin eklemesine izin verir; resım veya tablo gibi diğer tür içerikleri değil.

  5. İşe Alınma Tarihi'nin sağındaki hücreyi tıklatın ve tarih seçiciden bir tarih seçin.

  6. Başlık'ın sağındaki hücreyi tıklatın ve birleşik giriş kutusunda iş başlıklarından bir tanesini seçin.

    İsteğe bağlı olarak, listede olmayan iş başlığını girin.Bu olasıdır çünkü ComboBoxContentControl, kullanıcıların girdi listesinden seçmesine veya kendi girdilerini yazmalarına olanak sağlar.

  7. Resim hücresinin sağındaki hücrede simgeyi tıklatın ve görüntülenecek resme gözatın.

  8. Tabloya sütun ve satır eklemeye çalışın ve satır ve sütunları tablodan silmeye çalışın.Tabloyu değiştiremediğinizi doğrulayın.GroupContentControl, herhangi bir değişiklik yapmanızı engller.

Müşteri geri bildirimi tablosunu sınamak için

  1. İkinci yapı taşınızı seçin'i, ikinci yapı taşı galerisi içerik denetimini görüntülemek için tıklatın.

  2. Denetimdeki Custom Gallery 1 başlığının yanındaki açılan oku tıklatın ve Müşteri Tablosu'nu seçin.

  3. Müşteri Adı'nın sağındaki hücreyi tıklatın ve farklı bir ad yazın.

  4. Memnuniyet Derecesi'nin sağındaki hücreyi tıklatın ve açılan kutuda uygun olan seçeneklerden bir tanesini seçin.

    Kendi girdinizi yazamadığınızı doğrulayın.DropDownListContentControl, kullanıcıların sadece girdi listesinden seçmesine izin verir.

  5. Açıklama'nın sağındaki hücreyi tıklatın ve bir açıklama yazın.

    İsteğe bağlı olarak, metin dışında içerikler ekleyin, örn. resim veya gömülü tablo.Bu olasıdır çünkü RichTextContentControl kullanıcıların metin dışındaki içerikleri eklemesine olanak sağlar.

  6. Tabloya sütun ve satır eklemeyebildiğinizi ve satır ve sütunları tablodan silebildiğinizi doğrulayın.Tabloyu GroupContentControl içine koyarak korumadığınız için bu olasıdır.

  7. Şablonu kapatın.

Sonraki Adımlar

Aşağıdaki konudan içerik denetimlerinin nasıl kullanıldığı hakkında daha fazla bilgi alabilirsiniz:

Ayrıca bkz.

Görevler

Nasıl Yapılır: Word Belgelerine İçerik Denetimleri Ekleme

Nasıl Yapılır: İçerik Denetimlerini Kullanarak Belge Bölümlerini Koruma

Kavramlar

Genişletilmiş Nesneleri Kullanarak Word'ü Otomatikleştirme

İçerik Denetimleri

Ana Bilgisayar Öğelerine ve Denetimlerine Genel Bakış

Konak Denetimlerinin ve Konak Öğelerinin Programlama Sınırlamaları

Office Belgelerine Çalışma Zamanında Denetim Ekleme