Axbor Опубликовано 27 августа, 2015 Поделиться Опубликовано 27 августа, 2015 void __fastcall TForm3::Rectangle1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, float X, float Y) { isdown = true; oldx = Screen->MousePos().X; oldy = Screen->MousePos().Y; } //--------------------------------------------------------------------------- void __fastcall TForm3::Rectangle1MouseMove(TObject *Sender, TShiftState Shift, float X, float Y) { if(!isdown) return; Rectangle1->Position->X = Rectangle1->Position->X + (Screen->MousePos().X - oldx); Rectangle1->Position->Y = Rectangle1->Position->Y + (Screen->MousePos().Y - oldy); oldx = Screen->MousePos().X; oldy = Screen->MousePos().Y; } //--------------------------------------------------------------------------- void __fastcall TForm3::Rectangle1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, float X, float Y) { isdown = false; } //--------------------------------------------------------------------------- В windwos е работает нормально а вот на андроиде глюки. Старый способ не предлагать. Потому что старый способ не работает когда контролы перевернуто. Цитата Ссылка на комментарий
0 FIL Опубликовано 27 августа, 2015 Поделиться Опубликовано 27 августа, 2015 У меня даже в Винде Rectangle отваливается, если чуть побыстрее мышью подвигать. Скорее всего проблема в том, что событие перемещения возникает столь редко, что мышь/палец успевает убежать за пределы контрола. Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 27 августа, 2015 Модераторы Поделиться Опубликовано 27 августа, 2015 (изменено) на андроиде нужно скорей всего использовать жесты, а не события клавиш мыши Изменено 28 августа, 2015 пользователем ZuBy Цитата Ссылка на комментарий
0 Axbor Опубликовано 28 августа, 2015 Автор Поделиться Опубликовано 28 августа, 2015 на андроиде нужно скорей всего использовать жесты, а не события клавиш мыши Например?! Как с помощью жестов перетаскивать элементы? Цитата Ссылка на комментарий
0 Axbor Опубликовано 29 августа, 2015 Автор Поделиться Опубликовано 29 августа, 2015 (изменено) void __fastcall TForm3::Rectangle1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, float X, float Y) { isdown = true; oldx = Screen->MousePos().X; oldy = Screen->MousePos().Y; } //--------------------------------------------------------------------------- void __fastcall TForm3::Rectangle1MouseMove(TObject *Sender, TShiftState Shift, float X, float Y) { if(!isdown) return; 1) float dx = (Screen->MousePos().X - oldx); 2) float dy = (Screen->MousePos().Y - oldy); 3) if(dx > 5) 4) dx = 5; 5) if(dx < -5) 6) dx = -5; 7) if(dy > 5) 8) dy = 5; 9) if(dy < -5) 10) dy = -5; Rectangle1->Position->X = Rectangle1->Position->X + dx; Rectangle1->Position->Y = Rectangle1->Position->Y + dy; oldx = Screen->MousePos().X; oldy = Screen->MousePos().Y; } //--------------------------------------------------------------------------- void __fastcall TForm3::Rectangle1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, float X, float Y) { isdown = false; } //--------------------------------------------------------------------------- Добавил отмеченные строки, прекрасно работает. Изменено 29 августа, 2015 пользователем Axbor Axbor 1 Цитата Ссылка на комментарий
Вопрос
Axbor
В windwos е работает нормально а вот на андроиде глюки. Старый способ не предлагать. Потому что старый способ не работает когда контролы перевернуто.
Ссылка на комментарий
4 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.