喫茶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が日曜日なのか月曜日なのか、毎回、ヘルプで確認している気がします(汗)


[8261] Delphi のヘルプ返信 削除
2014/12/14 (日) 11:16:38 Mr.XRAY
> Delphi7のヘルプ(WihHelp形式)だと、
>
> 「キーワード」タブの
> ルーチン
>  クイックリファレンス, カテゴリ順


これ,結構便利ですよね.
jgy さんが提示した図の左側,これが便利です.
いまだに,Delphi 7 のヘルプが手放せない理由です.
最近の Delhi のオンラインヘルプの整備されていて,これも利用できます.
例えば

[日付および時刻のサポート]
http://docwiki.embarcadero.com/RADStudio/XE7/ja/%E6%97%A5%E4%BB%98%E3%81%8A%E3%82%88%E3%81%B3%E6%99%82%E5%88%BB%E3%81%AE%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88

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

この「参照」がいいんです.

> # 1が日曜日なのか月曜日なのか、毎回、ヘルプで確認している気がします(汗)

これはですね.あります.(^^;
これに限らず,ホントに.
結構簡単で単純なことも覚えていないもんです.
きっと,頭の中に「ヘルプを見ればいいんだ」という思いがあるのかも.
でも,ヘルプのどこに何があるのかを確認するのは,結構大変です.
私が掲示板等で「ヘルプを見ろ」とか言うのが好きでないのは,それも理由です.


[8263] Re:Delphi のヘルプ返信 削除
2014/12/14 (日) 11:24:22 Mr.XRAY
> 私が掲示板等で「ヘルプを見ろ」とか言うのが好きでないのは,それも理由です.

ちょっと前に,某掲示板であったことですが,
オンラインヘルプのページを提示したら,
「これからはヘルプで確認してから質問します」
と答えている方がいました.

もちろん,それも大切です.
でも,そううじゃあないんです.
「ヘルプに書いてあるだろう!!」と言いたいわけではないんです.
重要なのは,質問の仕方というか,内容というか,そういう問題なんですよね.


[8265] Re2:Delphi のヘルプ返信 削除
2014/12/14 (日) 13:58:40 igy
▼ Mr.XRAYさん
> 最近の Delhi のオンラインヘルプの整備されていて,これも利用できます.
> 例えば
>
> [日付および時刻のサポート]
> http://docwiki.embarcadero.com/RADStudio/XE7/ja/%E6%97%A5%E4%BB%98%E3%81%8A%E3%82%88%E3%81%B3%E6%99%82%E5%88%BB%E3%81%AE%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88


最近のは、かなりよくなったのですねぇ・・・で、Delphi XEやXE2のヘルプは、どうなんだろう?と、調べたら、

「目次」タブ
 Rad Studio
  Rad Studioのトピック
   IDE リファレンス
    API カテゴリ

あたりに、ありました。かなり整備されてましたね。
次からは、Delphi XE2のヘルプも、参考にできそうです。

情報ありがとうございました!


> もちろん,それも大切です.
> でも,そううじゃあないんです.
> 「ヘルプに書いてあるだろう!!」と言いたいわけではないんです.
> 重要なのは,質問の仕方というか,内容というか,そういう問題なんですよね.


説明が大変になりそうな場合は、

Midas.DLLは、何をしているのですか?
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200805/08050001.txt

こんな回答したこともありました(笑)


[8266] Re3:Delphi のヘルプ返信 削除
2014/12/14 (日) 16:55:55 Mr.XRAY
▼ igyさん

> あたりに、ありました。かなり整備されてましたね。

オンラインヘルプですが,FireMonkey なんか,画像まであります.
古いバージョンのは整備しないでしょうね.きっと.

> Midas.DLLは、何をしているのですか?
> http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200805/08050001.txt


> こんな回答したこともありました(笑)

なるほど.
しかし,こういう質問は難しいですね.
疑問を持つこと自体は否定できないし.
お礼だけでなく,結果の報告と言っても難しいでしょうし.

MIDAC って,Vista では標準でインストールされているやつでしたっけ?
MDAC だったか?


[8267] Re4:Delphi のヘルプ返信 削除
2014/12/14 (日) 17:29:42 igy
▼ Mr.XRAYさん
> MIDAC って,Vista では標準でインストールされているやつでしたっけ?

MIDASです。Delphiで、dbExpressを使うときに、必要なやつのほうです。

> MDAC だったか?

MDAC(Microsoft Data Access Components)のほうは、

MDACを新バージョンにアップグレードする方法
http://www.atmarkit.co.jp/fwin2k/win2ktips/912mdacupg/mdacupg.html

あたりを見るとWindows XPにも、同梱されているみたいです。

確か Delphiでは、dbGo(ADO)で必要だった気が・・・


[8274] Re5:Delphi のヘルプ返信 削除
2014/12/15 (月) 07:06:51 Mr.XRAY
▼ igyさん

> MDACを新バージョンにアップグレードする方法
> http://www.atmarkit.co.jp/fwin2k/win2ktips/912mdacupg/mdacupg.html
>
> あたりを見るとWindows XPにも、同梱されているみたいです。


そうか,Vista で MDAC のインストールとかバージョンアップが
勝手にできなくなっているんですね.N/A ということで.

> 確か Delphiでは、dbGo(ADO)で必要だった気が・・・

ですね.Delphi 6 Personal 版では,MDAC からのタイプライブラリの取り込み
で ADO が使用可能になります.
HDD の中に,テスト用に作成したファイルがありました.
掲示板等で Delphi 6 Personal 版での質問が多かった時代に作成したもの
だと思います.


[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