Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Завтра :

День славянской письменности и культуры


ListView и встроенный CheckBox


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
Пол:Муж Evgeny
Постоянный участник


Возраст: 51
Знак зодиака: Козерог
Зарегистрирован: 26.06.2005
Сообщения: 152
Откуда: Омск
СообщениеВт, 24-Июн-2008 23:42    Заголовок сообщения: ListView и встроенный CheckBox
Цитата

При изменении состояния встроенного в ListBox CheckBox`a, должны изменять цвет соответствующие строки. Но до вызова CDDS_ITEMPREPAINT дело не доходит. Совсем запутался в попытке разобраться в чем дело. Хохма в том, что ранее такой код я уже с успехом применял и проблем не было, а тут...
Кто знает, в чем причина?


delphi:
  1. function LVCustomDrawItem(lParam : Longint) : Longint;
  2. var
  3.   NMHDR : PNMHDR;
  4.   LVCD  : PNMLVCUSTOMDRAW;
  5. begin
  6.   Result := CDRF_DODEFAULT;
  7.   NMHDR := PNMHDR(lParam);
  8.   LVCD  := PNMLVCUSTOMDRAW(lParam);
  9.   case NMHDR^.code of
  10.     NM_CUSTOMDRAW:
  11.       with PNMCustomDraw(NMHDR)^ do
  12.       begin
  13.         case dwDrawStage of
  14.           CDDS_PREPAINT :
  15.           begin
  16.             Result := CDRF_DODEFAULT or CDRF_NOTIFYITEMDRAW or CDRF_NOTIFYSUBITEMDRAW;
  17.             Exit;
  18.           end;
  19.           CDDS_ITEMPREPAINT : // не доходит вызов
  20.           begin
  21.             if not LV_GetChecked(hdr.hwndFrom, dwItemSpec) then
  22.             begin
  23.               LVCD.clrText   := $808080;
  24.               LVCD.clrTextBk := $CFB78F;
  25.               Result := CDRF_DODEFAULT or CDRF_NOTIFYSUBITEMDRAW;
  26.               Exit;
  27.             end;
  28.           end;
  29.         end;
  30.       end;
  31.   end;
  32. end;
  33.  
  34. ...
  35.     WM_NOTIFY :
  36.     begin
  37.       if PNMHDR(lParam)^.hwndFrom = hLV then
  38.         case PNMHDR(lParam)^.code of
  39.           NM_CUSTOMDRAW :
  40.           begin
  41.             Result := LVCustomDrawItem(lParam);
  42.             Exit;
  43.           end;
  44.         end;
  45.     end;
  46. ...

_________________
Здесь Вы там не найдете
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100