こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

2つのテーブルのデータをそれぞれリストに表示して選択したい

VB6で以下のようなプログラムを作っています。

Aテーブルのデータを一覧表示するリスト1とBテーブルのデータを表示する
リスト2があって、リスト1で選んだデータとリスト2で選んだデータの
組み合わせによって、エクセルにデータを出力します。
・MS-ACCESSのmdbのテーブルからデータを表示(DAOを使っているようです。)
・リストは表示のみ、入力はなし
・複数行選択あり
・初期表示時に、あらかじめあるデータを選択状態にして表示

ヘルプをあちこち見た結果、LISTVIEWが近いかなと思って、やってみている
のですが、リスト1で選択しても、リスト2を選択すると、リスト1の反転
が消えてしまうんです。両方選択状態にしておきたいんですけど、LISTVIEW
じゃできないんでしょうか?ただ、業務で作成されているコントロールなども
使っているので、その影響がないとも言えません。なので「できるはずだ!」
という回答でも構いません。
あと、リストに入力できてしまいます。選択はできるけど、入力は不可という
状態にできるのでしょうか?
ヘルプをあちこち見てみたんですけど、ヘルプ自体がよくわからなくて。。。
アドバイスよろしくお願いします。

投稿日時 - 2002-12-12 20:50:00

QNo.426461

すぐに回答ほしいです

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

'ロード
Private Sub Form_Load()
  Dim i  As Integer
  
  'リストビュー初期設定
  Call initLvw(ListView1)
  Call initLvw(ListView2)
  
  '値セット
  For i = 0 To 5
    ListView1.ListItems.Add , , i
  Next i
  For i = 10 To 50 Step 10
    ListView2.ListItems.Add , , i
  Next i
End Sub

'リストビュー初期設定
Private Sub initLvw(inLvw As ListView)
  With inLvw
    .View = lvwList     '表示スタイル:一覧
    .LabelEdit = lvwManual 'ラベル編集:不可
    .HideSelection = False 'フォーカスを失ったときに強調表示しない:不可
  End With
End Sub

'サイズ変更時
Private Sub Form_Resize()
  On Error Resume Next
  With Me
    .ListView1.Move 0, 0, (.ScaleWidth \ 2) - 1, .ScaleHeight
  
    .ListView2.Move .ListView1.Width + 2, 0, (.ScaleWidth \ 2) - 1, .ScaleHeight
  End With
End Sub

投稿日時 - 2002-12-13 11:16:22

お礼

詳しい回答ありがとうございます。
おかげで思ったとおりに実現することができました。
表示スタイルはReportで作りました。あと、選択が解除されてしま
うのは、プロパティで「選択を自動解除する」というのにチェックが
入っていたのが原因でした。
大変たすかりました。ありがとうございました。

投稿日時 - 2002-12-13 23:09:22

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

普通のListBoxでStyleを「1-チェックボックス」を選択すると
リストにチェックできるようになります。
チェックが入っていればフォーカスは関係ないと思いますが。

答えになってませんが参考程度にどうぞ。

投稿日時 - 2002-12-13 17:12:20

お礼

回答ありがとうございます。
今回は思い通りの仕様で実現することができましたが、
チェックボックスもちょっとやってみました。
これも何かに使えそうですね。よく見かける感じで。
参考になりました。

投稿日時 - 2002-12-13 23:13:19

あなたにオススメの質問