DDV処理について。

[戻る]
おるせん 2005/08/24(水) 21:58:02
ちょっとヘンな質問かもしれませんが、
勉強途中の初心者と言うことで寛大な対応をm(__)m

Q1.DDVのチェックが実行されるのはリターンキーを押した時だけですか?

MSDNを見ると、「[OK] をクリックしてダイアログ ボックスへの入力を確定」と
あったのですが、TABキーでフォーカスが外れた場合は入力の確定ではないのでしょうか?
ノーチェックなんですか?

Q2.仕方が無いのでDDVを辞めました。EditBoxからのLOSTFOCUS時に、
自作のチェックを行うようにしました。あるチェックボックスがあるのですが、
エディットボックスに無効な値を入力後、チェックボックスをクリックすると
エラーは発生しますが、チェックボックスにチェックが付けられてしまいます。

このチェックが付けないようにするには、LOSTFOCUS時の処理の中で、
「エラーだったらチェックボックスを無効にする」って処理を書かなければ
ならないのでしょうか?

とても稚拙な質問だとは思いますが悩んでます。
宜しくお願いします。環境はVC6++です。

ちなみに、DDV/DDXってのはSDIやMDIでは使えないのでしょうか?
「Dialog」Data・・・・・・って言うぐらいですから、当たり前かも知れませんが。
ちょっと気になったもので。

επιστημη 2005/08/24(水) 22:11:41
> TABキーでフォーカスが外れた場合は入力の確定ではないのでしょうか?
ダイアログボックスに入力された全体に対しては確定ではない。

> このチェックが付けないようにするには、LOSTFOCUS時の処理の中で、
>「エラーだったらチェックボックスを無効にする」って処理を書かなければ
> ならないのでしょうか?

それ以外にチェックするタイミングがないのなら、そうでしょうね。

> ちなみに、DDV/DDXってのはSDIやMDIでは使えないのでしょうか?

やってみればいい。

REE 2005/08/25(木) 15:27:17
>ちなみに、DDV/DDXってのはSDIやMDIでは使えないのでしょうか?
>「Dialog」Data・・・・・・って言うぐらいですから、当たり前かも知れませんが。

そもそもSDIやMDIでもダイアログは使えます。

PATIO 2005/08/26(金) 09:47:53
DDVってUpdateData(TRUE)を呼んだときに動くのでは無いかと思います。
そもそも、DDVにしてもDDXにしてもダイアログでのデータの取得と設定を
簡易に行うためのものなので万能ではありませんし、
細かいことをしたいのであれば、自分でコードか書かなくてはだめです。
デフォルトのOKボタン(IDOKのボタン)が押されると確かデフォルトの実装では
UpdateData(TRUE)を呼ぶようになっていたと思います。
ですから、言われているようなフォーカスが移動した時にこれは動きませんし、
仮にUpdateData(TRUE)を呼んだとすると未入力の項目にまでチェックが
かかってしまうのでどちらにしても無理ですね。

既に書いていますが、DDVにしてもDDXにしても簡易に操作する為の方法を
Microsoftが提供してくれているだけです。
あくまでも簡易なのですから、それで満足できないのであれば、
自分でコードを書きましょう。
毎回使うようなものなのであれば、うまく設計してライブラリ化すれば、
次からは楽が出来るかもしれませんよ。

PATIO 2005/08/26(金) 09:51:52
あと、開発環境を持っていて勉強中の身なのであれば、
επιστημηさんが書かれているように取り敢えず試してみるのも
一つの手です。試してみてわからない部分を聞くようにした方が
より的確なアドバイスがもらえる可能性が高いです。
もちろん、試した内容をきちんと提示してもらう必要はありますけれど。

古いスレッドには追加発言できません。