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

Что не правильно?


Axbor

Вопрос

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

У меня даже в Винде Rectangle отваливается, если чуть побыстрее мышью подвигать.

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

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

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

Изменено пользователем ZuBy
Ссылка на комментарий
  • 0
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;
}
//---------------------------------------------------------------------------

Добавил отмеченные строки, прекрасно работает.

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

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

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

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

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

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

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

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

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

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

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