易语言超级列表框指定行着色效果

易语言 2020-08-21 17:46:29

易语言超级列表框指定行着色效果

.如果真 (msg = 78) ' WM_NOTIFY
' 判断 (wparam = 100)
CopyMemory_NMHDR (hdr, lparam, 12)
.如果真 (hdr.code = -12) ' NM_CUSTOMDRAW
CopyMemory_NMLVCUSTOMDRAW (lvcd, lparam, 60)
.判断开始 (lvcd.nmcd.dwDrawStage = 1) ' #CDDS_PREPAINT '表示在绘画前阶段
返回 (32) ' #CDRF_NOTIFYITEMDRAW 指出项(或子项)将进行绘制。
.判断 (lvcd.nmcd.dwDrawStage = 65537) ' #CDDS_ITEMPREPAINT 表示在列表项的绘画前阶段
' 如果真 (位与 (lvcd.nmcd.dwItemSpec, 1) = 1) ' 交替背景色
' lvcd.clrTextBk = #银白
.计次循环首 (取数组成员数 (列表框_), i)
.如果真 (hdr.hwndFrom = 列表框_ [i].取窗口句柄 ())
表项 = 分割文本 (表项索引_ [i], “|”, )
文本 = 分割文本 (文本颜色_ [i], “|”, )
背景 = 分割文本 (背景颜色_ [i], “|”, )
.计次循环首 (取数组成员数 (表项), ii)
.如果真 (lvcd.nmcd.dwItemSpec = 到数值 (表项 [ii]))
lvcd.clrText = 到数值 (文本 [ii])
lvcd.clrTextBk = 到数值 (背景 [ii])
.如果真结束

.计次循环尾 ()
.如果真 (列表框_ [i].是否被选择 (lvcd.nmcd.dwItemSpec)) ' 定义选中时的颜色与背景色
lvcd.clrText = #白色
lvcd.clrTextBk = #桃红
.如果真结束
lvcd.nmcd.uItemState = 0
CopyMemory_NMLVCUSTOMDRAWTolParam (lparam, lvcd, 60)
返回 (0)
' 返回 (2) ' #CDRF_NEWFONT 当代码更改绘制项/子项的字体时使用。
' 跳出循环 ()
.如果真结束

.计次循环尾 ()