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 в случае с комбобокс оно не поможет а вот для кнопок самое то enatechno, Kitty и 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 ответ на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.