Ana içeriğe geç

TabMenu

Form içeriğini sekmelere bölen menü nesnesidir. Her sekme ayrı bir bölümü temsil eder; kullanıcı sekmelere tıklayarak bölümler arasında geçiş yapar. Uzun ve kalabalık formları düzenli parçalara ayırmak için kullanılır.

Değer tipi: Bu nesnenin bir değeri yoktur. TabMenu bir kapsayıcı (container) nesnedir; içine başka nesneler yerleştirilir. Seçili sekme ise SelectedIndex (sıra numarası) ve SelectedItem (sekmenin kendisi) üzerinden okunur.

Ne zaman kullanılır?

Bir forma çok sayıda alan sığdırmanız gerektiğinde idealdir. Örneğin "Genel Bilgiler", "Adres" ve "Belgeler" bölümlerini üç ayrı sekmeye koyabilirsiniz. Böylece kullanıcı her şeyi tek ekranda görmek yerine bölüm bölüm ilerler.

Sadece görsel bir çerçeve isterseniz Panel, kayan içerik isterseniz ScrollView daha uygundur. Sekme yapısı yerine yatay alt menü isterseniz bu nesne tam yerindedir.

Tasarımcı özellikleri

Bir TabMenu seçildiğinde Özellik Görüntüleyici sekmelere ayrılır. Sekmeler ise nesnenin kendi tasarım yüzeyinden eklenir.

General

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

Behavior

ÖzellikAçıklama
ReadOnlyNesneyi salt okunur duruma alır.
SelectedIndexSeçili sekmenin sıra numarası (0'dan başlar). Koddan okunup yazılabilir (Int32).
SelectedItemO an seçili olan sekme nesnesi (TabMenuItem, salt okunur).
TabItemsNesnedeki tüm sekmelerin listesi (List<TabMenuItem>).

Appearance

ÖzellikAçıklama
Visible / Client VisibleNesnenin görünürlüğü. Client Visible sadece tarayıcı tarafında etkilidir.
Enabled / Client EnabledNesnenin aktif olup olmadığı. Client Enabled sadece tarayıcı tarafında etkilidir.
CaptionNesnenin etiketi (ControlCaption).
TitleNesnenin başlığı (MultiLanguageText, çok dilli olabilir).
Style / ContainerStyleNesnenin ve kapsayıcısının görsel stili.

Sekme nesnesi (TabMenuItem)

SelectedItem ve TabItems içindeki her sekme bir TabMenuItem nesnesidir. Sekmeyi indeks yerine adıyla yönetmek için bu alanları kullanırsınız:

AlanTipAçıklama
KeyStringSekmenin anahtarı (kod tarafında sekmeyi tanımlamak için en güvenilir alan).
TitleDictionary<String, String>Sekmenin çok dilli başlığı (dil kodu → metin).
IconStringSekmenin simgesi.
OrderNoNullable<Int32>Sekmenin sıra numarası.
SelectedNullable<Boolean>Sekmenin seçili olup olmadığı.
EnabledNullable<Boolean>Sekmenin aktif olup olmadığı (tek bir sekmeyi pasifleştirmek için).

Olaylar

TabMenu, kullanıcı bir sekmeye tıkladığında tek bir olay tetikler: TabMenuItemClick. Bu olay hem sunucu (C#) hem istemci (TypeScript) tarafında ele alınabilir.

Sunucu olayları (Server)

OlayNe zaman çalışır
TabMenuItemClickKullanıcı bir sekmeye tıkladığında. Sunucudaki giriş noktası OnTabMenuItemClick(object sender, TabMenuItemClickEventArgs e) metodudur.

İstemci olayları (Client)

OlayNe zaman çalışır
TabMenuItemClickKullanıcı bir sekmeye tıkladığında (tarayıcı tarafında).
Olay parametresi (TabMenuItemClickEventArgs)

TabMenuItemClick olayının parametresi (e C#) Bimser.CSP.FormControls.Events.TabMenuItemClickEventArgs tipindedir ve şu alanı taşır:

  • Name (String) — tıklanan sekmeyi belirten ad. Hangi sekmeye tıklandığını indekse güvenmeden buradan öğrenirsiniz.

Kod örnekleri

TabMenu bir kapsayıcıdır; değeri yoktur ama seçili sekmesi koddan yönetilebilir. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir.

Form kodu (C#, sunucu)

Form kodunda nesneye doğrudan adıyla erişirsiniz. Seçili sekmeyi okuyabilir veya değiştirebilirsiniz:

// Seçili sekmenin sırasını oku (0'dan başlar)
int aktifSekme = TabMenu1.SelectedIndex;

// İkinci sekmeye geç
TabMenu1.SelectedIndex = 1;

// Seçili sekmeyi adıyla (Key) öğren
string aktifKey = TabMenu1.SelectedItem.Key;

// Nesneyi gizle
TabMenu1.Visible = false;

Sekmeyi adıyla (Key) bulup seçme

İndeks yerine sekmeleri Key ile yönetmek, sekme sırasını tasarımda değiştirseniz bile kodun çalışmaya devam etmesini sağlar. TabItems üzerinde dolaşarak ilgili sekmeyi bulup seçebilirsiniz:

// "Belgeler" anahtarlı sekmeyi bulup aktifleştir
for (int i = 0; i < TabMenu1.TabItems.Count; i++)
{
if (TabMenu1.TabItems[i].Key == "Belgeler")
{
TabMenu1.SelectedIndex = i;
break;
}
}

Tek bir sekmeyi pasifleştirme

Her sekmenin kendi Enabled alanı vardır; sadece o sekmeyi kullanıma kapatabilirsiniz:

// "Belgeler" sekmesini kullanıcıya kapat
foreach (var sekme in TabMenu1.TabItems)
{
if (sekme.Key == "Belgeler")
{
sekme.Enabled = false;
}
}

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

Akış kodunda nesneye Document1.Controls üzerinden erişirsiniz:

// Seçili sekmenin sırasını oku
int aktifSekme = Document1.Controls["TabMenu1"].SelectedIndex;

// Üçüncü sekmeye geç
Document1.Controls["TabMenu1"].SelectedIndex = 2;

// Nesneyi pasifleştir
Document1.Controls["TabMenu1"].Enabled = false;

İstemci kodu (TypeScript, tarayıcı)

İstemci tarafında nesnelere this. ile erişilir ve özellik adları küçük harfle yazılır:

// Seçili sekmenin sırasını oku
let aktifSekme = this.TabMenu1.selectedIndex;

// İlk sekmeye geç
this.TabMenu1.selectedIndex = 0;

// Nesneyi gizle / göster
this.TabMenu1.visible = false;
Sekmeleri indeks yerine Key ile yönetin

SelectedIndex her zaman 0'dan başlar: birinci sekme 0, ikinci sekme 1. Ancak indeks, tasarımda sekme sırasını değiştirdiğinizde kırılır. Sekmeyi hangi sekme olduğundan emin olmak istediğinizde SelectedItem.Key değerini okuyun veya TabItems üzerinde Key ile arayın.

Örnek: tıklanan sekmeye göre işlem yapma (TabMenuItemClick)

TabMenuItemClick kullanıcı bir sekmeye tıkladığında çalışır. Hangi sekmenin tıklandığını olay parametresindeki e.Name üzerinden öğrenir, ona göre işlem yaparsınız. Aşağıdaki örnekte "Belgeler" sekmesine geçildiğinde bir bilgi mesajı gösterilir.

Sunucu (C#):

void TabMenu1_TabMenuItemClick(object sender, Bimser.CSP.FormControls.Events.TabMenuItemClickEventArgs e)
{
// Tıklanan sekmeyi adıyla kontrol et (indekse güvenmeden)
if (e.Name == "Belgeler")
{
ShowMessage("Bilgi", "Belgeler bölümüne geçtiniz.",
Bimser.CSP.FormControls.RuleManager.AlertType.Info, null);
}
}

ShowMessage çağrısı dört parametre alır: başlık, metin, AlertType ve vurgulanacak alanların listesi (List<String>; gerek yoksa null geçilir). AlertType değerleri: Success, Error, Warning, Info, Validation, Blocked, SevereWarning.

İpuçları

  • TabMenu yalnızca bir kapsayıcıdır; veri tutmaz. Form alanlarını sekmelerin içine yerleştirin, koddan o alanlara kendi adlarıyla erişin.
  • Zorunlu (Required) alanları farklı sekmelere dağıtırsanız, kullanıcı dolu olmayan sekmedeki alanı fark etmeyebilir. Kayıt öncesi tüm sekmelerdeki zorunlu alanların dolduğundan emin olun.
  • Belirli bir adımda kullanıcıyı doğru sekmeye yönlendirmek için SelectedIndex değerini koddan ayarlayın; sekmeyi adıyla bulmak isterseniz TabItems içinde Key ile arayın.
  • Bir sekmenin tamamını duruma göre kullanıma kapatmak için ilgili TabMenuItem nesnesinin Enabled alanını false yapın.
Tüm tasarımcı özellikleri (tam liste)

General: Name

Behavior: ReadOnly, SelectedIndex, SelectedItem, TabItems

Appearance: Visible, Client Visible, Enabled, Client Enabled, Caption, Title, Style, ContainerStyle

TabMenuItem alanları: Key, Title, Icon, OrderNo, Selected, Enabled

Olaylar (Server): TabMenuItemClick

Olaylar (Client): TabMenuItemClick