ListView 項目の選択/選択解除について

解決済みの質問

ListView 項目の選択/選択解除について

 ListViewに表示する情報が1件しかないとき、その情報が常に選択された状態なので、
困っています。

 1件しかなくても、選択したり、選択を解除したりすることは出来ないのでしょうか?

 または、ListViewでは出来ないけど、他のコントロールなら出来ると言う情報があり
ましたらぜひ教えてください。

 よろしくお願いします。

投稿日時 - 2003-01-10 21:28:17

連想キーワード:

QNo.442310

すぐに回答ほしいです

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

失礼しました
× HitItem
○ HitTest
でした。

Private Sub Form_Load()
  Dim i    As Integer
  
  With Me.ListView1
    .View = lvwList       '//表示形式:一覧
    .HideSelection = False   '//リストビューがフォーカスを失っても、選択状態を保持する
    .MultiSelect = True     '//複数選択可能
    
    'ダミーデータの登録
    .ColumnHeaders.Add , , "ヘッダ"
    For i = 1 To 10
      Me.ListView1.ListItems.Add , , "Dmy Data" & i
    Next i
 
  End With
End Sub

Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  Dim itmX  As ListItem
  
  With Me.ListView1
    'マウス位置のアイテムを取得
    Set itmX = .HitTest(x, y)
    '取得できたなら未処理
    If Not (itmX Is Nothing) Then
      GoTo PGMEND
    End If
    
    '現在選択中のアイテムを取得
    Set itmX = .SelectedItem
    '取得できなかったなら未処理
    If (itmX Is Nothing) Then
      GoTo PGMEND
    End If
    
    '選択解除
    Set .SelectedItem = Nothing
    itmX.Selected = False
  End With
  
PGMEND:
  Set itmX = Nothing
End Sub

投稿日時 - 2003-01-14 11:48:52

お礼

完璧です!

どうもありがとうございました。
助かりました。

投稿日時 - 2003-01-14 13:57:21

ANo.4

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

[  前へ  |  次へ ]

ベストアンサー以外の回答(3件中 1~3件目)

ANo.3

以前にエクスプローラのイベントを取得したいと思って、様々なメーリングリストを調べた経験があります。
explorer.exeの話題が出たので、ついでに勝手に補足しますw

>explorer.exe の右ペインのリスト
これは、エクスプローラ用のリストビューです。
構造はVBのリストビューと全く同じです。

サンプルで書いた
.HideSelection = False
属性を持っています。

さらにマウスダウン時に、C言語で言うHitItemマクロで、アイテムの上でのクリックかどうかを調査して、わたしのサンプルと同様なことを行っております。

投稿日時 - 2003-01-13 23:13:13

お礼

ご回答ありがとうございました。
教えて頂いたサンプル通りにやってみました。

その上で、やはりエクスプローラーのような選択/選択解除が一番使い易いかな
と思い、HitItemについて調べているのですが、全然検索に引っかかりません。
他に何かキーワードがありましたら教えてください。

よろしくお願いします。

投稿日時 - 2003-01-14 10:14:30

ANo.2

jmh

その ListView のことは、知らないんですが、
普通(explorer.exe の右ペインのリストなど)は、
アイテムじゃないところ(余白)をクリックすると、
選択解除できます。

投稿日時 - 2003-01-11 02:04:15

ANo.1

Private Sub Command1_Click()
  Dim itmX  As ListItem

  With Me.ListView1
    Set itmX = .SelectedItem
    If itmX Is Nothing Then
      Set .SelectedItem = Me.ListView1.ListItems(1)
    Else
      Set .SelectedItem = Nothing
      itmX.Selected = False
    End If
  End With
  
  Set itmX = Nothing
End Sub

Private Sub Form_Load()
  Dim i    As Integer
    
  With Me.ListView1
    .View = lvwReport
    .HideSelection = False
    
    .ColumnHeaders.Add , , "ヘッダ"
    For i = 1 To 10
      Me.ListView1.ListItems.Add , , "Dmy Data" & i
    Next i
  
  End With
End Sub

投稿日時 - 2003-01-10 23:03:47

あわせてチェックしたい
  • ListViewについて ...
  • ListViewの複数項目削除で再度質問です ...
  • ListViewの選択について ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら