This should help you change the colours of the selected row...
Code:
Case #WM_NOTIFY
*lvCD.NMLVCUSTOMDRAW=lparam
If *lvCD\nmcd\hdr\hwndFrom=ListGadget And *lvCD\nmcd\hdr\code=#NM_CUSTOMDRAW
Select *LVCD\nmcd\dwDrawStage
Case #CDDS_PREPAINT:ProcedureReturn(#CDRF_NOTIFYITEMDRAW)
Case #CDDS_ITEMPREPAINT:ProcedureReturn(#CDRF_NOTIFYSUBITEMDRAW)
Case #CDDS_ITEMPREPAINT|#CDDS_SUBITEM
thisItem=*lvCD\nmcd\dwItemSpec
column=*lvCD\iSubItem ; possible use in the future
subItemRect.RECT\left=#LVIR_LABEL
subItemRect.RECT\top=*lvCD\iSubItem
SendMessage_(ListGadget,#LVM_GETSUBITEMRECT,thisItem,@subItemRect)
subItemText$=GetGadgetItemText(#Clients,*lvCD\nmcd\dwItemSpec,*lvCD\iSubItem)
sitLen=Len(subItemText$)
lvFlags=#DT_END_ELLIPSIS|#DT_WORDBREAK|#DT_VCENTER
If GetGadgetState(#Clients)=thisItem
FillRect_(*lvCD\nmcd\hDC,subItemRect,SelectedBrush)
Selected=#True
ListTextColour=RGB(255,255,255)
Else
FillRect_(*lvCD\nmcd\hDC,subItemRect,BackgroundBrush)
Selected=#False
ListTextColour=RGB(0,128,255)
EndIf
No=*LVCD\nmcd\dwItemSpec
If No<MaxClients
No2=No+1
If ClientTable(No2)\ConnectDate
If Selected
If ClientTable(No2)\Connected
ListTextColour=RGB(60,255,90) ; this is the selected fgnd colour - if connected
Else
ListTextColour=RGB(255,200,200) ; this is the selected fgnd colour - if NOT connected
EndIf
Else
If ClientTable(No2)\Connected
ListTextColour=RGB(0,128,0) ; fgnd colour - if connected
Else
ListTextColour=RGB(255,96,128) ; fgnd colour - if NOT connected
EndIf
EndIf
EndIf
EndIf
SetTextColor_(*lvCD\nmcd\hDC,ListTextColour)
SetBkColor_(*lvCD\nmcd\hDC,BackgroundColour)
; subItemRect\left +3
; subItemRect\right -3
; subItemRect\bottom -3
DrawText_(*lvCD\nmcd\hDC,subItemText$,sitLen,subItemRect,lvFlags)
ProcedureReturn(#CDRF_SKIPDEFAULT)
EndSelect
EndIf
You may like to integrate it with your library?
-Anthony