• 0
Sergiy_83

OnClick срабатывает не всегда!

Вопросы

Всем привет.

OnClick событие которое отлично подходит в моем случае. Но если палец хотя бы немножко увести ниже иил выше трекбара - OnClick при отпускании пальца не наступает.

Как быть? 

Android.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 ответов на этот вопрос

  • 0

Попробуйте OnTap или OnMouseUp.

Изменено пользователем Alex7wrt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
5 минут назад, Alex7wrt сказал:

Попробуйте OnTap или OnMouseUp.

И то и другое не работает при перетаскивании ползунка с одного места в другое. Что уже неприемлемо. К сожалению.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Если вы имеете ввиду, что событие OnClick (точнее говоря OnMouseUp) не наступает, когда палец находится за пределами контрола, то попробуте установить для контрола свойтсво AutoCapture:=True, чтобы он мог реагировать на события за его пределами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
TrackBar1->AutoCapture = True;
}

Все равно не работает. :(

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
9 часов назад, Sergiy_83 сказал:

Всем привет.

OnClick событие которое отлично подходит в моем случае. Но если палец хотя бы немножко увести ниже иил выше трекбара - OnClick при отпускании пальца не наступает.

Как быть? 

Android.

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

что делать? да хз ) извращаться. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
49 минут назад, haword сказал:

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

что-то не помню такого дефекта

я строил скролл по down-move-up

и все работало

 

Изменено пользователем krapotkin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
5 часов назад, krapotkin сказал:

что-то не помню такого дефекта

я строил скролл по down-move-up

и все работало

 

андроид, листвью, зажимаем итем, не отпускаем, тадам, сработал онитемклик. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

описание-то было другое

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В случае кнопки я еще понять могу. Типа я нажал, пожалел об этом, увел в сторону и отменил нажатие тем самым. Но трек бар узкий и это уже проблемы. Кстати когда происходит захват ползунка, он увеличивается в размерах,  двигается даже если палец за пределами и когда отпускаеш, ползунок опять уменьшается! А событие - фигушки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
51 минуту назад, Akad сказал:

выставляя предварительно флажок, что сейчас таскается этот бар

Вопрос в том, как понять когда он уже не таскается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
51 минуту назад, Sergiy_83 сказал:

Вопрос в том, как понять когда он уже не таскается.

MouseUp?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
43 минуты назад, Akad сказал:

MouseUp?

не работает при перетаскивании ползунка с одного места в другое. Что неприемлемо.

Писал об этом выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, Sergiy_83 сказал:

Писал об этом выше.

MouseUp контролла естественно не будет.  И я не о нём, а о форме.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 минуты назад, Akad сказал:

MouseUp контролла естественно не будет.  И я не о нём, а о форме.

Ну почему не будет. Он и куча других событий есть если клацнуть пальцем справа или слева от ползунка. Толку от этого только мало.

Не понимаю причем здесь форма. Форма большая мало ли когда я по ней клацну.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
44 минуты назад, Sergiy_83 сказал:

Не понимаю причем здесь форма. Форма большая мало ли когда я по ней клацну.

См. выше. Я всё описал.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
16 часов назад, Sergiy_83 сказал:

В случае кнопки я еще понять могу. Типа я нажал, пожалел об этом, увел в сторону и отменил нажатие тем самым. Но трек бар узкий и это уже проблемы. Кстати когда происходит захват ползунка, он увеличивается в размерах,  двигается даже если палец за пределами и когда отпускаеш, ползунок опять уменьшается! А событие - фигушки.

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Сделал то что надо на основе progressbar, получилось еще красивее.

Основа – rectangle, на ней progressbar у него HitTest = false и выравнивание по горизонтали. На rectangle повесил три события OnMouseDown, OnMouseMove и OnMouseLeave. У первых двух код устанавливает Value прогресбара в соответствии координатой пальца по оси X.  OnMouseLeave это основное действие которое выполняется после того как палец ушел за пределы или отрыв в любом месте. В моем случае это перемотка по файлу. Rectangle полезен когда progressbar узкий, для удобства использования. Цвет ему прозрачный, закруглить углы и получается довольно симпатичный контрЛ.

 

time.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

вот! это мое решение обычно. прямо по месту запилить нужное количество Trectangle и все сделать ручками ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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