x11 Опубликовано 30 декабря, 2017 Опубликовано 30 декабря, 2017 (изменено) У TTabControl есть пара элементов TTabItem. Нужно с анимацией переключаться между ними. В ActionList добавил стандартный Action - ChangeTabAction и создал процедуру: procedure TfmMain.ChangeTab(ATab: TTabItem); begin ChangeTabAction1.Tab := ATab; ChangeTabAction1.ExecuteTarget(self); end; Проблема в том, что при переключении с первой на вторую вкладку TTabItem анимации нет. А вот если переключаешься обратно на первую вкладку, то анимация есть. Но... проблема проявляется только на Андроид-устройстве. На Windows переключаение выполняется с анимацией в обе стороны. Изменено 30 декабря, 2017 пользователем x11 Цитата
0 Евгений Корепов Опубликовано 4 января, 2018 Опубликовано 4 января, 2018 (изменено) Для этого не нужно использовать муторную прокладку ActionList, у TabControl есть свои замечательные методы: TabControl.Next(TTabTransition.Slide, TTabTransitionDirection.Normal); // Следующий Таб TabControl.Previous(TTabTransition.Slide, TTabTransitionDirection.Reversed); // Предыдущий Таб TabControl.GotoVisibleTab(ATabIndex, TTabTransition.Slide, TTabTransitionDirection.Normal); // Переключение на произвольный Таб С помощью TTabTransition.Slide указываете тип переключения (анимация) и с помощью TTabTransitionDirection.Normal указываете направление анимации. Работает на всех платформах. Изменено 4 января, 2018 пользователем Евгений Корепов Цитата
0 x11 Опубликовано 4 января, 2018 Автор Опубликовано 4 января, 2018 Slide включен. Пробовал и direction менять. Цитата
0 Евгений Корепов Опубликовано 4 января, 2018 Опубликовано 4 января, 2018 31 минуту назад, x11 сказал: Slide включен. Пробовал и direction менять. Покажите код Цитата
0 x11 Опубликовано 4 января, 2018 Автор Опубликовано 4 января, 2018 Так в первом сообщении. Может Вы не поняли? Переключение работает. Но нет анимации. Цитата
0 Евгений Корепов Опубликовано 4 января, 2018 Опубликовано 4 января, 2018 27 минут назад, x11 сказал: Так в первом сообщении. Может Вы не поняли? Переключение работает. Но нет анимации. В вашем сообщении нет кода переключения с анимацией, вы используете глючную прокладку ActionList, в надежде что чужой код (заброшенный кстати несколько лет назад) выполнит за вас некую работу. Я же вам ответил вполне определенно и с примерами нужных методов для достижения результата. Цитата
0 x11 Опубликовано 4 января, 2018 Автор Опубликовано 4 января, 2018 2 минуты назад, Евгений Корепов сказал: вы используете глючную прокладку ActionList Вообще-то да, я именно про Action - ChangeTabAction и пишу. Цитата
0 x11 Опубликовано 4 января, 2018 Автор Опубликовано 4 января, 2018 Аааа, я неверно Вас понял. я подумал, что Вы пишите как раз про этот ChangeTabAction, т.е. там тоже есть slide и normal. 2 часа назад, Евгений Корепов сказал: TTabTransition.Slide, TTabTransitionDirection.Normal Стормозил. Попробую Ваш код позже. Спасибо. Цитата
0 x11 Опубликовано 4 января, 2018 Автор Опубликовано 4 января, 2018 (изменено) В общем, всё равно что-то не так с анимацией на Андроид-устройстве. Использую только GotoVisibleTab. tabRes - это переключение на следующую вкладку: procedure TfmMain.actParamsSearchShowExecute(Sender: TObject); begin if tabRes.IsSelected then begin TabControl1.GotoVisibleTab(tabParams.Index, TTabTransition.Slide, TTabTransitionDirection.Normal); exit; end; if tabParams.IsSelected then TabControl1.GotoVisibleTab(tabRes.Index, TTabTransition.Slide, TTabTransitionDirection.Normal); end; Одна и та же кнопка переключает туда или обратно (2 вкладки всего). Когда нажимаешь кнопку, то туда-сюда переключается с анимацией. А вот здесь (кнопка Вперед) переключается без анимации: procedure TfmMain.actOpenUpdateExecute(Sender: TObject); begin dm.UniConnection1.connect; LoadLV(lvObjects); TabControl1.GotoVisibleTab(tabRes.Index, TTabTransition.Slide, TTabTransitionDirection.Normal); end; А вот здесь (кнопка Назад) переключается с анимацией: procedure TfmMain.actPreviousTabActionExecute(Sender: TObject); begin ChangeTab(tabParams); end; procedure TfmMain.ChangeTab(ATab: TTabItem); begin TabControl1.GotoVisibleTab(ATab.Index, TTabTransition.Slide, TTabTransitionDirection.Normal); end; Изменено 4 января, 2018 пользователем x11 Цитата
0 x11 Опубликовано 4 января, 2018 Автор Опубликовано 4 января, 2018 Не могу понять, как заполнение ListView влияет анимацию TabControl? Цитата
0 x11 Опубликовано 4 января, 2018 Автор Опубликовано 4 января, 2018 В общем, решил криво - поменял местами. procedure TfmMain.actOpenUpdateExecute(Sender: TObject); begin ChangeTab(tabRes); dm.UniConnection1.connect; LoadLV(lvObjects); end; теперь переключение, а потом только наполнение ListView Цитата
0 Евгений Корепов Опубликовано 4 января, 2018 Опубликовано 4 января, 2018 Вот моя процедура переключения, все легко и просто: procedure TFormMain.SetActiveTab(ATabControl : TTabControl; ATabItem : TTabItem; ATransition : Boolean); Var ATabTransitionDirection : TTabTransitionDirection; ATabTransition : TTabTransition; begin if ATabControl.TabIndex = ATabItem.Index Then Exit; if ATransition then ATabTransition:=TTabTransition.Slide Else ATabTransition:=TTabTransition.None; if ATabControl.TabIndex < ATabItem.Index Then ATabTransitionDirection:=TTabTransitionDirection.Normal Else ATabTransitionDirection:=TTabTransitionDirection.Reversed; ATabControl.SetActiveTabWithTransition(ATabItem,ATabTransition,ATabTransitionDirection); end; Kitty 1 Цитата
0 x11 Опубликовано 4 января, 2018 Автор Опубликовано 4 января, 2018 Да у меня тоже все легко и просто, если нет наполнения ListView перед переключением. Цитата
Вопрос
x11
У TTabControl есть пара элементов TTabItem.
Нужно с анимацией переключаться между ними.
В ActionList добавил стандартный Action - ChangeTabAction и создал процедуру:
procedure TfmMain.ChangeTab(ATab: TTabItem); begin ChangeTabAction1.Tab := ATab; ChangeTabAction1.ExecuteTarget(self); end;Проблема в том, что при переключении с первой на вторую вкладку TTabItem анимации нет.
А вот если переключаешься обратно на первую вкладку, то анимация есть.
Но... проблема проявляется только на Андроид-устройстве. На Windows переключаение выполняется с анимацией в обе стороны.
Изменено пользователем x1112 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.