喫茶XRAYトップページ


[2563] plDBDateEditで'日付に変換できない値が〜'となります返信 削除
2009/7/27 (月) 13:35:47 blue_time
こんにちは。
コンポーネントを使わせていただいております。

plDBDateEdit コンポーネントで、EditStyle プロパティを
 desYearMonth に設定し、年月のみ入力するようにしたのですが、
実際に年月を入力すると「日付に変換できない値が渡されました」
というエラーになってしまいます。

一応、デバッグ画面でソースを追ってみましたが、年、月、日を
日付に変換する時に、日が 0 になってしまっています。残念ながら、
どこで 0 になってしまうのか突き止めることができません。

私の環境や使い方の問題なのかもしれませんが、何か解決のヒント
でも頂けたらと思いまして、書き込みます。
よろしくお願いします。

WindowsXP SP3
Delphi7 + DBISAM


[2564] Re:plDBDateEditで'日付に変換できない値が〜'となります返信 削除
2009/7/27 (月) 14:37:46 Mr.XRAY
▼ blue_timeさん こんにちは。

> plDBDateEdit コンポーネントで、EditStyle プロパティを
>  desYearMonth に設定し、年月のみ入力するようにしたのですが、
> 実際に年月を入力すると「日付に変換できない値が渡されました」
> というエラーになってしまいます。


あれっ,えらいバグですね.
調査させていただきます.
ご迷惑をおかけして申し訳ありません.

[2565] Re2:plDBDateEditで'日付に変換できない値が〜'となります返信 削除
2009/7/27 (月) 17:46:58 blue_time
▼ Mr.XRAYさん こんにちは。
> あれっ,えらいバグですね.
> 調査させていただきます.
> ご迷惑をおかけして申し訳ありません.


お手数をおかけして申し訳ありませんが、よろしくお願いします。

コンポーネントに同梱のテストプログラムでも確認してみました。
一見正常に動作しますが、表示コントロールを「年」または「年・月」
に変更したあと「入力クリア」を実行すると、それ以後は日付に変換
するところでエラーになります。

procedure SetControlResizePosition で、省略する「日」または
「月・日」に 1 を代入する処理があるので、これをどこかでコールする
ようにしたらいいのかなと思いますが・・・。
とりあえず、EditExit に書いてみたら一応動作はしてくれました。


[2566] Re3:plDBDateEditで'日付に変換できない値が〜'となります返信 削除
2009/7/27 (月) 20:28:32 Mr.XRAY
▼ blue_timeさん

追加情報サンクスです.

> とりあえず、EditExit に書いてみたら一応動作はしてくれました。

スミマセン.とりあえずしのいでください.


[3177] Re4:plDBDateEditで'日付に変換できない値が〜'となります返信 削除
2010/3/10 (水) 17:33:26 blue_time
久しぶりの書き込みになります。
コンポーネントをありがたく使わせていただいております。

> > とりあえず、EditExit に書いてみたら一応動作はしてくれました。
>
> スミマセン.とりあえずしのいでください.


ということで、うまくいっているように思っていたのですが、今度は
入力欄を空欄にしてコンポーネントを抜けようとすると、
「空白の入力欄があります。」というエラーメッセージが出て、日付を
入力せずにコンポーネントを抜けることができなくなります。
(日だけに '1' が入れてあるので当然と言えば当然ですが・・・。)

そこで、またとりあえずの対応ですが、

function TplDateEdit.CheckDateError: Boolean;

の最初のあたりで、

    case FEditStyle of
      //年月
      desYearMonth:
      begin
        //年が入力されていない時には、日もクリアする。
        if FYearEdit.Text='' then FDayEdit.Text := '';
      end;
      //年
      desYear:
      begin
        //年が入力されていない時には、月日もクリアする。
        if FYearEdit.Text='' then
        begin
          FMonthEdit.Text := '';
          FDayEdit.Text := '';
        end;
      end;
    end;

という具合に、非表示の項目をクリアすることにしました。

自分が今のところ「年月日」と「年月」しか使用していないので、
その他の設定の場合を考慮していません。

余裕がおありでしたら、対応していだだけるとありがたいです。


[3182] Re5:plDBDateEditで'日付に変換できない値が〜'となります返信 削除
2010/3/10 (水) 19:55:14 Mr.XRAY
▼ blue_timeさん

どうも,お世話になっています.
情報ありがとうございます.

調査し,なるべく早い時期に対応したいと思います.

>入力せずにコンポーネントを抜けることができなくなります。

この状態は一番まずい状態ですね.
では.


[3203] 修正版アップしました返信 削除
2010/3/20 (土) 10:40:27 Mr.XRAY
▼ blue_timeさん

大変ご迷惑,また対応が遅くなり申し訳ありませんでした.
修正しました.

非常に恥ずかしいバグなので,本当は書きたくないのですが,
修正箇所は以下の通りです.

plDBDateEditはplDateEditから継承していますので,原因は元の
plDateEditということになります.

エラーチェックを行うCheckDateErrorメソッド内のコードが間違って
いました.

dMonth  := StrToIntDef(StrMonth,0); //引数の0を1に
dDay    := StrToIntDef(StrDay,0);   //引数の0を1に

月と日の初期値は0じゃないだろう!!
笑ってごまかすしかありません.


INCM/CMT
Cyclamen v3.82