Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как отличить жест и событие OnItemClickEx в компоненте TListView


BurcevD

Вопрос

Уважаемые разработчики,

собственно сам вопрос в теме: Как отличить жест и событие OnItemClickEx в компоненте TListView, т.е. если добавить TGestureManager и сделать слайд влево или вправо

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

Как бы сделать обработку на окончание жеста и отдельно обработку события OnItemClickEx.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Вам обязательно нужно нажатие? Я в своем проекте просто назначил событие OnMouseUp на нужных компонентах. А в жесте строго зафиксировал область, в которой жест выполняется. Хотя, понимаю, это далеко не универсальный способ.

Ссылка на комментарий
  • 0

Вячеслав, попробую как вы советовали, но я хочу следующее:

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

Ссылка на комментарий
  • 0

Да еще вопрос по сопровождающей теме: а как различить момент начала жеста, момент проведения жеста и момент окончания жеста? я так понял у TGestureEventInfo есть поле Flags, которое за это отвечает?

Ссылка на комментарий
  • 0

Ну в конкретно этом случае, я думаю что нужно заменить OnItemClick и TGestureManager на MouseDown,MouseMove,MouseUp. И внутри этих трех событий (на основе изменения координат пальца) определять что было сделано: был ли это слайд в сторону или просто клик. В событии OnMouseDown определяем на каком итеме сейчас стоит палец и запоминаем координаты, ну и дальше смотрим в событие OnMouseMove: если координаты пальца пошли в сторону, то ты понимаешь что это слайд и выполняешь что там тебе нужно для отображения сего действия, а в событии OnMouseUp сравниваешь координаты с OnMouseDown, если они примерно равны, то это был клик. Мне это как-то так все видится.

Изменено пользователем xenon54
Ссылка на комментарий
  • 0

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

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...