Or at least probably not. You could you make the listbox transparent and put coloured labels behind, but even then you'd need to know which entry was displayed at the top of the list box, which I don't think you can.
Could you make a continuous subform to look like a list box?
Hi,
I was waiting for this thread if anyone can help me also.
I think it is not possible in Access. There are samples I have seen in VB6 that used picturebox control to show alternate line color in ListView. There is a free activex download from Visual Creations
To conditionally format a listview control try this.
' Using ADO recordsets
dim lv as object
dim itm as mscomctlib.listitem
dim rs as adodb.recordset ' ado recordset
dim cn as adodb.connection ' connection
set rs = new adodb.recordset
set cn = currentproject.connection
set lv = Listview1' (name location of your listview)
rs.open "SELECT * FROM TABLE",CN,ADOPENSTATIC
' ADO RECORDSET SHOWN AS EXAMPLE TO FILL LISTVIEW
lv.listitems.clear (clear listview)
' LOOP AND FILL LISTVIEW
DO UNTIL RS. EOF
SET ITM = LV.LISTITEMS.ADD(,,RS!FIELDNAME)
' Then utilize if statement to conditionally format listview.
' Will change forecolor to red
IF RS!FIELDNAME = WHATEVER THEN
ITM.FORECOLOR = VBRED
END IF
'To change other subitems do the following
ITM.SUBITEMS(1) ' WILL BE FIRST COLUMN IN LISTVIEW
' CHANGE .SUBITEMS(1) TO .SUBITEMS(2) ETC FOR OTHER COLUMNS.
' TO CHANGE THE COLOR OF THE SUBITEMS
ITM.LISTSUBITEMS(1).FORECOLOR = VBRED '''''And so on for each column
I hope this helps let me know if you need any other help.
I've tried this but is doesn't seem to work. I get a compile error that says Method or data member not found.
I'm going to put my code below and mark were it's happening.
Thanks
Don
Public ColumnCount As Integer
Public itmX As ListItem
Public sValue As String
Public sFormat As String
Private Sub lvAddRowRSLocal(rs As Recordset, lv As Control, bAutoNumber As Boolean, Optional bDisplayNullAsBlank As Boolean = False)
sRoutine = "lvAddRowRSLocal"
gError.AddRoutine smodule, sRoutine
On Error GoTo Err_Routine
'*************************** ACTIVE CODE ******************************
Dim i As Integer
Dim x As Integer
Dim clmX As ColumnHeader
Dim sFieldName As String
ColumnCount = lv.ColumnHeaders.Count
sFieldName = GetParameter(LVC_FIELDNAME, lv.ColumnHeaders(1).tag)
If bAutoNumber = True Then
Set itmX = lv.ListItems.Add(, , x)
Else
If IsNull(rs(sFieldName)) Then
Set itmX = lv.ListItems.Add(, , "[Blank]")
Else
Set itmX = lv.ListItems.Add(, , CStr(rs(sFieldName)))
End If
End If
For Each clmX In lv.ColumnHeaders
If bDisplayNullAsBlank Then
sValue = "[Blank]"
Else
sValue = ""
End If
If Not clmX.Index = 1 Then
sFieldName = GetParameter(LVC_FIELDNAME, clmX.tag)
sFormat = GetParameter(LVC_FORMAT, clmX.tag)
sValue = FormatListItem(rs(sFieldName), sFormat, bDisplayNullAsBlank)
itmX.SubItems(clmX.Index - 1) = sValue
itmX.ListSubItems(1).ForeColor = vbRed
'It complains on the item above
'Doesn't seem to like the listSubItems
End If
Next clmX
Exit_Routine:
On Error GoTo 0
gError.HandleError
Exit Sub
Err_Routine:
Select Case Err
Case 3265
sValue = "COLUMN NOT FOUND"
Resume Next
Case Else
gError.SetError Err, smodule, sRoutine
Resume Exit_Routine
End Select
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.