リストビューで2行表示

[戻る]
MAKI 2002/07/16(火) 16:34:08
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の中に改行を含むデータを表示することができるんでしょうか?

べーちゃん 2002/07/17(水) 02:21:50
こんにちわ、MAKIさん。

>リストビューの1行に2行分のデータを1セットでいれるといことです。
>行を選択すると
>dataA1-1   dataB1-1   dataC1-1
>dataA1-2   dataB1-2   dataC1-2
>の部分が選択状態にしたいです。

私の知る範囲ではリストビューにはその機能はないですね。
この手の機能は市販のコントロールを買うしかないと思います。

>または上記dataA1の中に改行を含むデータを表示することができるんでしょうか?

改行にも対応していないようです。

改行を含めたデータを表示するのであれば、FlexGridを使うことを
お勧めします。

yas0302 2002/07/17(水) 12:20:49
> リストビューの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() にも処理を書かないと
いけません。

MAKI 2002/07/17(水) 17:34:05
[[解決]]
ありがとうございました。
早速やってみます。

古いスレッドには追加発言できません。