Ana içeriğe geç

Column

Form alanını dikey sütunlara bölen yerleşim nesnesidir. İçine başka nesneler yerleştirir, böylece alanları yan yana ve hizalı şekilde dizersiniz. Tek başına bir veri tutmaz; görevi düzeni sağlamaktır.

Bu nesnenin bir değeri yoktur. Column bir kapsayıcı (container) nesnedir; ekranda kendi başına veri göstermez, içine koyduğunuz nesneleri taşır. Sınıf zinciri Column : LayoutControl : BaseControl şeklindedir ve Visible ya da Enabled gibi bir özelliği yoktur; görünürlüğü Layout nesnesi üzerinden yönetilir.

Column, Section ile birebir aynı API'ye sahiptir: ikisi de LayoutControl türevidir, aynı Items, Layout ve DesignerProps üyelerini taşır ve görünürlüğü aynı Layout temelli mekanizmayla ayarlanır. Bu sayfadaki her şey Section için de geçerlidir.

Ne zaman kullanılır?

Birden çok alanı yan yana hizalı göstermek istediğinizde kullanılır: solda ad, sağda soyad gibi. Genellikle tek başına değil, satır içinde birden fazla Column ile birlikte kullanılır ve her sütun ekranın bir parçasını kaplar. Daha büyük gruplamalar için Panel, sekmeli düzen için Tabs, katlanabilir bölümler için Section daha uygundur.

Tasarımcı özellikleri

Bir Column seçildiğinde Özellik Görüntüleyici sekmelere ayrılır. Column bir yerleşim nesnesi olduğu için davranış ve görünüm ayarları sadedir.

General

ÖzellikAçıklama
NameNesnenin koddaki adı (ör. Column1). Koddan bu adla erişirsiniz.

Data Source

Column, kaç sütun oluşturulacağını bir liste üzerinden belirleyebilir. Items listesindeki her eleman bir sütuna karşılık gelir.

ÖzellikTipAçıklama
ItemsList<String>Sütunları tanımlayan liste. Her eleman bir sütunu temsil eder; sütun başlıkları ve sayısı bu listeden gelir.

Layout

Column'un görünürlüğü, genişliği ve iç boşluğu kendi üzerinde değil, Layout nesnesi (ContainerLayout) üzerinde tutulur. Sütunun görünürlüğünü koddan değiştirmek için kullanacağınız asıl yer burasıdır.

ÖzellikTipAçıklama
Layout.WidthStringSütunun genişliği (ör. yüzde ya da piksel değeri).
Layout.PaddingStringSütunun iç boşluğu.
Layout.VisibleNullable<Boolean>Sütunun sunucu tarafındaki görünürlüğü. Tüm sütunu birden gizlemek için bunu kullanın.
Layout.ClientVisibleNullable<Boolean>Sütunun yalnızca istemci (tarayıcı) tarafındaki görünürlüğü.

DesignerProps nesnesi, tasarımcıdaki düzen ayarlarını taşır:

ÖzellikTipAçıklama
DesignerProps.LayoutContainerLayoutTasarımcı tarafındaki düzen (yukarıdaki ContainerLayout ile aynı şekil).
DesignerProps.AllowAutoClearBooleanSütun gizlendiğinde içindeki değerlerin otomatik temizlenip temizlenmeyeceği.

Olaylar

Column bir yerleşim nesnesidir ve harvest taramasında kendine ait olayı yoktur (events: []). Değer taşımadığı için değer olayı (ValueChanged vb.) de bulunmaz. Aşağıdaki yaşam döngüsü kancaları Column'a özel olaylar değil, BaseControl üzerinden gelen genel kancalardır; bu nesne için ayrı bir olay tablosu sunmuyoruz.

BaseControl üzerinden gelen genel kancalar: OnInit, OnLoad, OnPreRender, OnRender, OnPropertyChanging, OnPropertyChanged. Bunlar tüm nesnelerde ortaktır ve Column'a özgü bir davranışı temsil etmez.

Kod örnekleri

Column'un değeri olmadığı için ondan değer okunmaz; bunun yerine görünürlüğünü Layout üzerinden yönetirsiniz. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir.

Form kodu (C#, sunucu)

Form kodunda nesneye doğrudan adıyla erişir, görünürlüğü Layout.Visible üzerinden ayarlarsınız:

// Sütunu gizle veya göster (sunucu tarafı)
Column1.Layout.Visible = false;

// Yalnızca istemci tarafında gizle
Column1.Layout.ClientVisible = false;

// Sütunun genişliğini ayarla
Column1.Layout.Width = "50%";
uyarı
Column'da Visible / Enabled yoktur

Column1.Visible ya da Column1.Enabled yazmayın; bu özellikler Column sınıfında, LayoutControl ve BaseControl zincirinde bulunmaz. Görünürlük için her zaman Column1.Layout.Visible (sunucu) veya Column1.Layout.ClientVisible (istemci) kullanın. Column'da pasifleştirme (Enabled) kavramı yoktur; alanları kullanım dışı bırakmak istiyorsanız içindeki nesneleri tek tek yönetin.

Akış (Flow) kodu (C#, sunucu)

Akış kodundaki Document1.Controls["..."] genel tutamağı (handle) .Value / .Text / .Rows taşıyan değer nesneleri içindir. Column gibi yerleşim kapsayıcılarının sunucu tarafından bu tutamak üzerinden değiştirilmesi için doğrulanmış bir kullanım kalıbı yoktur; bu nedenle aşağıdaki kalıp denenmemiş bir genel-tutamak yaklaşımıdır.

// TODO: dump-only - yerleşim kapsayıcısının genel tutamak üzerinden
// sunucu tarafında değiştirilmesi için doğrulanmış bir idiom yok.
// Mümkünse Form kodundaki tipli Column1.Layout.Visible kalıbını tercih edin.

İstemci kodu (TypeScript, tarayıcı)

İstemci tarafında nesneye this. ile erişir, görünürlüğü yine layout üzerinden ayarlarsınız:

// Sütunu istemci tarafında gizle veya göster
this.Column1.layout.clientVisible = false;
Column değer tutmaz

Column'a .Value ile değer yazmaya çalışmayın; bu nesnenin değeri yoktur. Veri girişi için Column'un içine TextBox, ComboBox gibi nesneler yerleştirin. Column yalnızca onları yan yana hizalar.

İpuçları

  • Bir satırı eşit parçalara bölmek için yan yana birden çok Column kullanın; her birinin Layout.Width değeriyle satırın bir bölümünü kaplamasını sağlayın.
  • Tüm bir sütunu birden gizlemek için tek tek nesneleri değil, doğrudan Column'un Layout.Visible (sunucu) ya da Layout.ClientVisible (istemci) özelliğini değiştirin. İçindeki tüm nesneler birlikte gizlenir.
  • Sütun gizlendiğinde içindeki alanların değerlerinin temizlenmesini istiyorsanız DesignerProps.AllowAutoClear ayarına bakın.
  • Column ile Section aynı API'yi paylaşır; birinde öğrendiğiniz Layout temelli görünürlük kalıbı diğerinde aynen geçerlidir.
Tüm tasarımcı özellikleri (tam liste)

General: Name, ControlId

Data Source: Items (List<String>)

Layout: Layout (ContainerLayout: Width, Padding, Visible, ClientVisible), DesignerProps (ContainerLayout Layout, Boolean AllowAutoClear)

Temel üyeler (BaseControl): ClientEvents, ServerEvents, ExecutedServerEvents

Olaylar: Yok (harvest: events: []). Yalnızca BaseControl üzerinden gelen genel kancalar bulunur (OnInit, OnLoad, OnPreRender, OnRender, OnPropertyChanging, OnPropertyChanged); bunlar Column'a özgü değildir.