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

Как поменять два ListBoxItem’а между собой, используя анимацию?


Andrey Efimov

Вопрос

  • Модераторы

Приветствую.

 

Задача такая:

Поменять местами два (любых) ListBoxItem’а используя при этом анимацию(AnimateFloat или другую). Т.е. добавить плавности смены.

 

Что нужно учитывать:

Каждый из Итемов, должен принимать новый Index. 

Пример:

У нас есть два Итема «ListBoxItem1(Index=0) и ListBoxItem2(Index=1)».

После обмена должно получиться «ListBoxItem2(Index=0) и ListBoxItem1(Index=1)».

Т.е. если мы меняем местами два листбокса, то меняем их полностью, учитывая индексы.

 

Что я пытался использовать:

  1. «FMX.ListBox.TCustomListBox.ItemsExchange», всё меняется, но нет анимации.
  2. Изменять Индекс у обоих Итемов вручную, но опять же нет анимации смены и как выяснил потом, это тот же принцип, что у первого пункта.
  3. Пытался менять Итемы с помощью «AnimateFloat» управляя свойством «Position.X и Position.Y», всё отлично, но, как и ожидалось, Итемы меняются только визуально.

По сути, мне необходимо создать эффект перетаскивания, который является неким подобием Drag and Drop.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

А если воспользоваться сразу:

Пытался менять Итемы с помощью «AnimateFloat» управляя свойством «Position.X и Position.Y», всё отлично, но, как и ожидалось, Итемы меняются только визуально.

а потом:

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

(Ну или наоборот)

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

Нет, так не прокатывает, т.к. анимация начинает дёргаться. При ручной смене индекса, Итемы также меняют визуальное положение, просто без анимации. Т.е. Итем дважды пытается сменить свою позицию.

Ссылка на комментарий
  • 0
  • Администраторы
  • Вообще неправильно пытаться менять позицию итемов в TListBox, поскольку сам контрол TListBox отвечает за выравнивание и расстановку своих итемов. 
  • Вы же пытаетесь пойти против работы TListBox и по своему выравнивать итемы. В этом случае вам нужно создать наследника от TListBox и переопределить алгоритм выравнивания элементов.
Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

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