Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение, по какой колонке сделан щелчок в ListView [D7, Win95/98, WinXP]


Страницы:   1 2

AD_infiniTUM ©   (2004-07-12 18:25:00) 

Как определить, по какой колонке сделан щелчок в ListView? Если я правильно понял, то нужно перехватывать сообщение WM_NOTIFY. А как дальше?
Заранее спасибо.


AD_infiniTUM   (2004-07-13 11:23:00) [21]

Теперь на первом столбце тоже перестало работать. Т.е. вообще не работает.


NAlexey   (2004-07-13 11:11:00) [22]

Ааааа, извиняюсь. Это я чего. Пробуй так:

procedure TForm1.FormCreate(Sender: TObject);
begin
 FOldWndProc := ListView1.WindowProc;
 ListView1.WindowProc := NewWndProc;
end;

procedure TForm1.NewWndProc(var Message: TMessage);
begin
 case Message.Msg of
   WM_NOTIFY:
   case HD_NOTIFY(Pointer(Message.LParam)^).Hdr.code of
     HDN_ITEMCLICKW:
       ShowMessage(IntToStr(HD_NOTIFY(Pointer(Message.LParam)^).Item));
   end;
 end;
 if Assigned(FOldWndProc) then
   FOldWndProc(Message);
end;


NAlexey   (2004-07-13 10:52:00) [23]

>AD_infiniTUM   (13.07.04 10:49) [2]
Ты чего?


AD_infiniTUM   (2004-07-13 10:49:00) [24]

Почему-то срабатывает только при щелчке по заголовку первой колонки, а как со стальными колонками? Может я что-то не так делаю...
Вот код:
function ListViewWndProc(Wnd: HWnd; Msg: Cardinal; wParam,
 lParam: Cardinal): Cardinal; stdcall;
begin
 Result := CallWindowProc(Pointer(ListviewProc), Wnd, Msg, wParam, lParam);
 case Msg of
   WM_NOTIFY:
     case HD_NOTIFY(Pointer(LParam)^).Hdr.code of
       HDN_ITEMCLICK: if HD_NOTIFY(Pointer(LParam)^).Item = 0 then
         MessageBox(0, 'Сделан щелчок по колонке', 'Message');
     end;
 end;
end;


NAlexey   (2004-07-13 09:40:00) [25]


procedure ListViewWndProc(var Message: TMessage);
 case Message.Msg of
   WM_NOTIFY:
   case HD_NOTIFY(Pointer(Message.LParam)^).Hdr.code of
     HDN_ITEMCLICK:
     begin
       if HD_NOTIFY(Pointer(Message.LParam)^).Item = 0 then
         . . .
     end;
   end;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо