• ベストアンサー

再質問 コンボボックス リスト部分の残像

3/4に質問したものと同一内容ですが、解答が付かず、また納期が迫りましたので、困り度を上げて再質問させて頂きます。  WinXP環境下でVB6sp5+Access2002で開発を行っています。 コンボボックスAで条件設定(確定はロストフォーカス/又はクリック)を行い、アクセスmdbから抽出した情報をコンボボックスBのアイテムへ取込んで表示をさせています。共にIntegralHeightはTureです。  複数回実行する時、コンボBの抽出結果リストが前回より少ない(リストの高さが低い)場合、余剰部分が画面上に空白のまま残ってしまう様です。  画面を「最小化」後、「元のサイズに戻す」等行えば消えます。…が、いかにも抜け道臭いので、解消方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#240783
noname#240783
回答No.2

コンボボックスだから、通常はテキスト入力域の1行と 「下向き黒三角マーク」だけしか表示されていないんですよね? だから、おっしゃっている「残像」の意味というか、実際の 状況がイマイチ見えないのですが... コンボボックスに新たな抽出データを取り込んだ後で、 [ComboBox名].Refresh を実行してみてはどーでしょ?? それでだめなら [Form名].Refresh では、どーでしょか?! フォームに貼り付けたコントロールやらが多いと ちらつくかもしれませんが... (見当違いだったらスンマセン)

Adenau
質問者

お礼

 情報の取込み方法をLostFocusにすると、プルダウン実行時に発動して、前情報を表示と同時に情報更新(上書き)が行われる様です。この為、更新後に使わない部分が残像として残ってしまう様です。 (同処理をClickで実行すると再現しない様です) 選択方法を両方併記する事で、事態は解消した様です。  色々なオブジェクトにリフレッシュをかけてみた事がヒントになりました。有難うございました。

Adenau
質問者

補足

回答有難うございます。 残像とはプルダウンしてくるリスト部分の事です。 明細は消え(正しく編集され)るのですが、余分となった部分の表示が残ってしまいます。 次の操作に移る際、項目選択した(正しい)部分は消え、重なっていた部分の表示が再び表示されます。が、余分の部分が消えずフォームや他のオブジェクト上に残ってしまいます。  01殿のアドバイスにも有った[Form名].Refreshを掛けた所、フォーム部分に重なっている所は消えました。が、この方法だけではListBoxと重なる部分については消えない様です。ListBoxにもRefreshを掛けてみた所、残像は一見消えたのですが、FormとListBoxの境界線が欠けました(汗)  とりあえず、これでリリースの方向ですが、この補足で更なる妙案が有りましたら、宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

>Doイベントのと云う事でDoWhileループの追加を行ってみましたが、特に効果は無い様でした。 あ、そうじゃないんです。DoEvents というステートメントです。ヘルプで DoEvents を見てみてください。 ( DoEvents で解消されるという確証はありませんが。)

Adenau
質問者

お礼

 chipmoguraさんのお礼に書きましたが、どうやらイベントキックで並列処理になっている事が問題だった様です。 色々ヒントを頂き、有難うございました。

Adenau
質問者

補足

丁寧なフォローを有り難うございます。 …確認しました。昨日の検索時に見つけられませんでした(汗)  回答の例と同様の処理なのでリスト作成Loopの前や中にDoEventを追加してみましたが、変化は見られず=解消には到りませんでした。残念です。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

私も以前、同じような症状を見たことがあります。が、何をどうしたからなのかよくわからないのですが、いつの間にか再現しなくなってました。 私が開発していたものは WinXP + VB6 + Oracle OO4O の組み合わせで、 (1) OraDynaset ( ADO や DAO の Recordset のようなもの ) を取得 (2) Loop でコンボボックスのリストをセット のようにしていたのですが、他の問題があって、(1) と (2) の間に DoEvents を入れたことがありました。 確証はないのですが、DoEvents を入れてから再現しなくなったような気がします。 あと、DoEvents を入れても解消しない場合、今ちょっと思いついたのですが、「最小化→元にサイズに戻す」の代わりに「 Me.Show 」( Me は自フォーム ) はどうでしょうか。Me.Show だけではダメなら、一度 Me.Hide してから .Show するとか。もしこれで解消されるなら「最小化→元に戻す」よりは見た目まだましかなぁ、と。

Adenau
質問者

補足

 回答有難うございます。 Doイベントのと云う事でDoWhileループの追加を行ってみましたが、特に効果は無い様でした。 具体的にどの様なイベントを追加されたか思い出されましたら、お教え願えますでしょうか。 Me.showも単独では効果が無いようです。 Hideの併用は画面のちらつきとカーソル連打が恐いので、遠慮することにしました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • [Access2003]コンボボックスとリストボックスの違い

    今、Access2003のフォームのコントロールの作成について勉強しています。『コンボボックス』と『リストボックス』を見て、コンボボックスは、「ドロップダウン形式でスペースを節約できる点」、リストボックスは、「一覧がすべて表示される」という意味がよく分かりませんでした。 インターネットでいろいろ調べて見たのですが…. 例えば・・・・ 店名ID 店名 A A店 B B店 C C店 と『コンボボックス』と『リストボックス』が表示され、ボックスの上の選択の矢印があるかないかの違いしか分かりませんでした。 (1)Access初心者なので『コンボボックス』と『リストボックス』について簡潔に教えてくださったら助かります。もしホームページで『コンボボックス』と『リストボックス』について一目で見たら違いが分かるというものが掲載されていたら教えてください。 (2)コンボボックスの「ドロップダウン形式」がよく分からないです。

  • コンボボックスのリストの位置

    VisualBasic 6.0のコンボボックスに、API(CB_SETDROPPEDWIDTH)を利用してドロップダウンリストの幅を広げて使っています。 このときコンボボックスが画面の右端にあったり、極端に広いリストにした場合に、リストの右端が画面からはみ出してしまいます。 リストがはみ出すときは、コンボボックスの位置を変えずにリストのみ左へずらしたいのですが、そのようなことはできるのでしょうか?  よろしくお願いいたします。

  • ExcelVBA コンボボックスリストのリセット

    4月からマクロを勉強し始めて、壁にぶつかっています。 ユーザーフォームでオプションボタンの下にコンボボックス(1)を、そのさらに下にもうひとつコンボボックス(2)をレイアウトしました。 コンボボックス(1)は選ばれたオプションボタンによって、異なるリストを表示させるようにしてあります。 わからないのは、コンボボックス(2)のリストをコンボボックス(1)で選ばれた文字によって変えたいのです。 たとえば、コンボボックス(1)で"A"と選択されたら、コンボボックス(2)にはリストA'が、(1)で"B"と選択されたら、(2)にはりすとB'が…、というように、場合分けさせたいのです。 方法をご存知の方がいらっしゃいましたら、ご教示ください。よろしくお願いいたします。

  • コンボボックスのリスト表示について

    ユーザーフォーム上でコンボボックスを作成しました。 リストの元となるデータがあるセル範囲に名前を付け、 コンボボックスのRowSourceにその名前を入れてリストにしています。 リストを変更するときにはデータを作り変え、マクロでそのセル範囲に名前を付け替えるようにしています。 問題は前のリストの数が3つだったとし、次にリストの数を5つになるように作り変えた時にコンボボックスの表示が上3つまでしか表示されないのです。 リストのスクロールもできない状態です。 Visual Basicの画面でコンボボックスをいじったら直っています。 名前のセル範囲、データの変更はきちんと反映しています。 List Rows等のプロパティをいじってみても直りません。 どこを設定しなおせばいいのでしょうか。OSはMe、Excel2000です。

  • リストボックス

    VB.NETでWindowsMobile5.0の開発をしてます。 リストボックスのアイテムを削除するとアイテムのフォーカスが消えてしまいます。 続けて削除としたいのですがリストボックス内のアイテムにフォーカスを移すにはどうすれば良いのでしょうか。 初歩的な質問で申し訳ありませんがよろしくお願いします。

  • コンボボックスかリストボックスの使い方

    VB2008でプログラミングしています。 コードと値がセットになっているDBからデータを取得して フォームに表示させるように作成しています。 フォームに表示するのは値で、実行ボタンを押したときには コードを取得したいのですが この場合は、コンボボックスでしょうか?リストボックスでしょうか? 複数選択はできません。 選ばれたコードを元にDBを検索するプログラムが実行されます。

  • VB6.0 リストボックスやコンボボックスについて

    環境VB6.0、WinXPです。 現在VB6.0について、独学で学んでいます。 インターネットにて下記のサイトを見つけました。 http://www4.plala.or.jp/tamo/vb/vb99.html このサイトの課題5と6でつまづいています。 5に関しては、文字を分割して表示するプログラムなのですが、毎回違う値が入ってくることを想定すると、どのようにして一文字ずつリストボックスに表示すれば良いのか分かりません。 6に関しては、コンボボックスの全値を取得できるような方法があるのでしょうか? 初心者なので、コードなど参考になるものを教えていただければ幸いです。 どなたかご教授下さい。お願いいたします。

  • ACCESS:コンボボックスのロックについて

    初めまして。 まったくの初心者ですが宜しくお願いします。 環境はOS:Xp・ACCESS2000です コンボボックスをあらかじめ登録されているリストからしか選べないように、要はコンボボックスに文字などキーボードからの入力を受け付けないようにしたいのですが、どのようにすれば良いのでしょうか? プロバティに編集ロックというのがあるのですが、それをするとリストからも選べなくなってしまいます。 どうか宜しくお願いします。

  • vb6のコンボボックスの操作について

    おはようございます。 vb6+MDBの環境下で、コンボボックスについて質問です。 マスタとなるテーブルA(都道府県など)と、一般的(?)なデータを日々貯めていくテーブルBがあり、 Bに、Aのキーとなる値が保存されています。 テーブルデータBの表示・更新画面を作っているのですが、 テーブルAの内容を画面上のコンボボックスに選択項目としてADDして表示するところまでは出来たのですが、以下のことを実現するには、コンボボックスにどういう記述で実現するのかわかりません。 1.テーブルBに持っているAの都道府県コードに該当する項目を、Bのデータ選択時に表示したい。 【テーブルA】 Aのキーコード,都道府県名 【テーブルB】 Bのキーコード,Aのキーコード,住所… このような場合、イベント時にコンボボックスをどのように処理するようにソースを書けば実現できますか?

  • コンボボックスからデータ抽出

    環境:ACCESS2000、VB6.0、win2000 アクセスのフィールド名をフォームロード時点にコンボボックスに表示したいのですが。 フィールド名をコンボボックスに表示させることは可能でしょうか??