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

TGrid vs Тач интерфейс


Akad

Вопрос

Как можно отследить, что пользователь кликнул на ячейку грида (режим только чтение, при клике программа должна выполнить действие в зависимости от выбранной ячейки)?

Теоретически этим должны заниматься OnCellClick/OnClick. Но по факту они ловят событие нажатия на грид, не рассматривая случай скролла. Т.е. мимо.

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

OnTap - вызывается до изменения выделенности (очередной баг?). Соответственно тоже мимо.

Есть ли корректный способ отследить нажатие пользователем на ячейку TGrid?


 

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

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

  • 0

Да, действительно в случае грида, перемещение пальца не рассматривается как клик по ячейке, а рассматривается как скроллирование.

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

Это нормальное и корректное поведение: ячейки "не кликаются", когда пользователь просто перетаскивает рабочую область таблицы. Если хотите странного, то обрабатывайте события OnMouseDown, OnTap и т.п. по своему собственному усмотрению на свой страх и риск игнорируя всю остальную логику работы таблицы.

Ссылка на комментарий
  • 0
9 минут назад, RoschinSpb сказал:

Если прикоснулся пальцем и держал на месте короткое время, или прикоснулся и сразу отпустил не перемещая, то это считается желанием выделить ячейку

Эээ... Разве? Я как только прикасаюсь к таблице, ещё палец не убираю, сразу вызывается OnCellClick.Т.е. не важно, после касания я провёл пальцем или сразу отпустил OnCellClick вызывается у меня в любом случае. Есть настройка этого поведения?

Я сейчас как раз и обрабатываю Mouse Down/Up, вычисляя радиус между нажатием и отпусканием. Но это имхо не правильно. Поэтому и возник вопрос.

P.S. А каким тогда компонентом правильнее сделать список на подобии такого:

Screenshot_20171217-020312.thumb.jpg.0b2e078f78835a04ae77fd1c458e0ac4.jpg

вывод отличается в зависимости от кучи параметров (например если адрес не влез в строку уменьшаем шрифт). Сейчас я перехватываю DrawColumnCell и рисую что и как мне надо. Самые очевидные для подобной задачи ListBox/ListView не умеют такого, на сколько я понял? Мне нужно что бы под мобильными платформами это всё без затруднений скроллилось и открывалось при клике.
 

Ссылка на комментарий
  • 0
11 час назад, Akad сказал:

Эээ... Разве?

Да. Во всяком случае так было в той версии которая у меня и которой я занимался.
Задержка порядка 50 мс. это мало, чтобы заметить но не 0. Если бы задержки не было вообще, то при любой попытке скрола, менялась бы выделенная ячейка. Вот видео, записал как смог. Это ни как не настраивается, просто после многих проб и ошибок подобрался наиболее оптимальный вариант. Похожий на стандартное поведение.

Цитата

Я сейчас как раз и обрабатываю Mouse Down/Up, вычисляя радиус между нажатием и отпусканием. 

Да, были с этим проблемы, при чем как всегда: "Не знаю, не знаю, у меня всё работает, что у вас за телефон?". Тут надо понимать, что это некие искусственные события которые эмулируют работу с мыши т.е. добавляют свою логику поверх системной, и там в зависимости от модели могут быть разные особенности, лучше обрабатывать жесты. Посмотрите исходники, можно сделать по образу и подобию.

А чем собственно не удовлетворяет стандартное поведение? Я так и не понял.

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

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

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

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

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

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

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

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

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

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

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