Private Sub Command1_Click()
lvList.GridLines = Not lvList.GridLines
SetBackColor lvList, vbRed, vbWhite
End Sub
Private Sub Form_Load()
Dim i As Long, lvItem As ListItem
For i = 1 To 450
Set lvItem = lvList.ListItems.Add(, , "演示 " & i)
If i Mod 2 = 0 Then lvItem.Checked = True Else lvItem.Checked = False
Next i
SetBackColor lvList, picBoard, vbRed, vbGreen
End Sub
Private Function SetBackColor(lvList As ListView, picBoard As PictureBox, CheckColor As ColorConstants, unCheckColor As ColorConstants)
Dim iWidth As Single, iHeight As Single, tHeight As Single, lMatch As Single
Dim i As Long
With picBoard
.AutoRedraw = True
.BackColor = lvList.BackColor
.Cls
.Visible = False
.ScaleMode = vbTwips
.Width = lvList.Width + 100
.Height = lvList.ListItems(1).Height * (lvList.ListItems.Count + 1)
With .Font
.Size = lvList.Font.Size + 2.75
.Bold = lvList.Font.Bold
.Charset = lvList.Font.Charset
.Italic = lvList.Font.Italic
.Name = lvList.Font.Name
.Strikethrough = lvList.Font.Strikethrough
.Underline = lvList.Font.Underline
.Weight = lvList.Font.Weight
End With
iWidth = .Width
For i = 1 To lvList.ListItems.Count
If i = 1 Then lMatch = lvList.ListItems(i).Top - lvList.ListItems(i).Height
tHeight = lvList.ListItems(i).Top - lvList.ListItems(i).Height - lMatch
iHeight = lvList.ListItems(i).Height
If lvList.ListItems(i).Checked Then
picBoard.Line (0, tHeight)-(iWidth, tHeight + iHeight), CheckColor, BF
Else
picBoard.Line (0, tHeight)-(iWidth, tHeight + iHeight), unCheckColor, BF
End If
Next
End With
lvList.Picture = picBoard.Image
End Function
|