Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > TListView и MouseUp


Автор: Ak47black 7.5.2007, 19:57
Если сделать у TListView при событии OnMouseUp 
Код

  beep;

То при нажатии правой кнопкой на итемс сигнала(beep) нету, а при двойном щелчке сигнал есть.
Но если нажимать один раз не на итемс правой кнопкой то сигнал есть.
Подскажите в чем тут дело и как сделать что-бы при нажатии правой кнопки на итемс было событие OnMouseUp?

Автор: Yanis 7.5.2007, 20:02
Цитата(Ak47black @  7.5.2007,  20:57 Найти цитируемый пост)
Подскажите в чем тут дело и как сделать что-бы при нажатии правой кнопки на итемс было событие OnMouseUp? 

Попробуй ловить WM_LBUTTONUP от ListView. 

Ну и WM_RBUTTONUP, если надо правую кнопку ловить.

Автор: Ak47black 7.5.2007, 20:03
Если что более странно что если поставить 
Код

  beep;

При событии OnMouseDown то он будет работать как OnMouseUp если нажали на итемс правой кнопкой.
Незнаю может я туплю, но чтото непонятное мне тут.

Добавлено через 1 минуту и 59 секунд
Yanis, я сделал при нажатии по правой кнопкой итемсу OnMouseDown, а вне зоны итемса OnMouseUp и оба работают как OnMouseUp .
Я beep просто для упрошения поставил ,а там просто меню заставляю выпасть.

Автор: Sunvas 7.5.2007, 20:45
Ak47black, вот, что получилось. Возьми этот код за основу и переделай под что тебе надо:
Код

function NewWinProc(wnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):integer; stdcall;
begin
if umsg=WM_RBUTTONDOWN then exit;
if (umsg=WM_RBUTTONUP) then
begin
beep;
end
else
result:=CallWindowProc(Pointer(GetWindowLong(wnd,GWL_USERDATA)),wnd,uMsg,wParam,lParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetWindowLong(lv.Handle,GWL_USERDATA,SetWindowLong(lv.Handle,
                                           GWL_WNDPROC, LPARAM(@NewWinProc)));
end;

Автор: Ak47black 7.5.2007, 21:00
Sunvas, спасиба за код. Это как выход неплохой.
Я уже OnMouseDown и OnMouseUp как-бы сделал, вроде работает пока.
Спасибо за ответы.

Добавлено @ 21:01
Проблема решена ,но почему по нажатию правой кнопки по итемсу собитие MouseUp не возникает для меня загадка.  smile 

Автор: Sunvas 7.5.2007, 21:11
Цитата(Ak47black @  7.5.2007,  21:00 Найти цитируемый пост)
Проблема решена ,но почему по нажатию правой кнопки по итемсу собитие MouseUp не возникает для меня загадка. 

Покопайся в Борландовском коде. Думаю поймешь.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)