Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Модератор форума: Peter, DEMBEL, YURIY  
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Назначить действие по 2 щелчку левой кнопкой мыши (Как определить, что по рисунку щелкнули 2 раза левой кнопкой)
Назначить действие по 2 щелчку левой кнопкой мыши
ВадимДата: Ср, 07 Сентября 2011, 00:16 | Сообщение # 91
Генератор идей
Quote (Alien)
почти у каждого объекта есть события входа и выхода мыши, вот его можно использовать для определения над каким объектом мышь находится.
Я так и делаю в своем проекте "Корпоративная культура", и там столкнулся с проблемой, что NB не всегда обновляет переменные изменение которых прописано на события "мышь вошла" и "мышь вышла". А конкретно, я использую там объекты Text для создания "вкладок". Одиночный клик по вкладке должен ее открывать, так вот не всегда удается вкладку открыть, именно по той причине, что эти события в объекте Text не всегда успевают обработаться. Не знаю почему, может из-за большого числа объектов...

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

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

Допустим на объект Text1 я пытаюсь повесить оба события - и одинарный левый, и двойной левый клики. Допустим по первому клику у меня объект "выделяется" (меняю ему просто заливку), а по двойному что-то там делается.
Кликнули один раз, плагин узнаёт над каким объектом курсор и запускает подпрограмму (в данном случае - изменения заливки), кликнули второй раз и если этот второй раз оказался в границах времени отведенного на двойной клик, то плагин запустит вторую подпрограмму. Как плагин узнает, что это уже второй клик, а не первый? С помощью внутреннего таймера, как в примере Петра выше, а период ожидания может взять из реестра или ручных настроек. Т.е. не собственно двойной клик мониторится, а мониторится, выходит, всегда одинарный, но если одинарные оказываются в пределах назначенного допуска, то истолковываются они как двойной, точнее второй одинарный истолковывается как двойной.

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

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

Под подпрограммами я имею в виду обычные подпрограммы, которые мы пишем на вкладке подпрограммы.


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

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

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

Допустим на объект Text1 я пытаюсь повесить оба события - и одинарный левый, и двойной левый клики. Допустим по первому клику у меня объект "выделяется" (меняю ему просто заливку), а по двойному что-то там делается.
Кликнули один раз, плагин узнаёт над каким объектом курсор и запускает подпрограмму (в данном случае - изменения заливки), кликнули второй раз и если этот второй раз оказался в границах времени отведенного на двойной клик, то плагин запустит вторую подпрограмму. Как плагин узнает, что это уже второй клик, а не первый? С помощью внутреннего таймера, как в примере Петра выше, а период ожидания может взять из реестра или ручных настроек. Т.е. не собственно двойной клик мониторится, а мониторится, выходит, всегда одинарный, но если одинарные оказываются в пределах назначенного допуска, то истолковываются они как двойной, точнее второй одинарный истолковывается как двойной.

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

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

Под подпрограммами я имею в виду обычные подпрограммы, которые мы пишем на вкладке подпрограммы.

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