問題は、日付時刻ピッカーコントロールが現在の日付で初期化されていることです。それには、数ヶ月間無効な月の日が含まれます。
2013年1月29日にこの質問をしています.2月に移動するアップ/ダウンコントロールをクリックすると、2月29日にはコントロールが変更されませんそれはハード再現するために見つける任意の将来の訪問者のための2013年
、これはあなたが問題を実証する必要があるコードです:
DateTimePicker1.Format := 'MMM-yyyy';
DateTimePicker1.DateMode := dmUpDown;
DateTimePicker1.DateTime := EncodeDateTime(2013, 1, 29, 0, 0, 0, 0);
問題を修正する簡単な方法は、確かにDateTime
プロパティことを確認することですコントロールは月の開始のためのものです。あなたがコントロールを初期化するときに、このコードを実行することにより、それを達成することができます
DateTimePicker1.DateTime := StartOfTheMonth(DateTimePicker1.DateTime);
それとも、あなたがより明確になりたい場合:
DateTimePicker1.DateTime := StartOfTheMonth(Date);
StartOfTheMonth
ヘルパー関数がDateUtils
単位で発見されました。
なぜこの形式ですか?日付の時間ピッカーでは、私は1日も選ぶことができると期待しています。それ以外の場合、2つの通常のドロップダウンも同様に簡単です。 – GolezTrol
@GolezTrol:これは保守コードです。私はこのフォーマットを変更できません。 – CyprUS
@ all:私はデバッグをいくつか行いました。日付の値が変更されていないことがわかりました。だからfebの月には、日付はまだ29だった。したがって、例外。しかし、私はこれを防ぐために何をしますか? – CyprUS