| Автор
| Сообщение |
 Evgeny
Постоянный участник

Возраст: 51
Знак зодиака: 
Зарегистрирован: 26.06.2005
Сообщения: 152
Откуда: Омск
|
|
|
Цитата |
|
При изменении состояния встроенного в ListBox CheckBox`a, должны изменять цвет соответствующие строки. Но до вызова CDDS_ITEMPREPAINT дело не доходит. Совсем запутался в попытке разобраться в чем дело. Хохма в том, что ранее такой код я уже с успехом применял и проблем не было, а тут...
Кто знает, в чем причина?
| delphi: | function LVCustomDrawItem(lParam : Longint) : Longint; var NMHDR : PNMHDR; LVCD : PNMLVCUSTOMDRAW; begin Result := CDRF_DODEFAULT; NMHDR := PNMHDR(lParam); LVCD := PNMLVCUSTOMDRAW(lParam); case NMHDR^.code of NM_CUSTOMDRAW: with PNMCustomDraw(NMHDR)^ do begin case dwDrawStage of CDDS_PREPAINT : begin Result := CDRF_DODEFAULT or CDRF_NOTIFYITEMDRAW or CDRF_NOTIFYSUBITEMDRAW; Exit; end; CDDS_ITEMPREPAINT : // не доходит вызов begin if not LV_GetChecked(hdr.hwndFrom, dwItemSpec) then begin LVCD.clrText := $808080; LVCD.clrTextBk := $CFB78F; Result := CDRF_DODEFAULT or CDRF_NOTIFYSUBITEMDRAW; Exit; end; end; end; end; end; end; ... WM_NOTIFY : begin if PNMHDR(lParam)^.hwndFrom = hLV then case PNMHDR(lParam)^.code of NM_CUSTOMDRAW : begin Result := LVCustomDrawItem(lParam); Exit; end; end; end; ...
|
_________________ Здесь Вы там не найдете |
|
| В начало |
|
 |
|
|
 |
|