- 締切済み
VBのリストボックスでのスクロールバーについて
VB5で5件のデータ表示サイズをもつリストボックスに 10件のデータを設定した場合にスクロールバーが表示 されますが、この画面を参照モードとして使用したい場合に List1.Enabled=False としました。しかし、この方法だとスクロールバーも 非活性となり、5件以降のデータが参照出来なくなります。 非活性にせず、参照モードの場合にはクリックイベント内で List1.Selected(n)=False Exit Sub をして操作出来ない様にしました。しかし、これだと リストボックスを選択した際に一瞬選択状態になってしまいます。 選択状態にしない方法、もしくは非活性のままスクロール出来る 方法を知っている方がいましたら、御教授下さい。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- NATCHI
- ベストアンサー率43% (17/39)
リストボックスのMultiLineを"0"にして MouseDown と MouseUp の両方に 以下の記述をすれば解決します。 If Me.List1.ListIndex < 0 Then Exit Sub Me.List1.Selected(Me.List1.ListIndex) = False Clickイベントの中身は消してください。 一応前回と同じアドレスにサンプルがあります。
- NATCHI
- ベストアンサー率43% (17/39)
さらに追加です。 VB5のサンプルもアップしておきました。 あと、MultiSelectは設計時のみ変更可能です。 実行時に変更しようとするとエラーになります。 ひとつ気になったのが、選択状態とフォーカスの当たっている状態を間違えてはいないかという点です。 ・選択状態はリストボックスのアイテムが反転表示。 ・フォーカスの当たっている状態はアイテムの周りを罫線で囲っている。 フォーカスの当たっている状態のことを言っておられるなら、SetFocusで他のコントロールにフォーカスを移せば解消します(この時、選択状態は保持されます)
補足
サンプルありがとうございました。 質問した事を整理しますとですね、 選択時(クリック時)に、選択アイテムが 一瞬反転表示されるのが嫌なのです。 フォーカスがあるのも、少し嫌なのですが 優先順位としては”チカッ”っとなるのが 気になるのです。
- NATCHI
- ベストアンサー率43% (17/39)
補足です。 今回サンプルとしてアップしたのはVB6なので、VBPが開けないかも知れません。 frmファイルをテキストエディタで開いてプログラム部分を貼り付けて実行してみてください。
- NATCHI
- ベストアンサー率43% (17/39)
下記URLにサンプルを作ったので参考にして下さい。
- NATCHI
- ベストアンサー率43% (17/39)
クリックイベントで Me.List1.Selected(Me.List1.ListIndex) = False(ikariさんの言う List1.Selected(n)=False ) の記述はいいと思うのですが、 ListBoxのMultiSelectを 1-標準 あるいは 2-拡張 にすれば選択が解除されます。
補足
Multiselectプロパティーは設計時のみ設定可能なものですよね? クリックイベントで行なおうとすると実行時エラーもしくは コンパイルエラーになるのですが?? ちなみに設計時は2-拡張にしています。 何か良い裏技があるのですか? それでも、クリックした時点で選択状態にはなるので クリックの中でやったのでは駄目なのですが。。。
お礼
またまたサンプルありがとうございました。 でも、久々のZIPファイルでこの環境に UNZIP32.DLLが無かったので泣けました(笑) 実はここまではたどり着いてまして、なんとか これで勘弁してくれと言う感じで収めました。 しかし、これだとマウスの微妙な動きによって ドラックイベントが走るのか、連打してると ”チカッ”となるんですよね。そこは許容して 貰いました。