Eski Form Alanları
Eski Form Alanları
Aspose.Words FOSS for .NET Word’ün eski (içerik denetimi öncesi) form alanlarını — metin girişi, onay kutusu ve açılır menü alanlarını — FormField sınıfı ve Aspose.Words.Fields içindeki üç özel alan alt sınıfı aracılığıyla okur ve değiştirir.
Form Alanı Değerlerini Okuma
Document.Range.FormFields (FormFieldCollection) bir aralıktaki tüm eski form alanlarına düğüm ağacını elle dolaşmadan doğrudan erişim sağlar. Her FormField, Name‘ü (alanı referanslamak için kullanılan yer imi tarzı tanımlayıcı), Type‘ü (hangi tür form alanı olduğunu belirten bir FieldType değeri), Result‘ı (mevcut değer), Enabled‘i ve HelpText/OwnHelp ile StatusText/OwnStatus aracılığıyla yardım/durum metnini ortaya çıkarır. SetTextInputValue(newValue), bir metin girişi alanı için yeni bir değeri doğrudan ayarlar. FormFieldCollection‘e yer imi adıyla (ör. formFields["BookmarkName"]) indeksleyerek belirli bir alanı alın, ve Remove(formField) / RemoveAt(index) koleksiyondan alanları siler.
Metin, Onay Kutusu ve Açılır Menü Alan Türleri
Üç eski form alanı türünün her birinin özel bir sınıfı vardır: FieldFormText ( FORMTEXT alanı, FieldType.FieldFormTextInput ile eşleşen) serbest metin girişi için, FieldFormCheckBox ( FORMCHECKBOX alanı) bir boolean geçişi için ve FieldFormDropDown ( FORMDROPDOWN alanı) bir seçim listesi için. Altındaki FormField düğümünde, TextInputType (bir TextFormFieldType değeri — Regular, Number, Date, CurrentDate, CurrentTime veya Calculated) ve TextInputFormat bir metin alanının değerinin nasıl yorumlanıp biçimlendirileceğini kontrol eder; MaxLength giriş uzunluğunu sınırlar; TextInputDefault varsayılan değerini sağlar. Checked ve Default onay kutusu alanlarına uygulanır, IsCheckBoxExactSize/CheckBoxSize ise render edilen boyutunu kontrol eder. Açılır menü alanları seçenek listesini DropDownItems içinde taşır, bu bir DropDownItemCollection olup Add, Insert, Remove, Contains ve IndexOf destekler, ayrıca şu anda seçili öğe için DropDownSelectedIndex bulunur.
İpuçları ve En İyi Uygulamalar
- Manuel olarak
Document.Range.Fields’i tipe göre filtrelemek yerineDocument.Range.FormFields’ı kullanın — bu, eski form alanları için doğrudan, tiplenmiş giriş noktasıdır. - Kullanıcı alanı terk ettiğinde form alanının değeri bağımlı alanın yeniden hesaplanmasını tetiklemeli ise
CalculateOnExitayarlayın. FormField.EntryMacro/ExitMacroorijinal belgede yapılandırılmış VBA makro adlarına referans verir — bunları okumak herhangi bir makro kodunu çalıştırmaz.- Bir metin alanının
Result‘ini sayı veya tarih olarak ayrıştırmadan önceTextInputType‘ı kontrol edin —Regularalanları format kısıtlaması getirmez.
Sık Karşılaşılan Sorunlar
| Sorun | Neden | Çözüm |
|---|---|---|
Yer işareti adıyla FormFieldCollection indeksleme null döndürüyor | Form alanının yer işareti adı eşleşmiyor veya alan aranan aralıkta bulunmuyor | Sıralama sırasında FormField.Name aracılığıyla tam yer işareti adını doğrulayın |
Checked ayarlandıktan sonra onay kutusu durumu yansıtılmıyor | Belge değişiklikten sonra kaydedilmedi | Belgeyi değişiklikten sonra kaydedin; Checked bir sonraki erişimde okunur |
Açılır menü DropDownSelectedIndex aralık dışında | Dizin, DropDownItems içinde bir öğeye karşılık gelmiyor | Ayar yapmadan önce dizini DropDownItems.Count ile doğrulayın |
| Metin alanı değeri uygulanmadı | SetTextInputValue yerine doğrudan özellik ataması kullanıldı | FormField üzerinde SetTextInputValue(newValue) çağır |
FAQ
FormField ile FieldFormText/FieldFormCheckBox/FieldFormDropDown arasındaki fark nedir?
FormField, herhangi bir eski form alanını temsil eden genel düğümdür ve Document.Range.FormFields aracılığıyla erişilir. FieldFormText, FieldFormCheckBox ve FieldFormDropDown, Field‘den türetilen, genel Field koleksiyonunu kullanırken her alan türü için alan-spesifik sınıflardır.
Bir belgede tüm form alanı değerlerini nasıl alırım?
Her FormField için Document.Range.FormFields öğelerini numaralandır ve Name/Result oku.
Açılır menü form alanına seçenek ekleyebilir miyim?
Evet — FormField.DropDownItems, Add(value), Insert(index, value) ve Remove(name) içeren bir DropDownItemCollection.
Bunlar modern içerik denetimleriyle aynı mı?
Hayır. Eski form alanları (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN) Word’ün yapılandırılmış belge etiketi (içerik denetimi) modelinden daha eskidir; ikisi de aynı belgede bulunabilir.
API Reference Özeti
| Sınıf / Metot | Açıklama |
|---|---|
Document.Range.FormFields | Bir aralıktaki tüm eski form alanlarına doğrudan erişim |
FormField | Genel eski form alanı düğümü: ad, tür, sonuç, etkin durum |
FormFieldCollection | FormField nesnelerinin koleksiyonu; yer imi adıyla indeksleyici, Remove() |
FieldFormText | FORMTEXT alan sınıfı |
FieldFormCheckBox | FORMCHECKBOX alan sınıfı |
FieldFormDropDown | FORMDROPDOWN alan sınıfı |
TextFormFieldType | Metin alanı giriş formatı için enum (Regular, Number, Date, vb.) |
DropDownItemCollection | Açılır menü alanının seçeneklerinin düzenlenebilir listesi |