2013-12-18 1 views
0

Я использую Delphi XE5 для создания мобильного приложения Delphi Firemonkey.Mobile Firemonkey - Animate Listbox (fly left)

Есть ли способ сделать весь список летать слева при выборе предмета с детьми?

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

+1

Вместо того, чтобы нажимать отрицательный, как насчет того, чтобы рассказывать мне, что вам не нравится в моем сообщении. Не спрашивая примеров, я спрашиваю направление – JakeSays

+0

, что вы пробовали до сих пор? У вас есть код, чтобы показать нам? – RBA

+2

@RBA - НЕТ, я искал и не нашел никакого направления на хрипе, чтобы начать. Как говорится в моем комментарии, я не ищу код, я ищу направление. Мне нравится читать и прилагать усилия, просто не знаю, с чего начать – JakeSays

ответ

3

из покинул

Listbox1.AnimateFloat('Position.x', -ListBox1.Width, 1.0); 

в правой

Listbox1.AnimateFloat('Position.x', 0, 1.0); 

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

Надеюсь, это поможет!

2

Вы можете использовать TTabControl.

procedure TMyForm.lvStationsItemClick(const Sender: TObject; 
    const AItem: TListViewItem); 
begin 
    MyTabControl.SetActiveTabWithTransition(DetailTab, TTabTransition.ttSlide, TTabTransitionDirection.tdNormal); 
end; 

Если вы хотите получить больше контроля над эффектом прокрутки (и гладкой прокрутки), посмотрите на мой TTabControlEx компонента из FireMonkey Extensions библиотеки. Ваш код будет выглядеть примерно так:

procedure TMyForm.lvStationsItemClick(const Sender: TObject; 
    const AItem: TListViewItem); 
begin 
    MyTabControl.SetActiveTabWithTransitionEx(tabStationDetails, TTabTransitionDirection.tdNormal, TInterpolationType.itCubic, 0.2, 1, TAnimationType.atIn); 
end; 
+0

norgepaul благодарит за ответ. Ваш пример предполагает размещение ListBox в TTabControl? – JakeSays

+0

@MrNegative - вы можете оставить все, что захотите, на таблицах. Если вы показываете больше нескольких записей, я бы предложил использовать TListView, а не TListBox из-за проблем с производительностью, связанных с TListBox. – norgepaul