投稿日 | : 2003/03/27(Thu) 19:47 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^3: ListViewについて |
> 動的に変更できるということなのですが、
> 下記の様なロジックを作成した時に、実際に画面が起動して
ListView.Iconsを動的に変更する事はできますが、変更すると、
既にListViewに登録したListItem全てが、その影響を受けます。
> 項目1〜10をListImage1から、項目11〜20をListImage2から、といったように
ImageListとListImageは別物なので、注意しましょう。(^^;)
それはさておき、ListViewと関連付けられるのは、一つのImageListだけなので、
表示させたい画像全てを一つのImageListにまとめておき、それをListView.Iconsに
割り当てるようにする必要があると思います。
ImageList0.ListImages.Clear
For Each LI In ImageList1.ListImages
ImageList0.ListImages.Add , LI.Key, LI.Picture
Next
For Each LI In ImageList2.ListImages
ImageList0.ListImages.Add , LI.Key, LI.Picture
Next
Set ListView1.Icons = ImageList0
> 1件〜10件のデータは画像が表示されません。
ListView.Iconsを変更すると、既存のListItem.Iconはクリアされますので、
ListView.Iconsの変更後は、ListItem.Iconの値を再設定する必要があります。
Option Explicit
Private Sub Form_Load()
Me.ScaleMode = vbPixels
Picture1.Move 0, 0, 16, 16
Picture1.AutoRedraw = True
Picture1.Visible = False
Set ListView1.Icons = Nothing
ImageList1(0).ListImages.Clear
ImageList1(1).ListImages.Clear
'ImageList1, ImageList2, ListView1の設定
Dim I As Byte
Dim X As String
For I = 0 To 7
X = "X" & CStr(I)
Picture1.BackColor = QBColor(I)
ImageList1(0).ListImages.Add , X, Picture1.Image
Picture1.BackColor = QBColor(I + 8)
ImageList1(1).ListImages.Add , X, Picture1.Image
ListView1.ListItems.Add(Text:=X).Tag = X
Next
Command1(0).Caption = "ImageList1(0)の割り当て"
Command1(1).Caption = "ImageList1(1)の割り当て"
End Sub
Private Sub Command1_Click(Index As Integer)
Dim LI As ListItem
'イメージリストの割り当てを変更する
Set ListView1.Icons = ImageList1(Index)
'ListView.Iconsを変更すると、ListItems.Iconの値が
'クリアされてしまうので、もう一度設定しなおす
For Each LI In ListView1.ListItems
LI.Icon = LI.Tag
Next
End Sub