VBのリストビューで
列名A 列名B 列名C
dataA1 dataB1 dataC1
dataA2 dataB2 dataC2
dataA3 dataB3 dataC3
というのはできますが
列名A 列名B 列名C
dataA1-1 dataB1-1 dataC1-1
dataA1-2 dataB1-2 dataC1-2
dataA2-1 dataB2-1 dataC2-1
dataA2-2 dataB2-2 dataC2-2
dataA3-1 dataB3-1 dataC3-1
dataA3-2 dataB3-2 dataC3-2
のような表示の仕方はできるんでしょうか?
リストビューの1行に2行分のデータを1セットでいれるといことです。
行を選択すると
dataA1-1 dataB1-1 dataC1-1
dataA1-2 dataB1-2 dataC1-2
の部分が選択状態にしたいです。
または上記dataA1の中に改行を含むデータを表示することができるんでしょうか?
こんにちわ、MAKIさん。
>リストビューの1行に2行分のデータを1セットでいれるといことです。
>行を選択すると
>dataA1-1 dataB1-1 dataC1-1
>dataA1-2 dataB1-2 dataC1-2
>の部分が選択状態にしたいです。
私の知る範囲ではリストビューにはその機能はないですね。
この手の機能は市販のコントロールを買うしかないと思います。
>または上記dataA1の中に改行を含むデータを表示することができるんでしょうか?
改行にも対応していないようです。
改行を含めたデータを表示するのであれば、FlexGridを使うことを
お勧めします。
> リストビューの1行に2行分のデータを1セットでいれるといことです。
> 行を選択すると
> dataA1-1 dataB1-1 dataC1-1
> dataA1-2 dataB1-2 dataC1-2
> の部分が選択状態にしたいです。
見た目が、このようになればいいのであれば、
プロパティで、MultiSelect を 1 に設定します。
セットする場合は、
List1.AddItem dataA1-1 dataB1-1 dataC1-1
List1.AddItem dataA1-2 dataB1-2 dataC1-2
この様に必ず2行ずつセットして、
マウスによる選択時には、MouseDown() に
以下のように記述します。
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y
As Single)
Dim Index As Long
Dim Idx1 As Long
Dim Idx2 As Long
Dim i As Long
Dim Cnt As Long
Static CancelFlag As Boolean
If List1.ListCount = 0 Then
Exit Sub
End If
If CancelFlag Then
Exit Sub
End If
Index = List1.ListIndex
If Index <> -1 Then
CancelFlag = True
List1.Visible = False
Idx1 = (Index \ 2) * 2
Idx2 = Idx1 + 1
Cnt = List1.ListCount - 1
For i = 0 To Cnt
List1.Selected(i) = False
Next
List1.Selected(Idx1) = True
List1.Selected(Idx2) = True
List1.Visible = True
CancelFlag = False
List1.SetFocus
End If
End Sub
これで、それらしくは動作しますが、完璧ではありません。
キーによる選択が必要なら、KeyDown() にも処理を書かないと
いけません。
ありがとうございました。
早速やってみます。