İ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:
Microsoft Office geliştirici araçlarını içeren bir Visual Studio 2013 sürümü. Daha fazla bilgi edinmek için, bkz. Office Çözümleri Geliştirmek İçin Bilgisayarı Yapılandırma.
Word 2013 veya Word 2010.
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
Visual Studio tasarımcısında bulunan Word şablonunda, Şerit'in üzerindeki Ekle sekmesini tıklatın.
Tablolar grubunda Tablo'yu tıklatın ve 2 sütüna 4 satırlık bir tablo ekleyin.
İlk sütuna aşağıdaki sütundaki gibi metinler girin.
Çalışan adı
İşe Giriş Tarihi
Başlık
Resim
Tablonun ikinci sütununda ilk hücresini tıklatın (Çalışan Adı'nın yanı).
Ş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.
Denetimler grubunda, ilk hücreye bir PlainTextContentControl'ü eklemek için Metin düğmesini tıklatın.
Tablonun ikinci sütununda ikinci hücreyi tıklatın (İşe Giriş Tarihi'nin yanı).
Denetimler grubunda ikinci hücreye bir DatePickerContentControl'ü eklemek için Tarih Seçici düğmesine tıklatın.
Tablonun ikinci sütununda üçüncü hücreyi tıklatın (Başlık'ın yanı).
Denetimler grubunda, üçüncü hücreye bir ComboBoxContentControl'ü eklemek için Birleşik Giriş Kutusu düğmesini tıklatın.
Tablonun ikinci sütununda son hücreyi tıklatın (Resim'in yanı).
Denetimler grubunda, son hücreye bir PictureContentControl'ü eklemek için Resim İç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
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.
Şerit üzerinde Ekle sekmesini tıklatın.
Tablolar grubunda Tablo'yu tıklatın ve 2 sütüna 3 satırlık bir tablo ekleyin.
İlk sütuna aşağıdaki sütundaki gibi metinler girin.
Müşteri Adı
Memnuniyet Derecesi
Comments
Tablonun ikinci sütununun ilk hücresini tıklatın (Müşteri Adı'nın yanı).
Şerit'te Developer (Geliştirici) sekmesine tıklatın.
Denetimler grubunda, ilk hücreye bir PlainTextContentControl'ü eklemek için Metin düğmesini tıklatın.
Tablonun ikinci sütununun ikinci hücresini tıklatın (Memnuniyet Derecesi'nin yanı).
Denetimler grubunda, ikinci hücreye bir DropDownListContentControl'ü eklemek için Açılan Liste düğmesini tıklatın.
Tablonun ikinci sütununun son hücresini tıklatın (Açıklama'nın yanı).
Denetimler grubunda, son hücreye bir RichTextContentControl'ü eklemek için Zengin 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
Çözüm Gezgini'nde ThisDocumen.cs veya ThisDocument.vb'ye sağ tıklatın ve sonra Kodu Göster'i tıklatın.
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;
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
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); }
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
F5 tuşuna basarak projeyi çalıştırın.
İlk yapı taşınızı seçin'i, ilk yapı taşı galerisi içerik denetimini görüntülemek için tıklatın.
Denetimdeki Custom Gallery 1 başlığının yanındaki açılan oku tıklatın ve Çalışan Tablosu'nu seçin.
Ç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.
İşe Alınma Tarihi'nin sağındaki hücreyi tıklatın ve tarih seçiciden bir tarih seçin.
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.
Resim hücresinin sağındaki hücrede simgeyi tıklatın ve görüntülenecek resme gözatın.
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
İkinci yapı taşınızı seçin'i, ikinci yapı taşı galerisi içerik denetimini görüntülemek için tıklatın.
Denetimdeki Custom Gallery 1 başlığının yanındaki açılan oku tıklatın ve Müşteri Tablosu'nu seçin.
Müşteri Adı'nın sağındaki hücreyi tıklatın ve farklı bir ad yazın.
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.
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.
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.
Şablonu kapatın.
Sonraki Adımlar
Aşağıdaki konudan içerik denetimlerinin nasıl kullanıldığı hakkında daha fazla bilgi alabilirsiniz:
- İçerik denetimlerini belgede gömülü XML bölümlerine, diğer adıyla özel XML, öğelerini bağlayın.Daha fazla bilgi için bkz. İzlenecek Yol: İçerik Denetimlerini Özel XML Bölümlerine Bağlama.
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
Ana Bilgisayar Öğelerine ve Denetimlerine Genel Bakış
Konak Denetimlerinin ve Konak Öğelerinin Programlama Sınırlamaları