Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 1
  • 1
Модератор форума: Peter, DEMBEL, YURIY  
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Все события мыши для любых обьектов (Нажатие/отпускание/прокручивание)
Все события мыши для любых обьектов
anton68Дата: Пт, 04 Марта 2011, 17:34 | Сообщение # 1
Любопытный
Такая вот передо мной задача. Как реализовать в необок следующее: если кнопка нажата то происходит одно действие а если не нажата то другое. То есть нажал кнопку выполнился первый код, отпустил кнопку второй код, нажал снова опять выполнился первый код, отпустил, снова второй........

IfEx "кнопка нажата"
....что то происходит....
Else
....что то другое происходит
EndIf

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

IfEx "кнопка нажата"
....что то происходит....
Else
....что то другое происходит
EndIf


Автор - anton68
Дата добавления - 04 Марта 2011 в 17:34
mishemДата: Пт, 04 Марта 2011, 17:43 | Сообщение # 2
Эксперт форума
Ну почему мы поиском не хотим пользоваться? Читай тут. Вот когда уже не найдешь что нужно, тогда пиши. :) Помню этот вопрос обсуждался, И НЕ ОДИН РАЗ. Так что тем несколько должно быть.
И не надо жирным выделять , и так все понятно. :D


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеНу почему мы поиском не хотим пользоваться? Читай тут. Вот когда уже не найдешь что нужно, тогда пиши. :) Помню этот вопрос обсуждался, И НЕ ОДИН РАЗ. Так что тем несколько должно быть.
И не надо жирным выделять , и так все понятно. :D

Автор - mishem
Дата добавления - 04 Марта 2011 в 17:43
anton68Дата: Пт, 04 Марта 2011, 18:15 | Сообщение # 3
Любопытный
Я читал я там все и не раз, не одного решения нормального не кто не предложил и в плагине про который там говорили подобной функции нет... Вот думал по прошествии времени что новенькое появилось, чтоб кто нибудь что посоветовал...
 
СообщениеЯ читал я там все и не раз, не одного решения нормального не кто не предложил и в плагине про который там говорили подобной функции нет... Вот думал по прошествии времени что новенькое появилось, чтоб кто нибудь что посоветовал...

Автор - anton68
Дата добавления - 04 Марта 2011 в 18:15
DEMBELДата: Пт, 04 Марта 2011, 18:38 | Сообщение # 4
Наш дизайнер
Quote (anton68)
подобной функции нет...

да давно есть, просто не в явном виде :)

любые состояния клавиш мыши (наведение/отведение, нажатие/отпускание, прокручивание) обрабатываются в мониторе мыши плагина, и эти события доступны для всех обьектов. Достаточно определить хэндл (универсальный идентификатор обьекта) и указать процедуры с кодом, выполняющимся при нужных состояниях кнопок мыши для этого обьекта.

ваш пример, мониторинг отпускания левой кнопки мыши (LBU) для кнопки PushButton92:

.Активация монитора мыши (при старте проекта или где-то еще...)
zmSetMouseMonitor "Local" "PB92_MouseActions" "True"
zmConfigMouseMonitor "GetInfo" "True"
zmConfigMouseMonitor "PlayAction" "True"
.Получение хэндла нужной кнопки
GetObjectHandle "PushButton92" "[Button92_Handle]"

Теперь создаем процедуру PB92_MouseActions, где обрабатываем состояние LBU:

:PB92_MouseActions
.Если полученный хэндл кнопки совпадает с хэндлом обьекта под мышкой, значит она
.находится на нужной нам кнопке PushButton92

If "[Button92_Handle]" "=" "[zmMouseWindowHandle]"
.Если состояние кнопки LBU, то выводим сообщение
If "[zmMouseCode]" "=" "zmLBU"
AlertBox "Кнопка PushButton92" "Левая кнопка отпущена"
EndIf
endif
Return

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

Это может показаться сложным, но это универсальный механизм работы с обьектами, увязанный на их идентификаторах, с их помощью можно контролировать события любого обьекта. А можно и не проверять хэндл, тогда события будут глобальными для всего проекта, а в режиме монитора мыши "Global" и для всей системы (на win7 плохо работает пока...)


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщение
Quote (anton68)
подобной функции нет...

да давно есть, просто не в явном виде :)

любые состояния клавиш мыши (наведение/отведение, нажатие/отпускание, прокручивание) обрабатываются в мониторе мыши плагина, и эти события доступны для всех обьектов. Достаточно определить хэндл (универсальный идентификатор обьекта) и указать процедуры с кодом, выполняющимся при нужных состояниях кнопок мыши для этого обьекта.

ваш пример, мониторинг отпускания левой кнопки мыши (LBU) для кнопки PushButton92:

.Активация монитора мыши (при старте проекта или где-то еще...)
zmSetMouseMonitor "Local" "PB92_MouseActions" "True"
zmConfigMouseMonitor "GetInfo" "True"
zmConfigMouseMonitor "PlayAction" "True"
.Получение хэндла нужной кнопки
GetObjectHandle "PushButton92" "[Button92_Handle]"

Теперь создаем процедуру PB92_MouseActions, где обрабатываем состояние LBU:

:PB92_MouseActions
.Если полученный хэндл кнопки совпадает с хэндлом обьекта под мышкой, значит она
.находится на нужной нам кнопке PushButton92

If "[Button92_Handle]" "=" "[zmMouseWindowHandle]"
.Если состояние кнопки LBU, то выводим сообщение
If "[zmMouseCode]" "=" "zmLBU"
AlertBox "Кнопка PushButton92" "Левая кнопка отпущена"
EndIf
endif
Return

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

Это может показаться сложным, но это универсальный механизм работы с обьектами, увязанный на их идентификаторах, с их помощью можно контролировать события любого обьекта. А можно и не проверять хэндл, тогда события будут глобальными для всего проекта, а в режиме монитора мыши "Global" и для всей системы (на win7 плохо работает пока...)


Автор - DEMBEL
Дата добавления - 04 Марта 2011 в 18:38
PeterДата: Пт, 04 Марта 2011, 18:45 | Сообщение # 5
Админ NeoBook
Quote (anton68)
Я читал я там все и не раз,

Плохо, значит, читали!
anton68, в NeoBook нет событий для нажатого состояния кнопки, но вашу задачу можно решить с помощью указанного выше плагина.

См. в прикреплении самое простое решение, и не единственное.
Ну, а дальше, надеюсь, сами сможете написАть код под свои нужды.

Прикрепления: Button.zip (2.0 Kb)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (anton68)
Я читал я там все и не раз,

Плохо, значит, читали!
anton68, в NeoBook нет событий для нажатого состояния кнопки, но вашу задачу можно решить с помощью указанного выше плагина.

См. в прикреплении самое простое решение, и не единственное.
Ну, а дальше, надеюсь, сами сможете написАть код под свои нужды.


Автор - Peter
Дата добавления - 04 Марта 2011 в 18:45
DEMBELДата: Пт, 04 Марта 2011, 18:50 | Сообщение # 6
Наш дизайнер
то есть, наоборот, в моем примере нужно мониторить нажатие кнопки, а не отпускание. Отпускание выполняется в самой кнопке, попутал...

Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщението есть, наоборот, в моем примере нужно мониторить нажатие кнопки, а не отпускание. Отпускание выполняется в самой кнопке, попутал...

Автор - DEMBEL
Дата добавления - 04 Марта 2011 в 18:50
anton68Дата: Пт, 04 Марта 2011, 19:29 | Сообщение # 7
Любопытный
Спасибо DEMBEL, Peter, буду пытаться щас сделать чтонть.... Хотя меня интересует вариант срабатывание какого либо действия от нажатия или отпускания кнопки на клавиатуре. Думал реализовать через кнопку задав на нее горячую клавишу... Но кнопка пр удержани клавиши на клавиатуре работает словно ее каждую секунду нажимают и отпускают это кстати я понял по примеру Peter, А нет ни какого плагина посредством которого можно задать определенное действие именно на кнопки клавиатуры....?

Добавлено (04 Март 2011, 19:29)
---------------------------------------------
Я просто решил написать игрушку что то вроде аналога русской рыбалки. Сделал заброс поплавка, поклевку, подсечку, движение попловка после подсечки, теперь необходимо реализовать вытаскивание рыбы. Для чего мне и требуется обработка действия при отпущенной кнопки на клаве. То есть пока нажата кнопка поплавок притягивается к берегу а при отпущенной опять плывет в даль пруда...

 
СообщениеСпасибо DEMBEL, Peter, буду пытаться щас сделать чтонть.... Хотя меня интересует вариант срабатывание какого либо действия от нажатия или отпускания кнопки на клавиатуре. Думал реализовать через кнопку задав на нее горячую клавишу... Но кнопка пр удержани клавиши на клавиатуре работает словно ее каждую секунду нажимают и отпускают это кстати я понял по примеру Peter, А нет ни какого плагина посредством которого можно задать определенное действие именно на кнопки клавиатуры....?

Добавлено (04 Март 2011, 19:29)
---------------------------------------------
Я просто решил написать игрушку что то вроде аналога русской рыбалки. Сделал заброс поплавка, поклевку, подсечку, движение попловка после подсечки, теперь необходимо реализовать вытаскивание рыбы. Для чего мне и требуется обработка действия при отпущенной кнопки на клаве. То есть пока нажата кнопка поплавок притягивается к берегу а при отпущенной опять плывет в даль пруда...


Автор - anton68
Дата добавления - 04 Марта 2011 в 19:29
DEMBELДата: Пт, 04 Марта 2011, 19:36 | Сообщение # 8
Наш дизайнер
делали что-то такое, но не в таком виде как вам нужно. вам лучше Peter прояснит, когда он делал плаг его просили сделать монитор и для клавиатуры (аналогично мыши), это возможно, но это чревато изготовлением кейлоггеров и проблемами с антивирусным ПО, как для вашего приложения, так и для необук в целом (достаточно раз засветиться в базах а/в благодаря какому-то малолетнему идиоту сделавшему кейлоггер, сигнатуры neobook потом будут гулять везде...). Думаю это не будет реализовано, то что вы хотите выходит за разумные рамки необходимости. Есть бесплатный плаг, что там есть это максимум для клавиатуры.
Quote (anton68)
пр удержани клавиши на клавиатуре работает словно ее каждую секунду нажимают и отпускают

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


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениеделали что-то такое, но не в таком виде как вам нужно. вам лучше Peter прояснит, когда он делал плаг его просили сделать монитор и для клавиатуры (аналогично мыши), это возможно, но это чревато изготовлением кейлоггеров и проблемами с антивирусным ПО, как для вашего приложения, так и для необук в целом (достаточно раз засветиться в базах а/в благодаря какому-то малолетнему идиоту сделавшему кейлоггер, сигнатуры neobook потом будут гулять везде...). Думаю это не будет реализовано, то что вы хотите выходит за разумные рамки необходимости. Есть бесплатный плаг, что там есть это максимум для клавиатуры.
Quote (anton68)
пр удержани клавиши на клавиатуре работает словно ее каждую секунду нажимают и отпускают

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

Автор - DEMBEL
Дата добавления - 04 Марта 2011 в 19:36
anton68Дата: Пт, 04 Марта 2011, 19:43 | Сообщение # 9
Любопытный
Кстати движение поплавка задал следующим кодом, посмотрите может есть более грамотный вариант:

Code
.получаю место расположение поплавка
GetObjectInfo "float_1" "Left" "[popX]"
GetObjectInfo "float_1" "Top" "[popY]"
.задаю цикл для движения поплавка
Loop "1" "100000" "[cikl]"
:ranXY
.определяю случайные числа для координат движения
Random "990" "[ranX]"
Random "550" "[ranY]"
. так как вода на картинке имеет неровный вид высчитываю координаты движения по оси X  для сравнения потом с координатами по оси Y чтобы поплавок не уплыл за пределы воды на землю
Math "[ranX]/1,3" "0" "[ranX1]"
.если полученные случайные числа находиться в пределах воды
IfEx "[ranX]>25 and [ranX]<990 and [ranY]>260 and [r.anY]<550 and [ranX1]>[ranY]"
.выполняю движения поплавка по заданным координатам
MoveObjectAlongPath "float_1" "[ranX],[ranY]" "50" "Wait+Center" ""
.если случайные числа находятся за пределами воды    
Else
.формирую случайные числа снова
GotoLine ":ranXY"
EndIf
.повторяю цикл
EndLoop

Вроде бы код работает но что то меня в нем смущает, наверно то что я пока не знаю как мне его связать с кодом вываживания рыбы на берег, потому что не знаю как реализовать действие на нажатую и отжатую кнопку клавиатуры, и еще наверно то что поплавок движется по всему пруду а рыба должна все таки наверно уплывать от берега к противоположному а не *** во все стороны.. :)

Кто что посоветует?

[Нарушение правил п.II-2]: не надо так откровенно это делать //DEMBEL

Сообщение отредактировано
DEMBEL - Пт, 04 Марта 2011, 19:53
 
СообщениеКстати движение поплавка задал следующим кодом, посмотрите может есть более грамотный вариант:

Code
.получаю место расположение поплавка
GetObjectInfo "float_1" "Left" "[popX]"
GetObjectInfo "float_1" "Top" "[popY]"
.задаю цикл для движения поплавка
Loop "1" "100000" "[cikl]"
:ranXY
.определяю случайные числа для координат движения
Random "990" "[ranX]"
Random "550" "[ranY]"
. так как вода на картинке имеет неровный вид высчитываю координаты движения по оси X  для сравнения потом с координатами по оси Y чтобы поплавок не уплыл за пределы воды на землю
Math "[ranX]/1,3" "0" "[ranX1]"
.если полученные случайные числа находиться в пределах воды
IfEx "[ranX]>25 and [ranX]<990 and [ranY]>260 and [r.anY]<550 and [ranX1]>[ranY]"
.выполняю движения поплавка по заданным координатам
MoveObjectAlongPath "float_1" "[ranX],[ranY]" "50" "Wait+Center" ""
.если случайные числа находятся за пределами воды    
Else
.формирую случайные числа снова
GotoLine ":ranXY"
EndIf
.повторяю цикл
EndLoop

Вроде бы код работает но что то меня в нем смущает, наверно то что я пока не знаю как мне его связать с кодом вываживания рыбы на берег, потому что не знаю как реализовать действие на нажатую и отжатую кнопку клавиатуры, и еще наверно то что поплавок движется по всему пруду а рыба должна все таки наверно уплывать от берега к противоположному а не *** во все стороны.. :)

Кто что посоветует?

[Нарушение правил п.II-2]: не надо так откровенно это делать //DEMBEL


Автор - anton68
Дата добавления - 04 Марта 2011 в 19:43
DEMBELДата: Пт, 04 Марта 2011, 19:55 | Сообщение # 10
Наш дизайнер
не думали связать процесс вываживания не с клавой а мышью?

Добавлено (04 Март 2011, 19:55)
---------------------------------------------
по моему, мышью будет логичнее... и инструменты для этого есть.


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениене думали связать процесс вываживания не с клавой а мышью?

Добавлено (04 Март 2011, 19:55)
---------------------------------------------
по моему, мышью будет логичнее... и инструменты для этого есть.


Автор - DEMBEL
Дата добавления - 04 Марта 2011 в 19:55
mishemДата: Пт, 04 Марта 2011, 19:55 | Сообщение # 11
Эксперт форума
Как раз про нажатие и отпускание кнопки в той теме что я указал, есть решение.

Code
Math "[Кнопка]+1" "0" "[Кнопка]"
If "[Кнопка]" "=" "1"
GoSub "Vvod_Texta"
Math "[Кнопка]-1" "0" "[Кнопка]"
Else
Math "[Кнопка]-1" "0" "[Кнопка]"
EndIf

Этот код работает при нажатиии кнопки. Vvod_Text это то действие которое должно происходить когда вы нажимаете и удерживаете кнопку. Или Math "[Кнопка]-1" "0" "[Кнопка]", после этого ввести подпрограмму, и она сработает когда кнопка будет отпущена.

Читать надо внимательно. Там кстати есть еще один пример, на котором было принято у меня это решение.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеКак раз про нажатие и отпускание кнопки в той теме что я указал, есть решение.

Code
Math "[Кнопка]+1" "0" "[Кнопка]"
If "[Кнопка]" "=" "1"
GoSub "Vvod_Texta"
Math "[Кнопка]-1" "0" "[Кнопка]"
Else
Math "[Кнопка]-1" "0" "[Кнопка]"
EndIf

Этот код работает при нажатиии кнопки. Vvod_Text это то действие которое должно происходить когда вы нажимаете и удерживаете кнопку. Или Math "[Кнопка]-1" "0" "[Кнопка]", после этого ввести подпрограмму, и она сработает когда кнопка будет отпущена.

Читать надо внимательно. Там кстати есть еще один пример, на котором было принято у меня это решение.


Автор - mishem
Дата добавления - 04 Марта 2011 в 19:55
anton68Дата: Пт, 04 Марта 2011, 20:05 | Сообщение # 12
Любопытный
Извините за небольшую нецензурщину... эмоци...

Спасибо mishem, но я всетаки последую совету DEMBEL, и увяжу код на нажатие правой кнопки мыши. Для меня это будит самый оптимальный вариант. Огромное спасибо за идею DEMBEL,

А по поводу кода движения поплавка нет не каких пожеланий мне?

 
СообщениеИзвините за небольшую нецензурщину... эмоци...

Спасибо mishem, но я всетаки последую совету DEMBEL, и увяжу код на нажатие правой кнопки мыши. Для меня это будит самый оптимальный вариант. Огромное спасибо за идею DEMBEL,

А по поводу кода движения поплавка нет не каких пожеланий мне?


Автор - anton68
Дата добавления - 04 Марта 2011 в 20:05
mishemДата: Пт, 04 Марта 2011, 20:10 | Сообщение # 13
Эксперт форума
Quote (anton68)
и увяжу код на нажатие правой кнопки мыши.

Ну это решение принималось когда еще не было плагина.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (anton68)
и увяжу код на нажатие правой кнопки мыши.

Ну это решение принималось когда еще не было плагина.

Автор - mishem
Дата добавления - 04 Марта 2011 в 20:10
DEMBELДата: Пт, 04 Марта 2011, 21:07 | Сообщение # 14
Наш дизайнер
Quote (anton68)
А по поводу кода движения поплавка нет не каких пожеланий мне?

ну... может и есть, сам код написан правильно, а насчет его логики неизвестно как там у вас что работает, исходника нет... конечно, цикл на 100000 оборотов смущает, обычно то что вы хотели делается иначе, может тогда вам поможет While/WhileEx ? Почему именно 100000, может вы хотели увязать цикл с каким-то событием? Если да, то есть while, если нет, то такое событие можно организовать... циклы на тысячу, миллион это непродуктивная глупость, есть другие инструменты - внимательно изучите логику команд While/WhileEx и обьекта Timer (таймер), возможно они вам помогут.


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщение
Quote (anton68)
А по поводу кода движения поплавка нет не каких пожеланий мне?

ну... может и есть, сам код написан правильно, а насчет его логики неизвестно как там у вас что работает, исходника нет... конечно, цикл на 100000 оборотов смущает, обычно то что вы хотели делается иначе, может тогда вам поможет While/WhileEx ? Почему именно 100000, может вы хотели увязать цикл с каким-то событием? Если да, то есть while, если нет, то такое событие можно организовать... циклы на тысячу, миллион это непродуктивная глупость, есть другие инструменты - внимательно изучите логику команд While/WhileEx и обьекта Timer (таймер), возможно они вам помогут.

Автор - DEMBEL
Дата добавления - 04 Марта 2011 в 21:07
ВадимДата: Пт, 04 Марта 2011, 22:09 | Сообщение # 15
Генератор идей


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)

Сообщение отредактировано
Вадим - Пт, 04 Марта 2011, 22:36
 
Сообщение

Автор - Вадим
Дата добавления - 04 Марта 2011 в 22:09
DEMBELДата: Пт, 04 Марта 2011, 22:42 | Сообщение # 16
Наш дизайнер


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщение

Автор - DEMBEL
Дата добавления - 04 Марта 2011 в 22:42
ВадимДата: Пт, 04 Марта 2011, 22:46 | Сообщение # 17
Генератор идей


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
Сообщение

Автор - Вадим
Дата добавления - 04 Марта 2011 в 22:46
DEMBELДата: Пт, 04 Марта 2011, 22:56 | Сообщение # 18
Наш дизайнер


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщение

Автор - DEMBEL
Дата добавления - 04 Марта 2011 в 22:56
ВадимДата: Пт, 04 Марта 2011, 23:13 | Сообщение # 19
Генератор идей


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
Сообщение

Автор - Вадим
Дата добавления - 04 Марта 2011 в 23:13
DEMBELДата: Пт, 04 Марта 2011, 23:32 | Сообщение # 20
Наш дизайнер


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщение

Автор - DEMBEL
Дата добавления - 04 Марта 2011 в 23:32
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Все события мыши для любых обьектов (Нажатие/отпускание/прокручивание)
  • Страница 1 из 1
  • 1
Поиск: