ophion Опубликовано 11 февраля, 2016 Поделиться Опубликовано 11 февраля, 2016 Добрый день. В рантайме создаются TButton и помещаются в TVertScrollBox. Если во время прокручивания нажать пальцем на TButton, то срабатывает событие OnClick. Собственно вопрос... как избежать такого поведения? Т.е. как разрешить нажатие на кнопки только после того, как прокручивание остановилось? МихаилЪ чайковЪ 1 Цитата Ссылка на комментарий
0 haword Опубликовано 11 февраля, 2016 Поделиться Опубликовано 11 февраля, 2016 никак. я уже писал про это. так же и срабатывают комбобоксы если они есть в списке. все проблемы лезут от того что обработка событий в мобильной версии происходят как в настольной, то есть при нажатии на объект а не при отпускании. если бы событие надатия обрабатывали при отпускании контрола тогда можно было бы отследить его перемещение и не дать сработать событию. я делал это переписыванием в исходниках контрола событий onmousedown onmousemove onmouseup. Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 11 февраля, 2016 Модераторы Поделиться Опубликовано 11 февраля, 2016 для мобильных устройств есть специальное событие OnTap в случае с комбобокс оно не поможет а вот для кнопок самое то Kitty, enatechno и zairkz 3 Цитата Ссылка на комментарий
0 ophion Опубликовано 12 февраля, 2016 Автор Поделиться Опубликовано 12 февраля, 2016 Судя по всему "решения из коробки" нет. Будем писать костыли... но считаю что наличие такой возможности по умолчанию для TScrollBox было бы не лишним. Спасибо за ответы. Тема открыта, может кто-то сталкивался с такой ситуацией. Не ленитесь делится опытом и кодом тут. Цитата Ссылка на комментарий
0 Кирилл Опубликовано 12 февраля, 2016 Поделиться Опубликовано 12 февраля, 2016 (изменено) У TVertScrollBox есть AniCalculations. Можно попробовать: AniCalculations.Animation := true; и сделать обработчики на события: AniCalculations.OnStart - TButton.Enabled := false AniCalculations.OnStop - TButton.Enabled := true Изменено 12 февраля, 2016 пользователем Кирилл Цитата Ссылка на комментарий
0 zairkz Опубликовано 12 февраля, 2016 Поделиться Опубликовано 12 февраля, 2016 Используйте Судя по всему "решения из коробки" нет. Будем писать костыли... но считаю что наличие такой возможности по умолчанию для TScrollBox было бы не лишним. Спасибо за ответы. Тема открыта, может кто-то сталкивался с такой ситуацией. Не ленитесь делится опытом и кодом тут. Вам же написали, используйте OnTap прекрасно работает, не мешает при скроле. Цитата Ссылка на комментарий
0 ophion Опубликовано 12 февраля, 2016 Автор Поделиться Опубликовано 12 февраля, 2016 Используйте Судя по всему "решения из коробки" нет. Будем писать костыли... но считаю что наличие такой возможности по умолчанию для TScrollBox было бы не лишним. Спасибо за ответы. Тема открыта, может кто-то сталкивался с такой ситуацией. Не ленитесь делится опытом и кодом тут. Вам же написали, используйте OnTap прекрасно работает, не мешает при скроле. Вы хотите сказать что это не костыль? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 12 февраля, 2016 Модераторы Поделиться Опубликовано 12 февраля, 2016 Вы хотите сказать что это не костыль? использовать специальное событие это костыль? на windows это событие не отловить, т.к. это для мобильных платформ Kitty 1 Цитата Ссылка на комментарий
0 zairkz Опубликовано 12 февраля, 2016 Поделиться Опубликовано 12 февраля, 2016 Используйте Судя по всему "решения из коробки" нет. Будем писать костыли... но считаю что наличие такой возможности по умолчанию для TScrollBox было бы не лишним. Спасибо за ответы. Тема открыта, может кто-то сталкивался с такой ситуацией. Не ленитесь делится опытом и кодом тут. Вам же написали, используйте OnTap прекрасно работает, не мешает при скроле. Вы хотите сказать что это не костыль? Какой же костыль)), костыль это при клике запускать таймер и если изменился фокус в течении секунды тогда что то делать, типа того, вот это костыль)) Tap - Нажатие Цитата Ссылка на комментарий
0 Fernando Ferreira Rocha Опубликовано 24 июля, 2017 Поделиться Опубликовано 24 июля, 2017 Does anyone have an example of how to solve this? Цитата Ссылка на комментарий
0 krapotkin Опубликовано 25 июля, 2017 Поделиться Опубликовано 25 июля, 2017 You can set HitTest = false for all controls to be inserted. Then you can scroll easyly. But you should handle Scrollbox.OnTap by yourself. Calculate which control is at tap coordinates, Then call tap handler of this control. Цитата Ссылка на комментарий
0 МихаилЪ чайковЪ Опубликовано 10 февраля, 2018 Поделиться Опубликовано 10 февраля, 2018 В 12.02.2016 в 17:28, Равиль Зарипов (ZuBy) сказал: использовать специальное событие это костыль? на windows это событие не отловить, т.к. это для мобильных платформ В Windows вся проблема. Как известно, в этой ОС можно нажимать как мышью, так и пальцем. Вопрос: как сделать так, чтобы OnTap срабатывал не только на палец, но и на мышь? Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 10 февраля, 2018 Модераторы Поделиться Опубликовано 10 февраля, 2018 1 час назад, МихаилЪ чайковЪ сказал: В Windows вся проблема. Как известно, в этой ОС можно нажимать как мышью, так и пальцем. Вопрос: как сделать так, чтобы OnTap срабатывал не только на палец, но и на мышь? программно определять мышь или тач и в соответствии результата динамически присваивать события. Но это не точно, нужно тестить Цитата Ссылка на комментарий
0 Grihan Опубликовано 3 января, 2022 Поделиться Опубликовано 3 января, 2022 В 12.02.2016 в 15:38, zairkz сказал: Какой же костыль)), костыль это при клике запускать таймер и если изменился фокус в течении секунды тогда что то делать, типа того, вот это костыль)) Tap - Нажатие Костыль и еще какой потому что основная идея "один код для разных устройств" - идет лесом (не работает) и получается, что при наличии костылей то там то тут становится нецелесообразным использовать FMX для написания приложений под мобилы Для Win32/64 - use VCL Для Android - use Android Studio Для Mac - use XCode Цитата Ссылка на комментарий
0 haword Опубликовано 6 января, 2022 Поделиться Опубликовано 6 января, 2022 В 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 OnePeople Опубликовано 6 января, 2022 Поделиться Опубликовано 6 января, 2022 Да можно под Андроид нормально писать, callback'ов не хватает единственное, а дальше все хорошо работает. Если как правильно тут написали не трогают кроссплатформенность, этим и не пахнет, для каждой платформы все равно приходиться много кода разного писать( Моё мнение! Цитата Ссылка на комментарий
0 krapotkin Опубликовано 6 января, 2022 Поделиться Опубликовано 6 января, 2022 надо четко понимать, что мы имеем в виду под кроссплатформенностью если UI/UX - то как? мобилы и десктопы всяко отдельно стоят по интерфейсу и сценариям использования. Сайты тоже разные морды имеют под разные разрешения А вот модель данных и обмены с серверами - разницы особой нет Цитата Ссылка на комментарий
0 OnePeople Опубликовано 7 января, 2022 Поделиться Опубликовано 7 января, 2022 Все верно, но есть ещё доступ к устройствам, блютуз, вай фай, доступ к уведомлениям и т.д., вот были бы методы управления не зависимые от платформы, а то на одной платформе нужно так с ними взаимодействовать, на другой по другому.( Имею ввиду почему это не обернуть, сделать например WifiUtils, BTUtils, NotificationUtils). Вы пишете один код, а в нутри в зависимости от платформы код меняется, хоть самому пиши) Цитата Ссылка на комментарий
0 haword Опубликовано 9 января, 2022 Поделиться Опубликовано 9 января, 2022 В 06.01.2022 в 18:52, OnePeople сказал: Да можно под Андроид нормально писать, callback'ов не хватает единственное, а дальше все хорошо работает. Если как правильно тут написали не трогают кроссплатформенность, этим и не пахнет, для каждой платформы все равно приходиться много кода разного писать( Моё мнение! только проблема в том что при выходе новой версии андроид по написанное на делфи начинает падать и надо ждать новую версию делфи чтобы исправить это. андроид студия бесплатна и выходит часто, так что подготовится всегда можно успеть. Цитата Ссылка на комментарий
0 OnePeople Опубликовано 9 января, 2022 Поделиться Опубликовано 9 января, 2022 Так и написанное в студии не будет работать если изменилось API androida. К каждой новой версии все равно надо подготавливать свое приложение хоть в студии, хоть в Делфи, хоть где то ещё. Цитата Ссылка на комментарий
0 krapotkin Опубликовано 9 января, 2022 Поделиться Опубликовано 9 января, 2022 Ну, пишите на андроид студии, в чем проблема-то? Там же все кроссплатформенное. Хочешь - на айфон, хочешь - на линукс. Цитата Ссылка на комментарий
0 haword Опубликовано 10 января, 2022 Поделиться Опубликовано 10 января, 2022 18 часов назад, OnePeople сказал: Так и написанное в студии не будет работать если изменилось API androida. К каждой новой версии все равно надо подготавливать свое приложение хоть в студии, хоть в Делфи, хоть где то ещё. так они не обязывают вводить api какое то время пока не обкатают новшества. а потом в play появляется это обязанность определенного api. а в делфи тянут до последнего с этим пока запрета не будет опубликовывать такие приложения. Цитата Ссылка на комментарий
Вопрос
ophion
Добрый день.
В рантайме создаются TButton и помещаются в TVertScrollBox.
Если во время прокручивания нажать пальцем на TButton, то срабатывает событие OnClick.
Собственно вопрос... как избежать такого поведения? Т.е. как разрешить нажатие на кнопки только после того, как прокручивание остановилось?
Ссылка на комментарий
21 ответ на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.