Skip to main content

TimePicker

Kullanıcının saat seçmesini sağlayan nesnedir. Bir saat dilimi (saat, dakika, isteğe bağlı saniye) girişi gereken alanlarda kullanılır.

Değer tipi: DateTime?

Ne zaman kullanılır?

Yalnızca saat bilgisi gereken alanlar için idealdir: toplantı saati, mesai başlangıç / bitiş saati, randevu saati. Hem tarih hem saat birlikte gerekiyorsa ya da sadece tarih gerekiyorsa DateTimePicker daha uygundur.

Tasarımcı özellikleri

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

General

ÖzellikAçıklama
NameNesnenin koddaki adı (ör. TimePicker1). 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.

Behavior

ÖzellikAçıklama
AllowClearAlanın yanına temizleme (x) düğmesi koyar; kullanıcı seçimi tek tıkla silebilir.
FormatSaatin görünüm biçimi (ör. HH:mm veya HH:mm:ss).
HourStepSaat seçiminde kaçar kaçar artacağını belirler (ör. 1).
MinuteStepDakika seçiminde adım aralığı (ör. 5 ise 0, 5, 10...).
SecondStepSaniye seçiminde adım aralığı.
DisabledHoursSeçilemeyecek saatlerin listesi (ör. mesai dışı saatler).
Use12Hours12 saatlik (AM / PM) gösterimi açar. Kapalıyken 24 saatlik gösterim kullanılır.
ReadOnlyAlanı salt okunur yapar.
RequiredAlanı zorunlu yapar; boşsa form kaydedilmez.
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ığı.
PlaceholderAlan boşken görünen soluk ipucu yazısı.
Text AlignYazının hizası (sol / orta / sağ).
TitleÜzerine gelince çıkan ipucu (tooltip) yazısı.
Size TypeGenişlik davranışı (sabit / esnek).

Olaylar

Bir nesne açılırken olaylar belirli bir sırayla tetiklenir; kullanıcı saat seçince de 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ı saat seçerken: OnTextChangingOnTextChanged, değer kesinleşince OnValueChangingOnValueChanged

Olaylar iki tarafta çalışabilir: sunucu olayları C# kodunda, istemci olayları tarayıcıdaki TypeScript kodunda.

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.
OnTextChangingSeçim metni değişmeden hemen önce.
OnTextChangedSeçim metni değiştikten hemen sonra.
OnValueChangingSaat değeri değişmeden hemen önce (iptal edilebilir).
OnValueChangedKullanıcı saati seçip değer kesinleştiğinde. En sık kullanılan olaydır.
OnValidatingAlan doğrulanırken; geçerlilik kontrolü buraya yazılır.

İ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 / OnTextChanging olaylarının parametresi (args TS, e C#) şunları taşır:

  • newValue / NewValue — seçilmek istenen yeni değer
  • oldValue / OldValue — önceki değer
  • 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 TimePicker'a üç yerden erişebilirsiniz. Sunucu örnekleri turuncu, istemci örnekleri kırmızı çerçevelidir.

Form kodu (C#, sunucu)

Form kodunda nesneye doğrudan adıyla erişirsiniz. Değer tipi DateTime? olduğu için boş (null) olabileceğini unutmayın:

// Oku
DateTime? saat = TimePicker1.Value;

if (saat.HasValue)
{
int s = saat.Value.Hour; // Saat
int dk = saat.Value.Minute; // Dakika
}

// Yaz
TimePicker1.Value = DateTime.Today.AddHours(9).AddMinutes(30); // 09:30

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

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

// Oku
DateTime? saat = Document1.Controls["TimePicker1"].Value;

// Yaz
Document1.Controls["TimePicker1"].Value = DateTime.Today.AddHours(17); // 17:00

İstemci kodu (TypeScript, tarayıcı)

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

// Oku
const saat = this.TimePicker1.value;

// Yaz
this.TimePicker1.value = new Date();
this.TimePicker1.text = "09:30";
.Value mi .Text mi?

.Value saklanan saat değeridir (DateTime?), .Text ekranda görünen metindir ("09:30" gibi). Hesaplama yaparken .Value ile çalışın; sadece görünümü değiştirecekseniz .Text yeterlidir.

Örnek: mesai dışı saati engelleme (OnValueChanging)

OnValueChanging değer değişmeden hemen önce çalışır; istemediğiniz bir saati burada iptal edebilirsiniz. Aşağıdaki örnekte 18:00'den sonrası engellenir.

İstemci (TypeScript):

async TimePicker1_OnValueChanging(args: Controls.EventArgs.IPropertyChangingEventArgs<Date>) {
if (args.newValue && args.newValue.getHours() >= 18) {
args.cancel = true; // Saat seçimini iptal eder
this.showMessage("Uyarı", "Mesai saati dışında saat seçilemez.", "Validation");
}
}

Sunucu (C#):

void TimePicker1_OnValueChanging(object sender, PropertyChangingEventArgs<DateTime?> e)
{
if (e.NewValue.HasValue && e.NewValue.Value.Hour >= 18)
{
e.Cancel = true;
ShowMessage("Uyarı", "Mesai saati dışında saat seçilemez.",
Bimser.CSP.FormControls.RuleManager.AlertType.Validation);
}
}

İpuçları

  • Dakikaları beşer beşer ilerletmek için MinuteStep değerini 5 yapın; kullanıcı 0, 5, 10... gibi düzenli değerler seçer.
  • Sadece saat ve dakika gösterilecekse Format değerini HH:mm yapın; saniye gereksiz yere ekranı kalabalıklaştırmaz.
  • Belirli saatleri kapatmak için DisabledHours listesini kullanın (ör. gece saatleri).
  • Hem tarih hem saat gerekiyorsa bu nesne yerine DateTimePicker 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

Behavior: AllowClear, Format, HourStep, MinuteStep, SecondStep, DisabledHours, Use12Hours, ReadOnly, Required, TabIndex

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

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