Skip to main content

Switch

Kullanıcının açık / kapalı (evet / hayır) seçimini tek dokunuşla yaptığı aç-kapa anahtarı nesnesidir. Değeri her zaman iki durumludur: açık ya da kapalı.

Değer tipi: bool

Ne zaman kullanılır?

İki durumlu bir tercih için idealdir: "Aktif mi?", "Onaylıyor musunuz?", "SMS gönderilsin mi?". Bir ayarı anında açıp kapatma hissi verir. Sadece bir kutu işaretletmek istiyorsanız CheckBox, birden çok seçenekten birini seçtirmek istiyorsanız RadioButton daha uygundur.

Tasarımcı özellikleri

Bir Switch seçildiğinde Özellik Görüntüleyici sekmelere ayrılır.

General

ÖzellikAçıklama
NameNesnenin koddaki adı (ör. Switch1). Koddan bu adla erişirsiniz.
Field NameVeritabanındaki alanın adı.

Label

Nesnenin yanındaki etiketi yönetir.

ÖzellikAçıklama
Caption / TextEtiketin yazısı (çok dilli olabilir).
PositionEtiketin yeri: solda (Left) veya üstte (Top).
Width / HeightEtiketin boyutu.
FontYazı tipi, kalın / italik / altı çizili.
Show ColonEtiketin sonuna iki nokta (:) ekler.
Horizontal Align / Vertical AlignEtiketin hizası.
VisibleEtiketi gösterir veya gizler.

Data Source

Switch'in açık ve kapalı durumlarına karşılık gelen metin etiketlerini buradan verebilirsiniz.

ÖzellikAçıklama
ItemsAnahtarın iki durumu için gösterilecek metin listesi (ör. "Açık", "Kapalı").

Behavior

ÖzellikAçıklama
ReadOnlyAnahtarı salt okunur yapar; kullanıcı durumu değiştiremez.
RequiredAlanı zorunlu yapar; değer beklenir.
Tab IndexTab tuşuyla geçiş sırasını belirler.

Appearance

ÖzellikAçıklama
Visible / Client VisibleNesnenin görünürlüğü.
Enabled / Client EnabledNesnenin aktif olup olmadığı.
ValueAnahtarın başlangıç durumu (açık true / kapalı false).
TitleNesnenin başlık yazısı (çok dilli).
TextAnahtarın yanında görünen metin.
PlaceholderBoş durumda görünen soluk ipucu yazısı (çok dilli).
Text AlignYazının hizası.

Olaylar

Bir nesne açılırken olaylar belirli bir sırayla tetiklenir; kullanıcı anahtara dokununca da ayrı olaylar çalışır. Doğru kodu doğru olaya yazmak için bu sırayı bilmek işinizi kolaylaştırır.

Açılış sırası: OnInitOnLoadOnDataLoadOnPreRenderOnRender

Kullanıcı anahtarı çevirince: OnValueChangingOnValueChanged

Olaylar iki tarafta çalışabilir: sunucu olayları C# kodunda, istemci olayları tarayıcıdaki TypeScript kodunda. Switch'in iki tarafta sunduğu olaylar farklıdır.

Sunucu olayları (Server)

OlayNe zaman çalışır
OnInitForm açılırken nesne oluşturulduğunda, en başta.
OnLoadOnInit'in hemen ardından, nesne yüklenince.
OnRenderNesne ekrana çizilirken.
OnValueChangingAnahtar durumu değişmeden hemen önce (iptal edilebilir).
OnValueChangedAnahtar durumu kesinleştiğinde. En sık kullanılan olaydır.
OnTextChanging / OnTextChangedAnahtarın metni değişmeden önce / sonra.
OnValidatingForm kaydedilmeden önce değer doğrulanırken.

İstemci olayları (Client)

Sunucudaki olaylara ek olarak tarayıcı tarafında şunlar da vardır:

OlayNe zaman çalışır
OnDataLoadNesnenin verisi yüklendiğinde.
OnPreRenderNesne ekrana çizilmeden hemen önce.
OnClick / OnDoubleClickNesneye tıklanınca / çift tıklanınca.
OnPropertyChanging / OnPropertyChangedBir özellik kodla değiştirilmeden önce / sonra.
Olay parametreleri

OnValueChanging olayının parametresi (args TS, e C#) şunları taşır:

  • newValue / NewValue — yeni durum (true / false)
  • oldValue / OldValue — önceki durum
  • cancel / Canceltrue yapılırsa değişiklik iptal edilir (yalnızca Changing olaylarında)

Changed olaylarında cancel yoktur (değişiklik artık gerçekleşmiştir).

Kod örnekleri

Bir Switch'e üç yerden erişebilirsiniz. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir. Değeri her zaman bool (mantıksal doğru / yanlış) tipindedir.

Form kodu (C#, sunucu)

Form kodunda nesneye doğrudan adıyla erişirsiniz:

// Oku
bool acik = Switch1.Value;

// Yaz
Switch1.Value = true; // Anahtarı aç
Switch1.Value = false; // Anahtarı kapat

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

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

// Oku
bool acik = Document1.Controls["Switch1"].Value;

// Yaz
Document1.Controls["Switch1"].Value = true;

İstemci kodu (TypeScript, tarayıcı)

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

// Oku
const acik = this.Switch1.value;

// Yaz
this.Switch1.value = true;
Değer her zaman bool'dur

Switch'in değeri hiçbir zaman boş (null) olmaz; ya true ya false'tur. Bu yüzden boş kontrolü yapmanıza gerek kalmaz, doğrudan if (Switch1.Value) yazabilirsiniz.

Örnek: değeri doğrulama (OnValueChanging)

OnValueChanging anahtar durumu değişmeden hemen önce çalışır; istemediğiniz bir geçişi burada iptal edebilirsiniz. Aşağıdaki örnekte başka bir koşul sağlanmadan anahtarın açılması engellenir.

İstemci (TypeScript):

async Switch1_OnValueChanging(args: Controls.EventArgs.IPropertyChangingEventArgs<boolean>) {
if (args.newValue == true && this.Onay1.value == false) {
args.cancel = true; // Açma işlemini iptal eder
this.showMessage("Uyarı", "Önce onay kutusunu işaretleyin.", "Validation");
}
}

Sunucu (C#):

void Switch1_OnValueChanging(object sender, PropertyChangingEventArgs<bool> e)
{
if (e.NewValue == true && (bool)Onay1.Value == false)
{
e.Cancel = true;
ShowMessage("Uyarı", "Önce onay kutusunu işaretleyin.",
Bimser.CSP.FormControls.RuleManager.AlertType.Validation);
}
}

İpuçları

  • Değer bool olduğundan boş kontrolü yapmanıza gerek yoktur; doğrudan if (Switch1.Value) ile dallanın.
  • Items ile anahtarın iki durumuna "Açık" / "Kapalı" gibi anlamlı metinler verin; kullanıcı ne seçtiğini daha net görür.
  • Birden fazla seçenekten birini seçtirmeniz gerekiyorsa Switch yerine RadioButton kullanın.
Tüm tasarımcı özellikleri (tam liste)

General: Name, Field Name

Label: Caption, Text, Position, Left, Width, Height, Font (Bold / Italic / Underline), Ellipsis, Visible, Show Colon, Horizontal Align, Vertical Align, Mark Char, Mark Position

Data Source: Items

Behavior: ReadOnly, Required, Tab Index

Appearance: Visible, Client Visible, Enabled, Client Enabled, Value, Title, Text, Placeholder, Text Align

Olaylar (Client): OnInit, OnLoad, OnPreRender, OnRender, OnPropertyChanging, OnPropertyChanged, OnClick, OnDoubleClick, OnDataLoad, OnValueChanging, OnValueChanged, OnTextChanging, OnTextChanged, OnValidating

Olaylar (Server): OnInit, OnLoad, OnRender, OnValueChanging, OnValueChanged, OnTextChanging, OnTextChanged, OnValidating