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

"Нестабильный" вызов OnSelectCell в Berlin?


enatechno

Вопрос

Откомпилировав тестовый проект в Berlin для Android (4.3, 5.1), обнаружил, что событие OnSelectCell стало "нестабильным". Т.е. если я делаю Tap по ячейкам StringGrid, то OnTap отрабатывает всегда, а OnSelectCell - не всегда.
К тому же иногда нарушается последовательность вызова событий.
Последовательность обработки событий в Android была такой (в Seattle и более ранних версиях):
1). OnTap; 
2). OnSelectCell.

Как лечить?
SelectCell.png

 

 

test_SelectCell.rar

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

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

  • 0

 

6 минут назад, Vitaldj сказал:

Извините за возможной офф топ или за комент, но, мне кажется grid для мобилы - это зло!

Всё, всё завязыва работу.

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

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

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

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

Воспроизвести двойное срабатывание SelectCell мне не удалось. И всегда Tap срабатывает до SelectCell. Какое у вас устройство? Я попробую по-тестировать на нем, если Vitaldj разрешит :D

 

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

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

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

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

Воспроизвести двойное срабатывание SelectCell мне не удалось. И всегда Tap срабатывает до SelectCell. Какое у вас устройство? Я попробую по-тестировать на нем, если Vitaldj разрешит :D

 

Сам товарищ разработчик пожаловал! ;)). Это событие! (Побежал за пивом))). Ну про grid ИМХО. Если еще для планшетов, это куда не шло, то для телефонов, ну не мобильный это интерфейс! Уж простите, за прямоту! В новой версии двойной клик вернете?

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

А вот есть такая конторка, Microsoft называется, так она целый Excel для мобильников сделала :) 
В целом конечно надо с особой осторожностью подходить к использованию таблиц в мобильных устройствах да и вообще учитывать некоторые особенности при разработке интерфейса, но это уже вопросы второго порядка. В идеале к которому мы стремимся: то, что работает на дэсктопе должно работать и на телефоне без переделок.
OnDblClick в public как был так и остался.
В следующей версии в Published должны появиться

  TCellClick = procedure(const Column: TColumn; const Row: Integer) of object;
    property OnCellClick;
    property OnCellDblClick;

Будут срабатывать в таком порядке
OnSelectCell([StringGrid1] 4; 8)
OnSelChanged([StringGrid1] 4; 8)
OnCellClick([StringGrid1] Progress; Row: 8)
OnCellDblClick([StringGrid1] Progress; Row: 8)

но это секрет и оффтоп в данной теме.

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

Обратите внимание SelectCell срабатывает при возможной смене ячейки т.е. не всегда

Я каждый раз нажимал на новую ячейку. Для "чистоты" теста после ячейки из первой колонки нажимал на ячейку второй колонки (и наоборот). Все ячейки Enabled.

1 час назад, RoschinSpb сказал:

Воспроизвести двойное срабатывание SelectCell мне не удалось.

У меня не было двойного срабатывания тоже. У меня были случаи не срабатывания SelectCell. На скрине (Berlin): 10 Tap и 7 SelectCell. Т.е. при 10 "тапах" на ячейках трижды не сработал SelectCell.

1 час назад, RoschinSpb сказал:

Какое у вас устройство?

Nexus 7 (Android 5.1), Samsung GalaxyS III (4.3)

1 час назад, RoschinSpb сказал:

Вообще говоря не стоит строить свой алгоритм на предположении что Tap и SelectCell жестко связаны.

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

 

Изменено пользователем enatechno
Ссылка на комментарий
  • 0
3 минуты назад, enatechno сказал:

У меня не было двойного срабатывания тоже.

Я имею ввиду, что бы было два SelectCell подряд как в вашем примере. У меня Nexus 7. Ладно, в общем принял к сведению.

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

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

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

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

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

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

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

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

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

×
×
  • Создать...