Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.157 c
6-1112614864
Muh
2005-04-04 15:41
2005.07.11
Какого ... закрыли мои сообщения??


4-1116170119
vaxluk
2005-05-15 19:15
2005.07.11
смена обоев рабочего стола


3-1117179624
Neat
2005-05-27 11:40
2005.07.11
DBGrid. Сохранение порядка отображения записей


3-1117428662
yk
2005-05-30 08:51
2005.07.11
Как выбрать из DataSet то что мне нужно


14-1118766918
kaif
2005-06-14 20:35
2005.07.11
PAD-файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский