Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: Peter, DEMBEL, YURIY  
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Назначить действие по 2 щелчку левой кнопкой мыши (Как определить, что по рисунку щелкнули 2 раза левой кнопкой)
Назначить действие по 2 щелчку левой кнопкой мыши
Format-X22Дата: Вс, 04 Сентября 2011, 20:13 | Сообщение # 61
Участник
Quote (mishem)
За 30, 40, 100, 150. Не? Не выходит?
Тогда зачем такой интервал?

А затем, чтобы можно было нажать за 160 и не ждать лишние 140мс.
Ведь в моем варианте выходит что максимальная задержка после двойного клика равна 10мс, а в ваших всё-равно до 300мс ждать нужно. В этом то и весь прикол. Да, в случае одинарного нажатия мы ждем время проверки, но при двойном клике задержки практически не имеем. А можно ещё и тройной и четверной и даже десятерной клик сделать, если это конечно кому-нибудь когда-нибудь будет нужно. Таймеры зло, однако в данном случае он лечит ожидания.

Добавлено (04 Сентябрь 2011, 20:13)
---------------------------------------------
Ну плагин 100% будет лучше, однако пока пользуемся средствами NB.


Мой сайт - http://фирмы.онлайн
 
Сообщение
Quote (mishem)
За 30, 40, 100, 150. Не? Не выходит?
Тогда зачем такой интервал?

А затем, чтобы можно было нажать за 160 и не ждать лишние 140мс.
Ведь в моем варианте выходит что максимальная задержка после двойного клика равна 10мс, а в ваших всё-равно до 300мс ждать нужно. В этом то и весь прикол. Да, в случае одинарного нажатия мы ждем время проверки, но при двойном клике задержки практически не имеем. А можно ещё и тройной и четверной и даже десятерной клик сделать, если это конечно кому-нибудь когда-нибудь будет нужно. Таймеры зло, однако в данном случае он лечит ожидания.

Добавлено (04 Сентябрь 2011, 20:13)
---------------------------------------------
Ну плагин 100% будет лучше, однако пока пользуемся средствами NB.


Автор - Format-X22
Дата добавления - 04 Сентября 2011 в 20:13
mishemДата: Вс, 04 Сентября 2011, 22:15 | Сообщение # 62
Эксперт форума
Ну вот еще вариант с таймером.
Более тщательно проверять нет времени, ехать надо. Кому интересно, попробуйте.
Суть такова. При первом клике обычно команда идет на выделение объекта. По этому код должен быть не большой(имхо).
Переменная [klik1] как раз это отображает, что первый клик сработал. При дубле выскакивает сообщение. Оказывается клик мыши обрывает и таймер. ;)
Прикрепления: 0078966.zip(1.8 Kb)


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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеНу вот еще вариант с таймером.
Более тщательно проверять нет времени, ехать надо. Кому интересно, попробуйте.
Суть такова. При первом клике обычно команда идет на выделение объекта. По этому код должен быть не большой(имхо).
Переменная [klik1] как раз это отображает, что первый клик сработал. При дубле выскакивает сообщение. Оказывается клик мыши обрывает и таймер. ;)

Автор - mishem
Дата добавления - 04 Сентября 2011 в 22:15
ВадимДата: Вс, 04 Сентября 2011, 22:29 | Сообщение # 63
Генератор идей
Quote (mishem)
Ну вот еще вариант с таймером.

Усе работает исправно!


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

Усе работает исправно!

Автор - Вадим
Дата добавления - 04 Сентября 2011 в 22:29
ГарикДата: Вс, 04 Сентября 2011, 22:59 | Сообщение # 64
Quote (Вадим)
Усе работает исправно!

Вадим, сделай следующее:
нажми LBD-->LBU-->LBD допустим на папке в проводнике,папка откроется
теперь сделай тоже самое на объекте,откроется или нет(алерт вылезет)?


Сообщение отредактировано
Гарик - Вс, 04 Сентября 2011, 23:05
 
Сообщение
Quote (Вадим)
Усе работает исправно!

Вадим, сделай следующее:
нажми LBD-->LBU-->LBD допустим на папке в проводнике,папка откроется
теперь сделай тоже самое на объекте,откроется или нет(алерт вылезет)?

Автор - Гарик
Дата добавления - 04 Сентября 2011 в 22:59
ВадимДата: Пн, 05 Сентября 2011, 00:11 | Сообщение # 65
Генератор идей
Quote (Гарик)
теперь сделай тоже самое на объекте,откроется или нет(алерт вылезет)?

Нет, алерт в этом случае не вылезет. Но это уже нюансы. Если так тонко подходить, то можно воспользоваться монитором мыши из zmFunctions и сделать в точности как системный двойной клик. Честно говоря, я не представляю даже, где может понадобиться это различие:
LBD-->LBU-->LBD применяется или LBD-->LBU-->LBD-->LBU...


Бесплатный онлайн курс программирования в NeoBook \ VisualNEO Win
 
Сообщение
Quote (Гарик)
теперь сделай тоже самое на объекте,откроется или нет(алерт вылезет)?

Нет, алерт в этом случае не вылезет. Но это уже нюансы. Если так тонко подходить, то можно воспользоваться монитором мыши из zmFunctions и сделать в точности как системный двойной клик. Честно говоря, я не представляю даже, где может понадобиться это различие:
LBD-->LBU-->LBD применяется или LBD-->LBU-->LBD-->LBU...

Автор - Вадим
Дата добавления - 05 Сентября 2011 в 00:11
ГарикДата: Пн, 05 Сентября 2011, 03:05 | Сообщение # 66
Quote (Вадим)
Честно говоря, я не представляю даже, где может понадобиться это различие:
LBD-->LBU-->LBD применяется или LBD-->LBU-->LBD-->LBU...

Да в принципе нигде.
Это так :
Quote (Вадим)
нюансы

небольшая неполноценность.
:)
 
Сообщение
Quote (Вадим)
Честно говоря, я не представляю даже, где может понадобиться это различие:
LBD-->LBU-->LBD применяется или LBD-->LBU-->LBD-->LBU...

Да в принципе нигде.
Это так :
Quote (Вадим)
нюансы

небольшая неполноценность.
:)

Автор - Гарик
Дата добавления - 05 Сентября 2011 в 03:05
AlienДата: Пн, 05 Сентября 2011, 04:19 | Сообщение # 67
mishem, у меня первый клик не срабатывает или там ничего не должно выводиться?
 
Сообщениеmishem, у меня первый клик не срабатывает или там ничего не должно выводиться?

Автор - Alien
Дата добавления - 05 Сентября 2011 в 04:19
mishemДата: Пн, 05 Сентября 2011, 22:04 | Сообщение # 68
Эксперт форума
Alien, в отладчике смотри. В переменной [klik1] будет текст. Алерт просто нельзя вешать,таймер уже отработает пока его закрывать будешь.
Задержка есть?
Мне эта мысль пришла прям перед отъездом в Москву(из нее и пишу сейчас :) ), по этому особо не было времени на проверку. Всю дорогу думал, зачем интервал таймера сделал 100? Так ответ пока и не нашел. :D

Добавлено (05 Сентябрь 2011, 22:04)
---------------------------------------------

Quote (Гарик)
нажми LBD-->LBU-->LBD допустим на папке в проводнике,папка откроется

У меня не открывается.
Quote (Гарик)
небольшая неполноценность

Гарик, поставь в коде

If "[Timer1]" "<" "500"
TimerStart "Timer1" "100"
EndIf

вместо 500, 5000. И все будет открываться. :)
Ну 5000 я загнул, если есть желание, поэкспериментируй при каком значении будет открываться. ;)
Quote (mishem)
Так ответ пока и не нашел.

Приехал домой, и ответ сам по себе нашелся. Получается что чем больше значение, тем дольше задержка. Если поставить 500, то вообще не сработает.


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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеAlien, в отладчике смотри. В переменной [klik1] будет текст. Алерт просто нельзя вешать,таймер уже отработает пока его закрывать будешь.
Задержка есть?
Мне эта мысль пришла прям перед отъездом в Москву(из нее и пишу сейчас :) ), по этому особо не было времени на проверку. Всю дорогу думал, зачем интервал таймера сделал 100? Так ответ пока и не нашел. :D

Добавлено (05 Сентябрь 2011, 22:04)
---------------------------------------------

Quote (Гарик)
нажми LBD-->LBU-->LBD допустим на папке в проводнике,папка откроется

У меня не открывается.
Quote (Гарик)
небольшая неполноценность

Гарик, поставь в коде

If "[Timer1]" "<" "500"
TimerStart "Timer1" "100"
EndIf

вместо 500, 5000. И все будет открываться. :)
Ну 5000 я загнул, если есть желание, поэкспериментируй при каком значении будет открываться. ;)
Quote (mishem)
Так ответ пока и не нашел.

Приехал домой, и ответ сам по себе нашелся. Получается что чем больше значение, тем дольше задержка. Если поставить 500, то вообще не сработает.

Автор - mishem
Дата добавления - 05 Сентября 2011 в 22:04
PeterДата: Вт, 06 Сентября 2011, 00:59 | Сообщение # 69
Админ NeoBook
Граждане, миленькие!
Объясните мне, тупому, что же именно вы стремитесь получить: просто "двойной клик" для тех объектов, у которых "простой клик" уже имеется, или и то и другое вместе?



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

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

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


При модном втюхе модоподдающимся начинает нравиться
 
СообщениеГраждане, миленькие!
Объясните мне, тупому, что же именно вы стремитесь получить: просто "двойной клик" для тех объектов, у которых "простой клик" уже имеется, или и то и другое вместе?


Автор - Peter
Дата добавления - 06 Сентября 2011 в 00:59
ВадимДата: Вт, 06 Сентября 2011, 01:03 | Сообщение # 70
Генератор идей
Quote (Peter)
просто "двойной клик" для тех объектов, у которых "простой клик" уже имеется, или и то и другое вместе?

Нужно всё. И одинарный и двойной клик по любому объекту! :)



Бесплатный онлайн курс программирования в NeoBook \ VisualNEO Win
 
Сообщение
Quote (Peter)
просто "двойной клик" для тех объектов, у которых "простой клик" уже имеется, или и то и другое вместе?

Нужно всё. И одинарный и двойной клик по любому объекту! :)


Автор - Вадим
Дата добавления - 06 Сентября 2011 в 01:03
PeterДата: Вт, 06 Сентября 2011, 01:19 | Сообщение # 71
Админ NeoBook
Quote (Вадим)
И одинарный и двойной клик по любому объекту!

Так не бывает!!!
Тут "или" "или".
Сам подумай!
;)
Да ещё и "по любому объекту".
Однако, батенька, вам с вашими запросами не NeoBook надобно осваивать, а, например, Delphi или С++
:D


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

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

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


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Вадим)
И одинарный и двойной клик по любому объекту!

Так не бывает!!!
Тут "или" "или".
Сам подумай!
;)
Да ещё и "по любому объекту".
Однако, батенька, вам с вашими запросами не NeoBook надобно осваивать, а, например, Delphi или С++
:D

Автор - Peter
Дата добавления - 06 Сентября 2011 в 01:19
ВадимДата: Вт, 06 Сентября 2011, 01:30 | Сообщение # 72
Генератор идей
Quote (Peter)
Так не бывает!!!

Ну почему? Если сделать отлов события мыши и устанавливать над каким объектом был курсор во время события мыши. Т.е. нужно задать событие, которое будем мониторить и ждать имя объекта в переменную.

Тогда монитор двойного клика выглядел бы так (где-то я уже подобное фантазировал):

MonitorMouseEvent "LeftDoubleClick" "[NameObject]" "Subroutine1"

а одинарного так:

MonitorMouseEvent "LeftOneClick" "[NameObject]" "Subroutine2"

Такое возможно? В твоем мониторе мыши ведь есть возможность даже по косточкам события разбирать - LBD, LBU и т.д. В принципе, к имеющемуся монитору осталось только добавить возможность узнать - над каким объектом данное событие случилось и можно строить хоть одинарные, хоть двойные, и даже полуторные клики.Или я путаю чего?


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

Сообщение отредактировано
Вадим - Вт, 06 Сентября 2011, 01:32
 
Сообщение
Quote (Peter)
Так не бывает!!!

Ну почему? Если сделать отлов события мыши и устанавливать над каким объектом был курсор во время события мыши. Т.е. нужно задать событие, которое будем мониторить и ждать имя объекта в переменную.

Тогда монитор двойного клика выглядел бы так (где-то я уже подобное фантазировал):

MonitorMouseEvent "LeftDoubleClick" "[NameObject]" "Subroutine1"

а одинарного так:

MonitorMouseEvent "LeftOneClick" "[NameObject]" "Subroutine2"

Такое возможно? В твоем мониторе мыши ведь есть возможность даже по косточкам события разбирать - LBD, LBU и т.д. В принципе, к имеющемуся монитору осталось только добавить возможность узнать - над каким объектом данное событие случилось и можно строить хоть одинарные, хоть двойные, и даже полуторные клики.Или я путаю чего?

Автор - Вадим
Дата добавления - 06 Сентября 2011 в 01:30
mishemДата: Вт, 06 Сентября 2011, 01:45 | Сообщение # 73
Эксперт форума
Peter, объект, у которого есть клик, но нет двойного. Нужно что бы срабатывал и тот, и тот. Вот здесь народ и столкнулся с "проблемой". Реализовать, нет проблем. Но как обычно, чем дальше в лес, тем ближе вылез.
Нужен:
Один клик, сработал код,
или,
Один клик, пока не узнал, есть ли дубль клик, первый код не работает,
или
Ну, короче сам развивай мысль.
Надо, и то, и это, и еще если я левой кнопкой вдруг затормозил, да нечаянно правой нажал, да еще в этот момент колесиком крутнул, но дубльклик должен сработать. :D Ну примерно так...

Добавлено (06 Сентябрь 2011, 01:44)
---------------------------------------------

Quote (Вадим)
и устанавливать над каким объектом был курсор во время события мыши.

имхо, мож я уже пьян, но для дубль.., ни к чему устанавливать монитор, так как первый щелчок, уже определяет что за объект находится.
Дальнейший пост, не коментирую. Надеюсь понятно объяснил. :)

Добавлено (06 Сентябрь 2011, 01:45)
---------------------------------------------

Quote (Peter)
Однако, батенька, вам с вашими запросами не NeoBook надобно осваивать, а, например, Delphi или С++

Это ж пипец разработчикам. :D


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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеPeter, объект, у которого есть клик, но нет двойного. Нужно что бы срабатывал и тот, и тот. Вот здесь народ и столкнулся с "проблемой". Реализовать, нет проблем. Но как обычно, чем дальше в лес, тем ближе вылез.
Нужен:
Один клик, сработал код,
или,
Один клик, пока не узнал, есть ли дубль клик, первый код не работает,
или
Ну, короче сам развивай мысль.
Надо, и то, и это, и еще если я левой кнопкой вдруг затормозил, да нечаянно правой нажал, да еще в этот момент колесиком крутнул, но дубльклик должен сработать. :D Ну примерно так...

Добавлено (06 Сентябрь 2011, 01:44)
---------------------------------------------

Quote (Вадим)
и устанавливать над каким объектом был курсор во время события мыши.

имхо, мож я уже пьян, но для дубль.., ни к чему устанавливать монитор, так как первый щелчок, уже определяет что за объект находится.
Дальнейший пост, не коментирую. Надеюсь понятно объяснил. :)

Добавлено (06 Сентябрь 2011, 01:45)
---------------------------------------------

Quote (Peter)
Однако, батенька, вам с вашими запросами не NeoBook надобно осваивать, а, например, Delphi или С++

Это ж пипец разработчикам. :D

Автор - mishem
Дата добавления - 06 Сентября 2011 в 01:45
ВадимДата: Вт, 06 Сентября 2011, 01:48 | Сообщение # 74
Генератор идей


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

Автор - Вадим
Дата добавления - 06 Сентября 2011 в 01:48
mishemДата: Вт, 06 Сентября 2011, 01:48 | Сообщение # 75
Эксперт форума
Quote (Peter)
Граждане, миленькие!
Объясните мне, тупому,

Quote (Peter)
просто "двойной клик" для тех объектов, у которых "простой клик" уже имеется


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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Peter)
Граждане, миленькие!
Объясните мне, тупому,

Quote (Peter)
просто "двойной клик" для тех объектов, у которых "простой клик" уже имеется

Автор - mishem
Дата добавления - 06 Сентября 2011 в 01:48
ВадимДата: Вт, 06 Сентября 2011, 01:53 | Сообщение # 76
Генератор идей
Quote (mishem)
ни к чему устанавливать монитор, так как первый щелчок, уже определяет что за объект находится.
Ну, это чтобы подпрограмму назначать на нужное событие мыши. Одну подпрограмму - на одинарный левый, другую на двойной правый :).


Бесплатный онлайн курс программирования в NeoBook \ VisualNEO Win
 
Сообщение
Quote (mishem)
ни к чему устанавливать монитор, так как первый щелчок, уже определяет что за объект находится.
Ну, это чтобы подпрограмму назначать на нужное событие мыши. Одну подпрограмму - на одинарный левый, другую на двойной правый :).

Автор - Вадим
Дата добавления - 06 Сентября 2011 в 01:53
PeterДата: Вт, 06 Сентября 2011, 02:00 | Сообщение # 77
Админ NeoBook
Quote (Вадим)
Такое возможно?

"Технически", возможно(!), да, но, вот "логически" - :D
Quote (Вадим)
и даже полуторные клики.Или я путаю чего?

Вадим, ну подумай сам: одиночный клик ВСЕГДА будет предшествовать двойному просто "по-определению".
И какая же "каша" тогда получится?
Точнее - не каша, а двойной просто не будет срабатывать.
Или надо делать "задержку" выполнения простого клика, что по сути - абсурд!
Покажи мне хоть один пример комбинации кликов.
Мне подобное ещё не доводилось видеть!
%)
Quote (mishem)
Это ж пипец разработчикам.

А вот это - ТОЧНО!!!
:D

Что касаемо самого двойного клика средствами NB, то тут все просто - см. прикрепление.
Прикрепления: DbLclick.rar(1.7 Kb)


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

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

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


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Вадим)
Такое возможно?

"Технически", возможно(!), да, но, вот "логически" - :D
Quote (Вадим)
и даже полуторные клики.Или я путаю чего?

Вадим, ну подумай сам: одиночный клик ВСЕГДА будет предшествовать двойному просто "по-определению".
И какая же "каша" тогда получится?
Точнее - не каша, а двойной просто не будет срабатывать.
Или надо делать "задержку" выполнения простого клика, что по сути - абсурд!
Покажи мне хоть один пример комбинации кликов.
Мне подобное ещё не доводилось видеть!
%)
Quote (mishem)
Это ж пипец разработчикам.

А вот это - ТОЧНО!!!
:D

Что касаемо самого двойного клика средствами NB, то тут все просто - см. прикрепление.

Автор - Peter
Дата добавления - 06 Сентября 2011 в 02:00
ВадимДата: Вт, 06 Сентября 2011, 02:21 | Сообщение # 78
Генератор идей
Quote (Peter)
одиночный клик ВСЕГДА будет предшествовать двойному просто "по-определению".

А для этого и нужна подпрограмма.
Допустим одиночный клик отмониторился над объектом Объект2, и запустилась Подпрограмма1, в которой стоит условие - если текущий объект есть Объект1, то делаем то-то. А оказалось, что Объект2, следовательно условие не выполняется и Подпрограмма не срабатывает. Но тут же был второй клик (т.е. оказалось, что это был не одиночный, а двойной клик), срабатывает Подпрограмма2 (назначенная на даблклик), а в ней условие - если текущий объект есть Объект2, то делаем то-то. А у нас как раз текущий объект оказался Объект2, следовательно выполняется подпрограмма. Т.е. условия выполнения подпрограммы в ней самой. И не важно что одинарный клик всегда предшествует двойному, пусть сработает первая строчка подпрограммы одинарного при двойном клике, ничего страшного.

При таком подходе единственное ограничение - это сложность в том, чтобы развести подпрограммы для разных событий мыши применимых для одного и того же объекта - придется сделать соответствующие условия и наверное не всегда это будет возможно. Но это уже мелочь, поскольку встречаться такая ситуация будет крайне редко.

Добавлено (06 Сентябрь 2011, 02:21)
---------------------------------------------

Quote (Peter)
Что касаемо самого двойного клика средствами NB, то тут все просто - см. прикрепление.

Хороший код, экономичный. Мы подобные и составляли, но этот, по-моему, самый простой получился.


Бесплатный онлайн курс программирования в NeoBook \ VisualNEO Win
 
Сообщение
Quote (Peter)
одиночный клик ВСЕГДА будет предшествовать двойному просто "по-определению".

А для этого и нужна подпрограмма.
Допустим одиночный клик отмониторился над объектом Объект2, и запустилась Подпрограмма1, в которой стоит условие - если текущий объект есть Объект1, то делаем то-то. А оказалось, что Объект2, следовательно условие не выполняется и Подпрограмма не срабатывает. Но тут же был второй клик (т.е. оказалось, что это был не одиночный, а двойной клик), срабатывает Подпрограмма2 (назначенная на даблклик), а в ней условие - если текущий объект есть Объект2, то делаем то-то. А у нас как раз текущий объект оказался Объект2, следовательно выполняется подпрограмма. Т.е. условия выполнения подпрограммы в ней самой. И не важно что одинарный клик всегда предшествует двойному, пусть сработает первая строчка подпрограммы одинарного при двойном клике, ничего страшного.

При таком подходе единственное ограничение - это сложность в том, чтобы развести подпрограммы для разных событий мыши применимых для одного и того же объекта - придется сделать соответствующие условия и наверное не всегда это будет возможно. Но это уже мелочь, поскольку встречаться такая ситуация будет крайне редко.

Добавлено (06 Сентябрь 2011, 02:21)
---------------------------------------------

Quote (Peter)
Что касаемо самого двойного клика средствами NB, то тут все просто - см. прикрепление.

Хороший код, экономичный. Мы подобные и составляли, но этот, по-моему, самый простой получился.

Автор - Вадим
Дата добавления - 06 Сентября 2011 в 02:21
AlienДата: Вт, 06 Сентября 2011, 04:46 | Сообщение # 79
Вадим, почти у каждого объекта есть события входа и выхода мыши, вот его можно использовать для определения над каким объектом мышь находится. И единственное что останется сделать глобальный монитор двойного клика.
 
СообщениеВадим, почти у каждого объекта есть события входа и выхода мыши, вот его можно использовать для определения над каким объектом мышь находится. И единственное что останется сделать глобальный монитор двойного клика.

Автор - Alien
Дата добавления - 06 Сентября 2011 в 04:46
mishemДата: Вт, 06 Сентября 2011, 12:02 | Сообщение # 80
Эксперт форума
Quote (Peter)
Что касаемо самого двойного клика средствами NB, то тут все просто - см. прикрепление.

Простота, сестра таланта. :)
Часто замечаю, городишь, городишь, а по факту пару строк то и надо. :D


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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Peter)
Что касаемо самого двойного клика средствами NB, то тут все просто - см. прикрепление.

Простота, сестра таланта. :)
Часто замечаю, городишь, городишь, а по факту пару строк то и надо. :D

Автор - mishem
Дата добавления - 06 Сентября 2011 в 12:02
GorezcaidДата: Вт, 06 Сентября 2011, 12:17 | Сообщение # 81
Ветеран форума
Судя по примеру Petera можно сказать что можно управлять двойным кликом, используя только один таймер.Или всё таки будут перебои в последовательности работы этого кода при нескольких кнопках.


Win7 Pro SP1 x64; NBv5.5.4rus,v5.6.2rus, v5.7.0en, Opera
 
СообщениеСудя по примеру Petera можно сказать что можно управлять двойным кликом, используя только один таймер.Или всё таки будут перебои в последовательности работы этого кода при нескольких кнопках.

Автор - Gorezcaid
Дата добавления - 06 Сентября 2011 в 12:17
PeterДата: Вт, 06 Сентября 2011, 12:29 | Сообщение # 82
Админ NeoBook
Quote (Вадим)
А для этого и нужна подпрограмма.
Допустим одиночный клик отмониторился над объектом Объект2, и запустилась Подпрограмма1, в которой стоит условие - если текущий объект есть Объект1, то делаем то-то. А оказалось, что Объект2, следовательно условие не выполняется и Подпрограмма не срабатывает. Но тут же был второй клик (т.е. оказалось, что это был не одиночный, а двойной клик), срабатывает Подпрограмма2 (назначенная на даблклик), а в ней условие - если текущий объект есть Объект2, то делаем то-то

Подпрограмма это всего-лишь способ (вид) оформления кода, но суть (ссуть) совсем в другом.
Похоже, мы говорим о разных вещах: я - о событиях для ОДНОГО И ТОГО ЖЕ объекта, а ты - о событиях для двух разных.
Вадим, давай расставим точки над "и".
Для одного объекта НЕВОЗМОЖНО назначить одновременно реакцию на просто клик и на двойной клик, т.к.:
Quote (Peter)
одиночный клик ВСЕГДА будет предшествовать двойному просто "по-определению".
И какая же "каша" тогда получится?
Точнее - не каша, а двойной просто не будет срабатывать.

Будет всегда отрабатываться одиночний клик, если на него назначена реакция!
Но, для двух разных объектов клики можно разделить, и вопрос только в детектировании объекта над которым находится курсор в момент "мышиного события".

Добавлено (06 Сентябрь 2011, 12:29)
---------------------------------------------

Quote (Gorezcaid)
Или всё таки будут перебои в последовательности работы этого кода при нескольких кнопках.

Ну, если умудриться щелкать ОДНОВРЕМЕННО по двум кнопкам сразу...
:D
И вообще, кто сказал что таймер это - плохо?
Глупость!
Сама винда детектирует двойной клик через таймер, да и сама она по-существу один большой таймер!


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

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

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


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Вадим)
А для этого и нужна подпрограмма.
Допустим одиночный клик отмониторился над объектом Объект2, и запустилась Подпрограмма1, в которой стоит условие - если текущий объект есть Объект1, то делаем то-то. А оказалось, что Объект2, следовательно условие не выполняется и Подпрограмма не срабатывает. Но тут же был второй клик (т.е. оказалось, что это был не одиночный, а двойной клик), срабатывает Подпрограмма2 (назначенная на даблклик), а в ней условие - если текущий объект есть Объект2, то делаем то-то

Подпрограмма это всего-лишь способ (вид) оформления кода, но суть (ссуть) совсем в другом.
Похоже, мы говорим о разных вещах: я - о событиях для ОДНОГО И ТОГО ЖЕ объекта, а ты - о событиях для двух разных.
Вадим, давай расставим точки над "и".
Для одного объекта НЕВОЗМОЖНО назначить одновременно реакцию на просто клик и на двойной клик, т.к.:
Quote (Peter)
одиночный клик ВСЕГДА будет предшествовать двойному просто "по-определению".
И какая же "каша" тогда получится?
Точнее - не каша, а двойной просто не будет срабатывать.

Будет всегда отрабатываться одиночний клик, если на него назначена реакция!
Но, для двух разных объектов клики можно разделить, и вопрос только в детектировании объекта над которым находится курсор в момент "мышиного события".

Добавлено (06 Сентябрь 2011, 12:29)
---------------------------------------------

Quote (Gorezcaid)
Или всё таки будут перебои в последовательности работы этого кода при нескольких кнопках.

Ну, если умудриться щелкать ОДНОВРЕМЕННО по двум кнопкам сразу...
:D
И вообще, кто сказал что таймер это - плохо?
Глупость!
Сама винда детектирует двойной клик через таймер, да и сама она по-существу один большой таймер!

Автор - Peter
Дата добавления - 06 Сентября 2011 в 12:29
mishemДата: Вт, 06 Сентября 2011, 12:40 | Сообщение # 83
Эксперт форума
Quote (Gorezcaid)
А может будет лучше, если создать кнопку в delphi с двойным кликом, передавая события в NB через контейнер Rectangle.

Создать плагин для дубль клик, хорошая затея. Так как Rectangle вообще не имеет такого понятия как клик. А очень часто, ну именно мне, хочется повесить на этот объект и клик, и дубль...
Quote (Peter)
Для одного объекта НЕ ВОЗМОЖНО назначить одновременно реакцию на просто клик и на двойной клик, т.к.:

Почему? Или я сейчас что то не догоняю, или ты не прав. На сколько я понимаю, на первый клик вешается просто выделение объекта. Одна строчка кода.(это если автор не захочет портянку соорудить для первого клика) на второй, пошел свой код. Пример чуть выше. ;)
За 500-300 мс, первый код успеет сработать, а дальше пошел второй, если будет второй клик.

Добавлено (06 Сентябрь 2011, 12:40)
---------------------------------------------

Quote (Peter)
вообще, кто сказал что таймер это - плохо?

Я. и Дембель. :D .
Я точно, за Дембеля не отвечаю. :)
Почему? Уже писал. Не всегда, не везде , но это зло. И с ним, надо обращаться крайне осторожно. А не так, что в любом месте его пихать. Один таймер, рвет выполнение кода другого таймера. Клик, обрывает выполнение любого кода. А это уже зло. ;)
Хотя, может быть и во благо. В зависимости от ситуации.


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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Gorezcaid)
А может будет лучше, если создать кнопку в delphi с двойным кликом, передавая события в NB через контейнер Rectangle.

Создать плагин для дубль клик, хорошая затея. Так как Rectangle вообще не имеет такого понятия как клик. А очень часто, ну именно мне, хочется повесить на этот объект и клик, и дубль...
Quote (Peter)
Для одного объекта НЕ ВОЗМОЖНО назначить одновременно реакцию на просто клик и на двойной клик, т.к.:

Почему? Или я сейчас что то не догоняю, или ты не прав. На сколько я понимаю, на первый клик вешается просто выделение объекта. Одна строчка кода.(это если автор не захочет портянку соорудить для первого клика) на второй, пошел свой код. Пример чуть выше. ;)
За 500-300 мс, первый код успеет сработать, а дальше пошел второй, если будет второй клик.

Добавлено (06 Сентябрь 2011, 12:40)
---------------------------------------------

Quote (Peter)
вообще, кто сказал что таймер это - плохо?

Я. и Дембель. :D .
Я точно, за Дембеля не отвечаю. :)
Почему? Уже писал. Не всегда, не везде , но это зло. И с ним, надо обращаться крайне осторожно. А не так, что в любом месте его пихать. Один таймер, рвет выполнение кода другого таймера. Клик, обрывает выполнение любого кода. А это уже зло. ;)
Хотя, может быть и во благо. В зависимости от ситуации.

Автор - mishem
Дата добавления - 06 Сентября 2011 в 12:40
СергейДата: Вт, 06 Сентября 2011, 12:41 | Сообщение # 84
Необукер
Quote (mishem)
Почему?
Разговор идет о двойном клике, как событие/самостоятельной команды, а пример Петра это имитация двойного клика. Там всегда обрабатывается один клик.
Напимер в хтмл есть событие двойного клика, а в нб нет...
И если в хтмл назначить оба события, то обрабатываться будет только одиночный клик можешь потестировать(сохрани в файл *.html)

Незнаю понятно ли объяснил


Сообщение отредактировано
Сергей - Вт, 06 Сентября 2011, 12:50
 
Сообщение
Quote (mishem)
Почему?
Разговор идет о двойном клике, как событие/самостоятельной команды, а пример Петра это имитация двойного клика. Там всегда обрабатывается один клик.
Напимер в хтмл есть событие двойного клика, а в нб нет...
И если в хтмл назначить оба события, то обрабатываться будет только одиночный клик можешь потестировать(сохрани в файл *.html)

Незнаю понятно ли объяснил

Автор - Сергей
Дата добавления - 06 Сентября 2011 в 12:41
mishemДата: Вт, 06 Сентября 2011, 12:47 | Сообщение # 85
Эксперт форума
Quote (Peter)
Сама винда детектирует двойной клик

Не вникал, сколько у винды одновременно потоков? Она следит за каждым действием? И таймер для каждого свой? Не путайте. Винда и НБ не одно и то же.

Добавлено (06 Сентябрь 2011, 12:47)
---------------------------------------------
Quote (Сергей)
Петра это имитация двойного клика.

Пример Петра, это сокращенный мой пример. В моем, можно повесить команду на первый клик. И нет проблем. Дальше мы можем повесить команду и на второй клик.
Опять ответ.
Почему?


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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.


Сообщение отредактировано
mishem - Вт, 06 Сентября 2011, 12:49
 
Сообщение
Quote (Peter)
Сама винда детектирует двойной клик

Не вникал, сколько у винды одновременно потоков? Она следит за каждым действием? И таймер для каждого свой? Не путайте. Винда и НБ не одно и то же.

Добавлено (06 Сентябрь 2011, 12:47)
---------------------------------------------
Quote (Сергей)
Петра это имитация двойного клика.

Пример Петра, это сокращенный мой пример. В моем, можно повесить команду на первый клик. И нет проблем. Дальше мы можем повесить команду и на второй клик.
Опять ответ.
Почему?

Автор - mishem
Дата добавления - 06 Сентября 2011 в 12:47
СергейДата: Вт, 06 Сентября 2011, 12:52 | Сообщение # 86
Необукер
Что почему?!
Кстати, я дополнил свой предыдущий пост(#84) с примером, можешь протестить и все поймешь
 
СообщениеЧто почему?!
Кстати, я дополнил свой предыдущий пост(#84) с примером, можешь протестить и все поймешь

Автор - Сергей
Дата добавления - 06 Сентября 2011 в 12:52
mishemДата: Вт, 06 Сентября 2011, 13:02 | Сообщение # 87
Эксперт форума
Quote (Сергей)
я дополнил свой предыдущий пост(#84) с примером, можешь протестить и все поймешь

Пример это

Quote (Сергей)
<html><body><input type="button" ondblclick="alert('ondblclick')" onclick="alert('onclick')" value="ТЕСТ"/></body></html>


Где тестить, и как?
Не в обиду. Я "мертвый" :)

Добавлено (06 Сентябрь 2011, 13:02)
---------------------------------------------
И при чем сдесь хтмл? Мы ж о НБ говорим? Или я не туда? :D


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

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



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

Пример это

Quote (Сергей)
<html><body><input type="button" ondblclick="alert('ondblclick')" onclick="alert('onclick')" value="ТЕСТ"/></body></html>


Где тестить, и как?
Не в обиду. Я "мертвый" :)

Добавлено (06 Сентябрь 2011, 13:02)
---------------------------------------------
И при чем сдесь хтмл? Мы ж о НБ говорим? Или я не туда? :D


Автор - mishem
Дата добавления - 06 Сентября 2011 в 13:02
СергейДата: Вт, 06 Сентября 2011, 13:21 | Сообщение # 88
Необукер
Quote (mishem)
Где тестить, и как?
не парься, я так расскажу:
На одну кнопку повешено два события - одиночный и двойной клик, когда ты кликнешь 2 раза по кнопке, то появится мессага, что сделан был один клик, но до второго сообщения о дубль клике дело не дойдет, т.к. перебило событие одного клика. Но если не вешать событие, где например требуется участие пользователя, то можно отловить оба события Обработка двойного клика=onclick, ondblclick
Quote (mishem)
И при чем сдесь хтмл?
это просто пример с объектом, где есть событие дубльклика :)

Добавлено (06 Сентябрь 2011, 13:15)
---------------------------------------------

Quote (mishem)
Или я не туда?
походу я не в теме :D

Добавлено (06 Сентябрь 2011, 13:21)
---------------------------------------------
Перечитал последние сообщения, и понял твой вопрос. Петр прав, нельзя повесить оба события одновременно. Один(первый) клик всегда будет отрабатываться, как одиночный. И неважно два-три раза ты кликну, первый клик идет один!

Сообщение отредактировано
Сергей - Вт, 06 Сентября 2011, 13:14
 
Сообщение
Quote (mishem)
Где тестить, и как?
не парься, я так расскажу:
На одну кнопку повешено два события - одиночный и двойной клик, когда ты кликнешь 2 раза по кнопке, то появится мессага, что сделан был один клик, но до второго сообщения о дубль клике дело не дойдет, т.к. перебило событие одного клика. Но если не вешать событие, где например требуется участие пользователя, то можно отловить оба события Обработка двойного клика=onclick, ondblclick
Quote (mishem)
И при чем сдесь хтмл?
это просто пример с объектом, где есть событие дубльклика :)

Добавлено (06 Сентябрь 2011, 13:15)
---------------------------------------------

Quote (mishem)
Или я не туда?
походу я не в теме :D

Добавлено (06 Сентябрь 2011, 13:21)
---------------------------------------------
Перечитал последние сообщения, и понял твой вопрос. Петр прав, нельзя повесить оба события одновременно. Один(первый) клик всегда будет отрабатываться, как одиночный. И неважно два-три раза ты кликну, первый клик идет один!


Автор - Сергей
Дата добавления - 06 Сентября 2011 в 13:21
DEMBELДата: Вт, 06 Сентября 2011, 13:42 | Сообщение # 89
Наш дизайнер
Quote (Сергей)
Перечитал последние сообщения, и понял твой вопрос. Петр прав, нельзя повесить оба события одновременно. Один(первый) клик всегда будет отрабатываться, как одиночный. И неважно два-три раза ты кликну, первый клик идет один!

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

Добавлено (06 Сентябрь 2011, 13:42)
---------------------------------------------
главное чтобы на время этого ожидания не блокировалось выполнение приложения, чтобы происходил дальнейший детект второго клика. Так и происходит, благодаря чему во время задержки можно определить был ли повторный клик. Иначе клики всегда были бы одиночными.


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

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

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

Добавлено (06 Сентябрь 2011, 13:42)
---------------------------------------------
главное чтобы на время этого ожидания не блокировалось выполнение приложения, чтобы происходил дальнейший детект второго клика. Так и происходит, благодаря чему во время задержки можно определить был ли повторный клик. Иначе клики всегда были бы одиночными.


Автор - DEMBEL
Дата добавления - 06 Сентября 2011 в 13:42
ГарикДата: Вт, 06 Сентября 2011, 22:46 | Сообщение # 90
В принципе,если делать плагин,то можно будет отлавливать левый дабл,средний дабл и правый дабл над любым контролом,не зависимо какие у него есть события, или их вообще нет(например Rectangle).
Точно так же можно ловить и одинарный клик (левый,средний,правый)над любым контролом
Но в совокупности не прокатит.
 
СообщениеВ принципе,если делать плагин,то можно будет отлавливать левый дабл,средний дабл и правый дабл над любым контролом,не зависимо какие у него есть события, или их вообще нет(например Rectangle).
Точно так же можно ловить и одинарный клик (левый,средний,правый)над любым контролом
Но в совокупности не прокатит.

Автор - Гарик
Дата добавления - 06 Сентября 2011 в 22:46
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Назначить действие по 2 щелчку левой кнопкой мыши (Как определить, что по рисунку щелкнули 2 раза левой кнопкой)
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: