喫茶XRAYトップページ

[スレッド全体
]

[8246] DateTimePickerで月末を・・・返信 削除
2014/12/10 (水) 12:05:27 Sara
みなさん、こんにちは。

Delphi XE5

DateTimePickerで月末を設定しておきたい場合で、かつ表示が年月のみにしたい場合、
(DateTimePicker1.DeteMode = dmUpDown)

var yy,mm,dd : Word;
begin
    DecodeDate(Date,yy,mm,dd);
    if mm = 12 then begin
      inc(yy);
      mm := 1;
      dd := 1;
    end
    else begin
      inc(mm);
      dd := 1;
    end;
    DateTimePicker1.Date := EncodeDate(yy,mm,dd) - 1;

    DateTimePicker1.Format := 'yyyy年MM月';

end;

とかしておけば、取りあえず目的の表示になるのですが・・・

例えば、今日(12月10日)このコードを実行すると、
2014年12月と表示されて、内部的に日付は31日になりますが、

このとき、月をDateTimePickerの▼ボタンで月を変更すると(11月とか)
EConvertErrorが発生します・・・まぁ、11月31日は無いからね・・・

表示が年月日であれば、日付が勝手に30日になるのに、なぜ年月表示では
エラーになるの?

このエラーを出さなくする方法ってありますか?

マスター 教えてくださいな。(^^;

[8247] Re:DateTimePickerで月末を・・・返信 削除
2014/12/10 (水) 14:45:05 igy
マスターでは、ないですが・・・

    DateTimePicker1.Date := DateOf(StartOfTheMonth(Date()));
    DateTimePicker1.Format := 'yyyy年MM月';

のように設定し、
値を使うときは、DateOf(EndOfTheMonth(DateTimePicker1.Date));
を参照するのは、ダメですか?


[8258] Re2:DateTimePickerで月末を・・・返信 削除
2014/12/13 (土) 23:50:45 Sara
▼ igyさん こんばんは。

質問しておいて、数日ここに来るのを忘れていました・・・(^^;

> マスターでは、ないですが・・・
>
>     DateTimePicker1.Date := DateOf(StartOfTheMonth(Date()));
>     DateTimePicker1.Format := 'yyyy年MM月';
>
> のように設定し、
> 値を使うときは、DateOf(EndOfTheMonth(DateTimePicker1.Date));
> を参照するのは、ダメですか?


わざわざ ありがとうございます。

なるほど・・・1日を内部的に使っておいて、利用時に月末を取得するのですね。
勉強になりました。(そりゃ、そうですよね・・・エラーがでるなら、出ない方法で
使えば良いですよね・・・ 発想の転換ができませんでしたね)

StartOfTheMonthとかEndOfTheMonthとか関数があるんですね(^^;
こちらも勉強になりました。

普段使っていなくて、便利な関数って相当あるんだろうなぁ・・・
と思う今日このごろ・・・m(_ _)m



[8259] Re3:DateTimePickerで月末を・・・返信 削除
2014/12/14 (日) 08:46:57 Mr.XRAY
▼ Saraさん
▼ igyさん,こんちには.

> > マスターでは、ないですが・・・

ハハハッ.
読み返したら,私に振ってあったんですね (^^;
igy さんのレスを読んだので,そのまま放置していました.


[8260] Re4:DateTimePickerで月末を・・・返信 削除
2014/12/14 (日) 10:54:40 igy
▼ Mr.XRAYさん

> 読み返したら,私に振ってあったんですね (^^;

エラーを出なくしても、
  12/31→11/30→(10/31じゃなく)10/30
となりそうだったので、
じゃあ、1日に設定して、取得時に月末になるようにするのは、ダメなのかな??

と思ったので、とりあえず、書き込んでみました(笑)

▼ Saraさん

> 普段使っていなくて、便利な関数って相当あるんだろうなぁ・・・

Delphi7のヘルプ(WihHelp形式)だと、

「キーワード」タブの
ルーチン
 クイックリファレンス, カテゴリ順

では、一覧(説明あり)があるので、見てみると、便利そうな関数など
意外な発見とかあるかもしれません。


ある関数のページを表示していて、「分野の指定」の箇所に
日付関連であれば、「日付時刻ルーチン」
あるので、それをクリックした場合、関連するカテゴリの一覧が見られます。

「参照」でも、いくつか関連ありそうな関数も表示したりもしますので、結構、重宝してます。

# DayOfWeek 関数 と DayOfTheWeek 関数 などは、1から7を返すみたいですが、
# 1が日曜日なのか月曜日なのか、毎回、ヘルプで確認している気がします(汗)


[8270] Re5:DateTimePickerで月末を・・・返信 削除
2014/12/14 (日) 21:49:05 Sara
▼ igyさん
▼ Mr.XRAYさん
>
> > 読み返したら,私に振ってあったんですね (^^;


今まで何回か、マスターに振ったことがあるのですが・・・
極稀に、華麗にスルーされることがあります。(^^;


> エラーを出なくしても、
>   12/31→11/30→(10/31じゃなく)10/30
> となりそうだったので、
> じゃあ、1日に設定して、取得時に月末になるようにするのは、ダメなのかな??
>
> と思ったので、とりあえず、書き込んでみました(笑)

そうですよね。igyさんの前回の書き込みを見て、この方法のほうが
正確に月末を取得でることに気が付きました・・・日付の見えないDateTimePickerに
任せておくと、バグの温床ですよね・・・ん?だから、わざとエラーを発するように
なっているのか?(穿ちすぎ?)


> Delphi7のヘルプ(WihHelp形式)だと、
おぅ! Helpですね・・・最近とんとご無沙汰ですね・・・(^^;

そうですよね。まずは、身近なHelpやら文献やら眺めないとね・・・
調べずに作ってしまっている可能性大です・・・
しかも、バグで苦しんだり・・・ 急がば回れですね・・・

[8272] Re6:DateTimePickerで月末を・・・返信 削除
2014/12/15 (月) 06:35:20 Mr.XRAY
▼ Saraさん

> 今まで何回か、マスターに振ったことがあるのですが・・・
> 極稀に、華麗にスルーされることがあります。(^^;


ほら,私って,基本的に,
若くて綺麗なお姉さんにしか興味ないもんで.... ホホホホッ.

え!? ひげ面のおやじが何を言うか!! って?
さっきひげそったもん.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82