イベントについて

解決


初心者  2003-04-16 01:36:50  No: 106715  IP: [192.*.*.*]

はじめまして
早速ですが、コンボボックスAのLostFocusイベントでデータベースからデータを取得し結果をコンボボックスBのリストにセットしたいのですが、コンボボックスAからいきなりコンボボックスBでリストの表示(DropDown)すると、リストが正常に表示されません。いろいろ調べてみたら、コンボボックスBのDropDownイベントを実行するときにコンボボックスAのLostFocusイベント処理が完了していませんでした。
このような場合のどのようにすればよいかご教授お願いします。

編集 削除
Loreley  2003-04-18 03:33:17  No: 106716  IP: [192.*.*.*]

いまいち状況がのみこめませんが、
ComboAでテーブル名を選択すると
ComboBにはフィールド名がはいる様なものを作りたいのであれば
ComboAのクリックイベントでデータを取得するといいかもしれません

編集 削除
とろ  2003-04-18 09:52:20  No: 106717  IP: [192.*.*.*]

ComboA_LostFocus の処理( ComboB にリストを追加する処理)が終わる前に、
ComboB のリストを表示させようとすると ComboB に全ての項目が
追加されていない状態で表示されてしまう、ということですよね?

ComboA_LostFocus 内で DoEvents を呼んでいるのではないですか?
そうすると、後から発生したイベント(この場合 ComboB のリストを
表示させようとするイベント)が割り込んでしまいます。
それなので、 DoEvents を除いて下さい。
あるいは、
ComboA_LostFocus の最初に ComboB を使用不可にして、
ComboA_LostFocus の最後で使用可の状態に戻して下さい。

編集 削除
nanashi  2003-04-18 10:19:38  No: 106718  IP: [192.*.*.*]

その動きは仕様のようですね。

SendMessageでドロップダウンの表示・非表示を切り替えられるので
コンボAのLostFocus時にコンボBのドロップダウンが表示されていたら非表示にして、
処理後コンボBのドロップダウンを再表示にするくらいしか思い浮かびません。

もしくはLostFocusではなく、ClickイベントかChangeイベントでコンボBの内容を更新するか。

(参考HP)
1.コンボボックスのドロップダウンリスト表示状態を判定する
http://www.vbvbvb.com/jp/gtips/0001/gSendMessageCbGetdroppedstate.html

2.コンボボックスのドロップダウンリスト表示非表示を切り替える
http://www.vbvbvb.com/jp/gtips/0001/gSendMessageCbShowdropdown.html

編集 削除
初心者  2003-04-24 10:43:02  No: 106719  IP: [192.*.*.*]

返事が送れて申し訳ございません。
LostFocusで行っていた処理をClickとChangeイベントで処理してみたら
解決することができました。
皆さんありがとうございました。

編集 削除