nassl
-
Постов
22 -
Зарегистрирован
-
Посещение
Активность репутации
-
nassl получил реакцию от Yarpda в Координата в процессе свайпа
Отвечу сам себе, чтобы не потерять .
Итак, хочется ловить жесты влево, вправо и после лонгтап считывать координаты точки касания. В частности изменяется размер TImage, который скрывается по окончании свайпа запуском анимации в которой Opacity меняется от 1 до 0}.
TPointF P, OldP;
void __fastcall TForm1::FormGesture(TObject *Sender, const TGestureEventInfo &EventInfo,
bool &Handled)
{
if (EventInfo.Flags.Contains(TInteractiveGestureFlag::gfBegin))
{ switch (EventInfo.GestureID) { case igiLongTap: OldP.y=EventInfo.Location.y; OldP.x=EventInfo.Location.x; }
}
else if(EventInfo.Flags.Contains(TInteractiveGestureFlag::gfEnd))
{//Жест закончен - не убирать, иначе не сработает TTouchAction::Up }
else
{switch (EventInfo.GestureID)
{case sgiRight: DosomethingRight(); break;
case sgiLeft: DosomethingLeft(); break;
case igiPan: P.y=EventInfo.Location.y; P.x=EventInfo.Location.x; break;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormTouch(TObject *Sender, const TTouches Touches, const TTouchAction Action)
{if (Action==TTouchAction::Up) //Палец убран
{// Обработка концовки свайпа, например
FloatAnimation1->Start();
}
}
void __fastcall TForm1::FloatAnimation1Finish(TObject *Sender)
{ Image->Visible=false;Image->Opacity=1;}
...........................................................
PS советы по улучшению кода приветствуются, но у меня получилось так.
-
nassl получил реакцию от Barbanel в Координата в процессе свайпа
Отвечу сам себе, чтобы не потерять .
Итак, хочется ловить жесты влево, вправо и после лонгтап считывать координаты точки касания. В частности изменяется размер TImage, который скрывается по окончании свайпа запуском анимации в которой Opacity меняется от 1 до 0}.
TPointF P, OldP;
void __fastcall TForm1::FormGesture(TObject *Sender, const TGestureEventInfo &EventInfo,
bool &Handled)
{
if (EventInfo.Flags.Contains(TInteractiveGestureFlag::gfBegin))
{ switch (EventInfo.GestureID) { case igiLongTap: OldP.y=EventInfo.Location.y; OldP.x=EventInfo.Location.x; }
}
else if(EventInfo.Flags.Contains(TInteractiveGestureFlag::gfEnd))
{//Жест закончен - не убирать, иначе не сработает TTouchAction::Up }
else
{switch (EventInfo.GestureID)
{case sgiRight: DosomethingRight(); break;
case sgiLeft: DosomethingLeft(); break;
case igiPan: P.y=EventInfo.Location.y; P.x=EventInfo.Location.x; break;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormTouch(TObject *Sender, const TTouches Touches, const TTouchAction Action)
{if (Action==TTouchAction::Up) //Палец убран
{// Обработка концовки свайпа, например
FloatAnimation1->Start();
}
}
void __fastcall TForm1::FloatAnimation1Finish(TObject *Sender)
{ Image->Visible=false;Image->Opacity=1;}
...........................................................
PS советы по улучшению кода приветствуются, но у меня получилось так.
-
nassl получил реакцию от #WAMACO в Настройки RAD studio 10.3
Отвечу себе сам.
Для сброса Rad Studio 10.3 к дефолтным настройкам удаляем раздел реестра
HKEY_CURRENT_USER\Software\Embarcadero\BDS\20.0
После перегрузки системы все будет OK.
-
nassl отреагировална krapotkin в Размеры TPanel
во время FormCreate еще не определены размеры
лучше в OnShow, или OnResize