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
| Özellik | Açıklama |
|---|---|
Name | Nesnenin koddaki adı (ör. Switch1). Koddan bu adla erişirsiniz. |
Field Name | Veritabanındaki alanın adı. |
Label
Nesnenin yanındaki etiketi yönetir.
| Özellik | Açıklama |
|---|---|
Caption / Text | Etiketin yazısı (çok dilli olabilir). |
Position | Etiketin yeri: solda (Left) veya üstte (Top). |
Width / Height | Etiketin boyutu. |
Font | Yazı tipi, kalın / italik / altı çizili. |
Show Colon | Etiketin sonuna iki nokta (:) ekler. |
Horizontal Align / Vertical Align | Etiketin hizası. |
Visible | Etiketi gösterir veya gizler. |
Data Source
Switch'in açık ve kapalı durumlarına karşılık gelen metin etiketlerini buradan verebilirsiniz.
| Özellik | Açıklama |
|---|---|
Items | Anahtarın iki durumu için gösterilecek metin listesi (ör. "Açık", "Kapalı"). |
Behavior
| Özellik | Açıklama |
|---|---|
ReadOnly | Anahtarı salt okunur yapar; kullanıcı durumu değiştiremez. |
Required | Alanı zorunlu yapar; değer beklenir. |
Tab Index | Tab tuşuyla geçiş sırasını belirler. |
Appearance
| Özellik | Açıklama |
|---|---|
Visible / Client Visible | Nesnenin görünürlüğü. |
Enabled / Client Enabled | Nesnenin aktif olup olmadığı. |
Value | Anahtarın başlangıç durumu (açık true / kapalı false). |
Title | Nesnenin başlık yazısı (çok dilli). |
Text | Anahtarın yanında görünen metin. |
Placeholder | Boş durumda görünen soluk ipucu yazısı (çok dilli). |
Text Align | Yazı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ı: OnInit → OnLoad → OnDataLoad → OnPreRender → OnRender
Kullanıcı anahtarı çevirince: OnValueChanging → OnValueChanged
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)
| Olay | Ne zaman çalışır |
|---|---|
OnInit | Form açılırken nesne oluşturulduğunda, en başta. |
OnLoad | OnInit'in hemen ardından, nesne yüklenince. |
OnRender | Nesne ekrana çizilirken. |
OnValueChanging | Anahtar durumu değişmeden hemen önce (iptal edilebilir). |
OnValueChanged | Anahtar durumu kesinleştiğinde. En sık kullanılan olaydır. |
OnTextChanging / OnTextChanged | Anahtarın metni değişmeden önce / sonra. |
OnValidating | Form kaydedilmeden önce değer doğrulanırken. |
İstemci olayları (Client)
Sunucudaki olaylara ek olarak tarayıcı tarafında şunlar da vardır:
| Olay | Ne zaman çalışır |
|---|---|
OnDataLoad | Nesnenin verisi yüklendiğinde. |
OnPreRender | Nesne ekrana çizilmeden hemen önce. |
OnClick / OnDoubleClick | Nesneye tıklanınca / çift tıklanınca. |
OnPropertyChanging / OnPropertyChanged | Bir özellik kodla değiştirilmeden önce / sonra. |
OnValueChanging olayının parametresi (args TS, e C#) şunları taşır:
newValue/NewValue— yeni durum (true/false)oldValue/OldValue— önceki durumcancel/Cancel—trueyapılırsa değişiklik iptal edilir (yalnızcaChangingolayları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;
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
boololduğundan boş kontrolü yapmanıza gerek yoktur; doğrudanif (Switch1.Value)ile dallanın. Itemsile 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