:: Visual Foxpro, Foxpro for DOS
Re: Как узнать, что последним была мышка или клавиатура?
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Ydin
Сань, ты прав, но я уже решил проблему.
Извини. Но хорошо по теме!
Кому-то понадобится потом.
Тут даже Лулгу поймал драйв...

Да потому что действительно же - возврат в FPD какой-то.
Вот его и торкнуло.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Ну вот хоть так например можно, накидал сходу:

oForm1 = CREATEOBJECT("form1")
oForm1.Show(1)
**************************************************
DEFINE CLASS form1 AS form
DoCreate = .T.
ADD OBJECT text1 AS textbox WITH ;
Height = 25, ;
Left = 10, ;
Top = 100, ;
Width = 100
ADD OBJECT text2 AS textbox WITH ;
Height = 25, ;
Left = 150, ;
Top = 100, ;
Width = 100
ADD OBJECT label1 AS label WITH ;
Caption = "", ;
Height = 40, ;
Left = 10, ;
Top = 10, ;
Width = 100
PROCEDURE text1.Init
this.AddProperty("nKeyCode",0)
ENDPROC
PROCEDURE text1.LostFocus
thisform.label1.Caption = "код выхода: "+TRANSFORM(this.nKeyCode)
ENDPROC
PROCEDURE text1.KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl
this.nKeyCode = nKeyCode
ENDPROC
ENDDEFINE
*

Кликаем по второму текстбоксу или же уходим из первого клавой - смотрим в лейбле код возврата из первого.
Для удобства конечно же стоит на основе такого просто визуальный класс текстбокса написать с возвращаемым каким-то его свойством, им и пользоваться, где надо.

[sm128]


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Кстати, еще нужно снова обнулять это свойство при возврате фокуса в текстбокс:
PROCEDURE text1.GotFocus
this.nKeyCode = 0

Чтобы в следующий раз срабатывало с уходом мышкой.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Crispy
Да потому что действительно же - возврат в FPD какой-то.

У нас все пишут не на VFP или FPD, а на FrameWork'е RD.
RD - Runtime Designer и он базируется на VFP 9.0 SP2.

Все программирование происходит на запущенном Pamak.Exe (RD), кот. работает на все проекты.
Вся бизнес-логика отдельно. 3-х слойка.
В нем средства разработки и отладки.

Под VFP работаю только я. У других, обычно, VFP не уставлен.
На Девконах я показывал это все. Тут рассказывать нет смысла.
Modi Form никто не пользуется. И никому это не мешает.
Формы генерируются.



Исправлено 1 раз(а). Последнее : Ydin, 27.05.20 12:13
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Ydin
Все программирование происходит на запущенном Pamak.Exe

Как все запущенно.

Ydin
Modi Form никто не пользуется. И никому это не мешает.
Формы генерируются.

Ну дык, то, что я выше показал, можно без проблем точно так же и генерировать.
В любом случае Lastkey() - сегодня уже моветон как бы.
Уж при наличии в природе KeyPress() хотя бы.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Crispy
В любом случае Lastkey() - сегодня уже моветон как бы.
Уж при наличии в природе KeyPress() хотя бы.

Да ладно ...
От этого Lastkey() Таран с Симплой вон как возбудились (кстати, верный признак того что мужики обходятся без баб).
KeyPress ТС категорически отверг, как неприемлемый второй вариант в пользу третьего варианта.



Исправлено 1 раз(а). Последнее : lulgu, 27.05.20 14:58
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Taran
Chemberzhy
И ладно Я лет шесть назад последний раз Фокс запускал, хоть память поднапряг, полезно.

Жулик он и есть жулик.
Так и не сознается откуда фишку выхватил.
То лист фольги продаст, как крыло медного самолёта.
Жучара. Коснись в Измаил поеду, придётся штаны карманами внутрь надевать чтоб не обчистил с любовью.

Зря Вы так, дяденька, чистейший самиздат



------------------
Что-то с памятью моей стало, всё что было не со мной- помню.
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Crispy
Ydin
Все программирование происходит на запущенном Pamak.Exe

Как все запущенно.

Ydin
Modi Form никто не пользуется. И никому это не мешает.
Формы генерируются.

Ну дык, то, что я выше показал, можно без проблем точно так же и генерировать.
В любом случае Lastkey() - сегодня уже моветон как бы.
Уж при наличии в природе KeyPress() хотя бы.

Да не ловит KeyPress() мышку, чё ты завелся то?


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Simple777
По средней и правой клавише из WAIT вообще не выходит.

В 2.6, насколько я помню, ему надо в SET-ах рассказать, что мышка может более одной кнопки иметь.


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
Chemberzhy
Да не ловит KeyPress() мышку, чё ты завелся то?

Мышку ловить и не надо - достаточно ловить все кнопки выхода, а в Lostfocus() проверять, нажимали ли такую кнопку. Если нет, то, как я писал выше - OTHERWISE = мышь.
Идея Криспы нормальная и аналогична моей, надо только инициализировать свойство-код не в Init поля, а каждый раз при заходе в него.

Но можно и проще:
Добавляем на форму свойство-флаг, который сбрасывается в Gotfocus() и выставляется в Keypress() по нажатию одной из кнопок выхода.
А дальше в Lostfocus() анализируем этот флаг.




Исправлено 2 раз(а). Последнее : akvvohinc, 27.05.20 20:10
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Так придется по всем объектам писать костыли, а я предложил на форме один раз написать


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Crispy
Ydin
Все программирование происходит на запущенном Pamak.Exe

Как все запущенно.
Это на игре слов! У меня тут - на выполняемом Pamak.Exe.



Исправлено 3 раз(а). Последнее : Ydin, 27.05.20 20:27
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Crispy
Modi Form никто не пользуется. И никому это не мешает.
Формы генерируются.

Ну дык, то, что я выше показал, можно без проблем точно так же и генерировать.
В любом случае Lastkey() - сегодня уже моветон как бы.
Уж при наличии в природе KeyPress() хотя бы

Вообще не въехал о чем это!
Я про Lastkey() и KeyPress() не спрашивал вообще



Исправлено 4 раз(а). Последнее : Ydin, 27.05.20 20:35
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Когда по объектам мышкой - поймай на событии LastKey() для мышки...
И вообще, зачем мне отвечать, когда чувак не въехал и его несет мимо темы.
Это я про Криспу.
Более грубое я удалил. Но жаль...



Исправлено 2 раз(а). Последнее : Ydin, 27.05.20 20:53
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Криспа теперь может запить... с горя... :rux:
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Александр, а что за видеоэффекты необходимы, для отлавливания разницы схода с поля мышкой или клавишей ? Мышкой можно и из окна соскочить, а потом заскочить на него в другом поле окна... Или Alt-Tab сойти с окна, а зайти мышкой... В этом есть какая-то необходимость?
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Ydin
Автор

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
уже нет
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
akvvohinc

Сообщений: 4218
Откуда: Москва
Дата регистрации: 11.11.2008
Chemberzhy
Так придется по всем объектам писать костыли, а я предложил на форме один раз написать
"Костыли", а точнее - необходимый функционал, пишется не "по всем объектам", в 1 раз в классах этих объектов.
В моем примере -это класс формы и класс текстбокса.
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Chemberzhy
Да не ловит KeyPress() мышку, чё ты завелся то?

Ты вообще сам код-то самотре??!! ;)
Кто-то вообще говорил, что KeyPress должен ловить мышь??
Ты бы хоть просто поразмылял бы, прежде чем. [sm128]
Ну ладно, поясню для особо ленивых шевелить извлинами. ;)
Если выйти из контрола можно только двумя способами:
1) путем клика мышой по другому контролу,
2) движениями через клаву.
То:
при потере фокуса - ловим через KeyPress нажатия клавы.
Если поймали - как бы уже козе понятно.
Если же не поймали, а фокус все равно потерян - что из этого следует?
Правильно.
Что потерян он путем клика. В смысле был произведен выход из него мышой. \m/

Ну и что тут нее так. :-p

Кстати, если бы не поленился и просто опробовал код (блин 2 минуты всего ленивых движений!), убедился бы, что оно таки работает, а не писал тут понимаешь всякое. \m/


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Как узнать, что последним была мышка или клавиатура?
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Можно в принципе и вариант, который akvvohinc предолжил.
Главное суть как бы.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 28.05.20 07:33
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 27 Владимир Максимов vnkor AndyNigmatec  (Гостей: 24)

© 2000-2024 Fox Club 
Яндекс.Метрика