С>Ситуация: С>1. Фокус ввода находится на Edit1. С>2. Я нажимаю и ОТПУСКАЮ мышь на Edit2.
С>В результате в memo1 оказывается строка down.
С>ВОПРОСЫ: 1. Почему не срабатывает событие Edit2MouseUp С>2. Как сделать так, чтобы факт отпускания мыши стал известен Edit2.
Это происходит потому, что после MouseDown вызывается Exception (и диалоговое окно) из Edit1Exit, соответственно фокус теряется и все мышиные сообщения идут не на Edit2. Собственно надо в Edit1Exit например ничего не делать....
С>>Ситуация: С>>1. Фокус ввода находится на Edit1. С>>2. Я нажимаю и ОТПУСКАЮ мышь на Edit2.
С>>В результате в memo1 оказывается строка down.
С>>[b]ВОПРОСЫ: С>>2. Как сделать так, чтобы факт отпускания мыши стал известен Edit2.
Здравствуйте, hun, Вы писали:
hun>Это происходит потому, что после MouseDown вызывается Exception (и диалоговое окно) из Edit1Exit, соответственно фокус теряется и все мышиные сообщения идут не на Edit2. Собственно надо в Edit1Exit например ничего не делать....
Мне почему-то кажется, что это не совсем так: MouseDown все-таки приходит в итоге Edit2. Т.е. нажитие мыши породило смену фокуса, при смене фокуса диалоговое окно показалось, а потом MouseDown пришел Edit2. А вот MouseUp пропал.
Интересно, но согласно winsight32 — MouseUp (вернее соотв. сообщение windows) вообще никому не приходит.
В действительности исходный вопрос возник вот почему:
1. Кладем на форму Edit. Прописываем в нем указанный в исходном вопросе OnExit.
2. Кладем на форму TStringGrid (в нем ничего не меняем).
3. Запускаем.
4. Идем в Edit.
5. Нажимаем мышкой на Grid
6. Видим сообщение.
7. Закрываем его.
В результате по гриду бегает за мышью синий прямоугольник.
Такое происходит именно потому, что в грид не пришел mouseup.
Здравствуйте, Суслик, Вы писали:
С>Мне почему-то кажется, что это не совсем так: MouseDown все-таки приходит в итоге Edit2. Т.е. нажитие мыши породило смену фокуса, при смене фокуса диалоговое окно показалось, а потом MouseDown пришел Edit2. А вот MouseUp пропал.
По поводу "кажется" — это я ничего не могу сказать, это не ко мне. А вот насчет остального, фокус при нажатии мыши действительно приходит в Edit2, потом появляется окно сообщения и фокус уходит к нему. MouseUp никуда не пропадал, он придет к этому окну (если мышь отпустить пока оно активно), а вот если кнопку мыши держать нажатой, окно убрать нажав Enter, а потом отпустить мышь над Edit2 то к нему MouseUp и приде, никуда не денется.
С>Интересно, но согласно winsight32 — MouseUp (вернее соотв. сообщение windows) вообще никому не приходит.
видать не дошло оно, по дороге сдохло ..... что делать, такова жизнь....
Приходит, наверняка на самом деле, причем скорее всего окну сообщения. Ну собственно вот чего пишут: The WM_LBUTTONUP message is posted when the user releases the left mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.