自己用 PictureBox、Label(数组)、VScrollBar 和字符串数组变量拼装一个 List。再加上一个 Text 就是 Combo。
用MSFLEXGRID可以实现行列问题,如点击一行其颜色不同如下:Private Sub Recordgrid_Click() Recordgrid.Visible = False With Recordgrid Dim kRow, kCol As Integer kRow = .Row kCol = .Col .Redraw = False Dim i As Integer, j As Integer For i = 1 To 19 For j = 1 To 8 .Row = i .Col = j .CellBackColor = RGB(255, 255, 255) Next j Next i .Row = kRow For i = 1 To 8 .Col = i .CellBackColor = RGB(140, 180, 255) Next .Redraw = True End With Recordgrid.Visible = True End Sub
listbox不行,你还listview吧首先在窗口中添加一个ListView控件,方法:菜单->工程->部件->Microsoft Window Common Control 6.0 (后面为版本号)。再添加一个Picture控件,改名为picGreenbar。 实现的代码如下:Option ExplicitPrivate Sub Form_Load() Dim i As Integer Dim iFontHeight As Long Dim iBarHeight As Integer Dim j As Integer Dim itmX As ListItem Dim ColHead As ColumnHeader ListView1.ColumnHeaders.Add , , "This is Just a Simple Example" ListView1.ColumnHeaders(1).Width = 3000'添加一些实验数据 For j = 1 To 33 Set itmX = ListView1.ListItems.Add() itmX.Text = "This is item number " & CStr(j) Next jMe.ScaleMode = vbTwips picGreenbar.ScaleMode = vbTwips picGreenbar.BorderStyle = vbBSNone picGreenbar.AutoRedraw = True picGreenbar.Visible = False picGreenbar.Font = ListView1.Font iFontHeight = picGreenbar.TextHeight("b") + Screen.TwipsPerPixelY iBarHeight = (iFontHeight * 1) picGreenbar.Width = ListView1.Width '====== picGreenbar.Height = iBarHeight * 2 picGreenbar.ScaleMode = vbUser picGreenbar.ScaleHeight = 2 picGreenbar.ScaleWidth = 1 'draw the actual bars picGreenbar.Line (0, 0)-(1, 1), vbWhite, BF picGreenbar.Line (0, 1)-(1, 2), RGB(227, 241, 226), BF '====== ListView1.PictureAlignment = lvwTile ListView1.Picture = picGreenbar.Image End Sub 代码量不多,不过很实用。
Recordgrid.Visible = False
With Recordgrid
Dim kRow, kCol As Integer
kRow = .Row
kCol = .Col
.Redraw = False
Dim i As Integer, j As Integer
For i = 1 To 19
For j = 1 To 8
.Row = i
.Col = j
.CellBackColor = RGB(255, 255, 255)
Next j
Next i
.Row = kRow
For i = 1 To 8
.Col = i
.CellBackColor = RGB(140, 180, 255)
Next
.Redraw = True
End With
Recordgrid.Visible = True
End Sub
hfgData.Rows = 2
hfgData.Cols = 3
hfgData.ColWidth(0) = 500
hfgData.TextMatrix(0, 1) = "name"
hfgData.ColWidth(1) = 5000
hfgData.TextMatrix(0, 2) = "content"
hfgData.ColWidth(2) = 1000我用的是mshflexgrid,不知道msflexgrid里面有没有。
Dim i As Integer
Dim iFontHeight As Long
Dim iBarHeight As Integer
Dim j As Integer
Dim itmX As ListItem
Dim ColHead As ColumnHeader
ListView1.ColumnHeaders.Add , , "This is Just a Simple Example"
ListView1.ColumnHeaders(1).Width = 3000'添加一些实验数据
For j = 1 To 33
Set itmX = ListView1.ListItems.Add()
itmX.Text = "This is item number " & CStr(j)
Next jMe.ScaleMode = vbTwips
picGreenbar.ScaleMode = vbTwips
picGreenbar.BorderStyle = vbBSNone
picGreenbar.AutoRedraw = True
picGreenbar.Visible = False
picGreenbar.Font = ListView1.Font
iFontHeight = picGreenbar.TextHeight("b") + Screen.TwipsPerPixelY
iBarHeight = (iFontHeight * 1)
picGreenbar.Width = ListView1.Width
'======
picGreenbar.Height = iBarHeight * 2
picGreenbar.ScaleMode = vbUser
picGreenbar.ScaleHeight = 2
picGreenbar.ScaleWidth = 1
'draw the actual bars
picGreenbar.Line (0, 0)-(1, 1), vbWhite, BF
picGreenbar.Line (0, 1)-(1, 2), RGB(227, 241, 226), BF
'======
ListView1.PictureAlignment = lvwTile
ListView1.Picture = picGreenbar.Image
End Sub
代码量不多,不过很实用。
能否作到listbox中满足条件的text用红色来表示啊
这个问题我晕了几天了!