2013-01-29 25 views
5

Ben aşağıdaki özelliklere sahip benim D7 uygulamasında bir TDateTimePicker kullanıyorum:TDateTimePicker neden Şubat'a gitmeme izin vermiyor?

Format = 'MMM-yyyy' 
DateMode = dmUpDown 

Ben dt1.DateTime := Now kullanmaya geçerli tarih zamanını ayarlamak için deneyin, doğru saat ve tarihi ayarlar, ancak bir istisna gösterir aylarda gezinmeye çalıştığımda. Özellikle Mart ayının altında dolaşamam.

Bu sorun neden oluyor?

+0

Neden bu biçim? Bir tarih seçicide, bir gün de seçmeyi beklerdim. Aksi takdirde, belki iki normal düşüş de kolay olurdu. – GolezTrol

+0

@GolezTrol: Bu bir bakım kodudur. Bu formatı değiştiremiyorum. – CyprUS

+0

@to all: Bazı hata ayıklama yaptım ve tarih değerinin değişmediğini gördüm. böylece feb ayında, tarih hala 29 idi. Ama bunu önlemek için ne yapıyorum? – CyprUS

cevap

14

Sorun, tarih saat seçici denetiminin geçerli tarihle başlatılıyor olmasıdır. Ve bu ayın bir ayı için geçersiz olan bir günü de içerir.

Sadece açık olmak gerekirse, 29 Ocak 2013'te bu soruyu soruyorsunuz. Yukarı/aşağı kontrolünü Şubat'a geçmek için tıklattığınızda, denetim 29 Şubat'ta olmadığı için değişikliği gerçekleştiremiyor. 2013 zor çoğaltmak bulmak herhangi gelecek ziyaretçiler için

, bu sorunu göstermesi gerekir kodudur:

DateTimePicker1.Format := 'MMM-yyyy'; 
DateTimePicker1.DateMode := dmUpDown; 
DateTimePicker1.DateTime := EncodeDateTime(2013, 1, 29, 0, 0, 0, 0); 

sorun için basit bir düzeltme emin olduğunu DateTime mülkiyet için Kontrol ayın başlangıcı içindir. Eğer kontrol initialize zaman bu kodu yürüterek elde edebilirsiniz:

DateTimePicker1.DateTime := StartOfTheMonth(DateTimePicker1.DateTime); 

Veya belki de daha açık olmasını istiyorsanız:

DateTimePicker1.DateTime := StartOfTheMonth(Date); 

StartOfTheMonth yardımcı işlevi DateUtils biriminde bulunur.

İlgili konular