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

Запрет нажатия на контролы внутри ScrollBox при прокручивании


ophion

Вопрос

Добрый день.

В рантайме создаются TButton и помещаются в TVertScrollBox.

Если во время прокручивания нажать пальцем на TButton, то срабатывает событие OnClick.

Собственно вопрос... как избежать такого поведения? Т.е. как разрешить нажатие на кнопки только после того, как прокручивание остановилось?

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

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

  • 0

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

 

я делал это переписыванием в исходниках контрола событий onmousedown onmousemove onmouseup. 

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

для мобильных устройств есть специальное событие OnTap

 

в случае с комбобокс оно не поможет а вот для кнопок самое то

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

Судя по всему "решения из коробки" нет.

Будем писать костыли... но считаю что наличие такой возможности по умолчанию для TScrollBox было бы не лишним.

Спасибо за ответы.

Тема открыта, может кто-то сталкивался с такой ситуацией. Не ленитесь делится опытом и кодом тут.

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

У TVertScrollBox есть AniCalculations.

 

Можно попробовать:

 

AniCalculations.Animation := true;

 

и сделать обработчики на события:

 
AniCalculations.OnStart - TButton.Enabled := false

AniCalculations.OnStop - TButton.Enabled := true

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

Используйте 

 

Судя по всему "решения из коробки" нет.

Будем писать костыли... но считаю что наличие такой возможности по умолчанию для TScrollBox было бы не лишним.

Спасибо за ответы.

Тема открыта, может кто-то сталкивался с такой ситуацией. Не ленитесь делится опытом и кодом тут.

Вам же написали, используйте OnTap прекрасно работает, не мешает при скроле.

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

Используйте 

 

Судя по всему "решения из коробки" нет.

Будем писать костыли... но считаю что наличие такой возможности по умолчанию для TScrollBox было бы не лишним.

Спасибо за ответы.

Тема открыта, может кто-то сталкивался с такой ситуацией. Не ленитесь делится опытом и кодом тут.

Вам же написали, используйте OnTap прекрасно работает, не мешает при скроле.

Вы хотите сказать что это не костыль?

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

Вы хотите сказать что это не костыль?

использовать специальное событие это костыль? на windows это событие не отловить, т.к. это для мобильных платформ

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

 

Используйте 

 

Судя по всему "решения из коробки" нет.

Будем писать костыли... но считаю что наличие такой возможности по умолчанию для TScrollBox было бы не лишним.

Спасибо за ответы.

Тема открыта, может кто-то сталкивался с такой ситуацией. Не ленитесь делится опытом и кодом тут.

Вам же написали, используйте OnTap прекрасно работает, не мешает при скроле.

Вы хотите сказать что это не костыль?

 

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

Tap - Нажатие

Ссылка на комментарий
  • 0
В ‎12‎.‎02‎.‎2016 в 17:28, Равиль Зарипов (ZuBy) сказал:

использовать специальное событие это костыль? на windows это событие не отловить, т.к. это для мобильных платформ

В Windows вся проблема. Как известно, в этой ОС можно нажимать как мышью, так и пальцем. Вопрос: как сделать так, чтобы OnTap срабатывал не только на палец, но и на мышь?

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

В Windows вся проблема. Как известно, в этой ОС можно нажимать как мышью, так и пальцем. Вопрос: как сделать так, чтобы OnTap срабатывал не только на палец, но и на мышь?

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

Но это не точно, нужно тестить

 

Ссылка на комментарий
  • 0
В 12.02.2016 в 15:38, zairkz сказал:

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

Tap - Нажатие

Костыль и еще какой
потому что основная идея "один код для разных устройств" - идет лесом (не работает)

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

Для Win32/64 - use VCL

Для Android - use Android Studio

Для Mac - use XCode

Ссылка на комментарий
  • 0
В 03.01.2022 в 22:46, Grihan сказал:

Костыль и еще какой
потому что основная идея "один код для разных устройств" - идет лесом (не работает)

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

Для Win32/64 - use VCL

Для Android - use Android Studio

Для Mac - use XCode

ну не так все плохо )

Для Win32/64, Mac, Linux - FMX

Для Android - Android Studio

я думаю так наиболее оптимально. 

 

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

Да можно под Андроид нормально писать, callback'ов не хватает единственное, а дальше все хорошо работает. Если как правильно тут написали не трогают кроссплатформенность, этим и не пахнет, для каждой платформы все равно приходиться много кода разного писать( Моё мнение!

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

надо четко понимать, что мы имеем в виду под кроссплатформенностью

если UI/UX - то как? мобилы и десктопы всяко отдельно стоят по интерфейсу и сценариям использования.

Сайты тоже разные морды имеют под разные разрешения

А вот модель данных и обмены с серверами - разницы особой нет

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

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

Ссылка на комментарий
  • 0
В 06.01.2022 в 18:52, OnePeople сказал:

Да можно под Андроид нормально писать, callback'ов не хватает единственное, а дальше все хорошо работает. Если как правильно тут написали не трогают кроссплатформенность, этим и не пахнет, для каждой платформы все равно приходиться много кода разного писать( Моё мнение!

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

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

Так и написанное в студии не будет работать если изменилось API androida. К каждой новой версии все равно надо подготавливать свое приложение хоть в студии, хоть в Делфи, хоть где то ещё.

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

Так и написанное в студии не будет работать если изменилось API androida. К каждой новой версии все равно надо подготавливать свое приложение хоть в студии, хоть в Делфи, хоть где то ещё.

так они не обязывают вводить api какое то время пока не обкатают новшества. а потом в play появляется это обязанность определенного api. а в делфи тянут до последнего с этим пока запрета не будет опубликовывать такие приложения. 

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

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

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

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

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

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

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

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

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

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