イベントについて

解決


初心者  2003-04-16 10:36:50  No: 106715

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


Loreley  2003-04-18 12:33:17  No: 106716

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


とろ  2003-04-18 18:52:20  No: 106717

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

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


nanashi  2003-04-18 19:19:38  No: 106718

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

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 19:43:02  No: 106719

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加