Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

События мыши   Найти похожие ветки 

 
Optical   (2005-06-13 20:48) [0]

Подскажите пожалуйста как можно через событие мыши OnMouseLeave отменить событие OnMouseUp так, чтобы оно вообще не наступало. Заранее спасибо.


 
Expl   (2005-06-13 21:05) [1]

Создай глобальную переменную boolean и в событии OnMouseLeave делай ее true, например, а в OnMouseUp поставь условие с ее проверкой.


 
Optical   (2005-06-13 21:12) [2]

Так я и сделал... сначала... но мне нужен более гибкий подход. Дело в том что мне нужно написать одну процедуру, к которой будут обращаться около ста других компонент, иначе в обработчике события OnMouseUp каждого из них придётся писать лишнюю строку, скажем:
 if not MouseInside then Exit;
а это ведь 100 лишних строк.......


 
Virgo_Style ©   (2005-06-13 21:13) [3]

Можно проверять координаты мыши в момент отпускания клавиши.


 
jack128 ©   (2005-06-13 21:17) [4]

попробуй вот это..
MyControl.ControlStyle := MyControl.ControlStyle - [csCaptureMouse];


 
jack128 ©   (2005-06-13 21:19) [5]

в смысле этот код нужно вставить в конструктор контрола или в OnCreate формы на которой лежит тот контрол , для которого ты хочешь задать подобное поведение..


 
Expl   (2005-06-13 21:19) [6]

и что эта запись делает?


 
Virgo_Style ©   (2005-06-13 21:19) [7]

Virgo_Style ©   (13.06.05 21:13) [3]

procedure TForm1.Button1MouseUp(Sender:TObject; Button:TMouseButton;Shift: TShiftState; X, Y:Integer);
var R:TRect; P:TPoint;
begin

P.X := X;
P.Y := Y;

R.Left   := 0;
R.Right  := (Sender as TControl).Width;
R.Top    := 0;
R.Bottom := (Sender as TControl).Height;

if PtInRect(R,P) then
 Memo1.Lines.Add("Есть!")
else
 Memo1.Lines.Add("Промах %-)");

end;


Примерно так...


 
jack128 ©   (2005-06-13 21:57) [8]

Expl   (13.06.05 21:19) [6]
и что эта запись делает?

Если флаг csCaptureMouse взведен, тот при клике на контрол он захватывает мышь(вызывает SetCapture) и все сообщения от мыши приходят именно этому контролу. Когда приходит сообщение WM_LBUTTONUP захват мыши снимается..
Ели же флаг csCaptureMouse сброшен, то все сообщения от мыши идут именно тому контролу, над которым находится курсор.



Страницы: 1 вся ветка

Текущий архив: 2005.07.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.033 c
4-1115567113
vaxluk
2005-05-08 19:45
2005.07.11
запуск внешних программ


14-1118159003
Андрей Жук
2005-06-07 19:43
2005.07.11
Сравнение ogty-сорсных СУБД


6-1111403921
Sour Smile
2005-03-21 14:18
2005.07.11
Как работать с реестром на удалённой машине?


14-1118212041
Тульский
2005-06-08 10:27
2005.07.11
Интернет-распродажа военной техники


14-1118491946
Кирилл
2005-06-11 16:12
2005.07.11
Инсталятор