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

[TTabControl] Переключение вкладок TabControl через Pan Event

Вопросы

Добрый день!

Однажды на форуме обсуждалась тема как сделать переключение вкладок TabControl  с анимацией через TActionList.

Сейчас возникла необходимость переключать вкладки через жест pan? т.е. чтобы вкладка двигалась за пальцем пользователя (как это сделано практически во всех мобильных приложениях, например в фейсбуке. Ниже скрин, на котором показаны по половине обе вкладки, они в этот момент перетаскиваются пальцем).

Это реально сделать? Если да, то как? Я уже подозреваю, что табом такого не сделаешь, а только широкой панелью, разделенное на сектора.

post-172-0-80732600-1417850662_thumb.jpe

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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


  • Похожий контент

    • От IgorK11
      android, есть listview, при нажатии на элемент в строке по ItemClickEx открывается другая закладка в приложении.
      Теперь задача добавить другие действия по longtap, не открывая закладку .
      После Gesture вызывается: tap, click, change.
      если Gesture не срабатывает(обычное нажатие) то в Tap и click  Selected еще не обновленный, да ещё  следить за сторонними нажатиями нужно.
      Если Gesture срабатывает то идет два change, что не подходит так как откроется закладка на первом change.
      Уже вроде всё перепробовал не могу понять как сделать Что я пропустил?
       
      накидал небольшую тестилку событий:
      clic:

      LongTap:

      Scroll:

       
      testLVGest.zip
    • От nassl
      Нужна помощь!
      Все перепробовал, не выходит каменный цветок...
      На форме лежит скрытый компонент THUETrackBar.
      Хочется реализовать следующий функционал на с++ (fmx): свайп вверх по любому месту экрана - делает компонент THUETrackBar видимым, и двигает его ползунок вверх, свайп  вниз - соответственно вниз.
      этот код не фурычит в процессе свайпа, только по завершении
       
      void __fastcall TForm1::windGesture(TObject *Sender, const TGestureEventInfo &EventInfo, bool &Handled) { switch (EventInfo.GestureID) { case sgiUp: TmpBar->Visible=true; TmpBar->Value++; break; case sgiDown: TmpBar->Visible=true; TmpBar->Value--; break; case igiLongTap: TmpBar->Visible=true;Location_x=EventInfo.Location.x; break; } } Хотел использовать свойство EventInfo.Location.x, но значение меняется только по окончании свайпа. 
       
       
    • От tLink
      Всем доброго времени суток,
      Столкнулся с проблемой на iOS. На форме TabControl, на одной из вкладок лежит MapView (примерчик приложил). Если "свернуть/развернуть" приложение и походить по вкладкам, то пропадают иконки у TabControl, показывает как чёрные квадраты. Иконки установлены через ImageList. Такой же эффект и у ListView/Image на соседних вкладках. Можете что-то подсказать?
       
      project1 (2).rar
    • От x11
      У TTabControl есть пара элементов TTabItem.
      Нужно с анимацией переключаться между ними.
      В ActionList добавил стандартный Action - ChangeTabAction и создал процедуру:
      procedure TfmMain.ChangeTab(ATab: TTabItem); begin ChangeTabAction1.Tab := ATab; ChangeTabAction1.ExecuteTarget(self); end;  
      Проблема в том, что при переключении с первой на вторую вкладку TTabItem анимации нет.
      А вот если переключаешься обратно на первую вкладку, то анимация есть.
      Но... проблема проявляется только на Андроид-устройстве. На Windows переключаение выполняется с анимацией в обе стороны.
       
    • От Rustam Bikeev
      Суть проблемы следующая: после перехода с одной вкладки на другую в tabcontrol страница не отображается, фактически она переключается но на экране отображается предыдущая вкладка с которой был переход, ровно до той поры пока на что нибудь не клацнешь, нужно либо нажать на кнопку в тулбаре либо открыть multiview. После того как я первый раз с этим столкнулся я так и делал программно открывал и закрывал multiview, но не могу же я так делать постоянно, нужно решить проблему. Для подробности напишу, что есть основной tabcontrol в котором вкладки открываются из multiview, во вкладках есть вложенные tabcontrol-ы, со своими страницами в основном по 2 страницы. 
      Зря я начал делать приложения в делфи... чем дальше в лес тем больше дров.
    • От Макс Войтенко
      Хотел сделать вот так (1 скриншот)

      Выбраная вкладка (аккаунты): иконка красная. А остальные вкладки чтобы иконка была серая. (как шрифт ниже).
      Подскажите как решить?
    • От Anasazi
      Доброго времени суток! Есть приложение в котором используется TWebbrowser, хотел сделать чтобы при свайпе справа-налево выполнялся WebBrowser.GoBack, но обнаружил что жесты работают везде кроме TWebbrowser. Подскажите пожалуйста есть ли какое-либо решение этой проблемы? RAD Studio Berlin Update 1.
    • От ENERGY
      Программа имеет большое кол. элементов интерфейса и много экранов.
      Поэтому я сделал такую вещь - Таб контрол, на котором лежит часть постоянно загружаемого интерфейса, и одна закладка (tabPage) куда загружаются фреймы - там лежат редко используемые экраны,
      т.е. фрэйм создаю  в runtime, ставлю фрэйму MyFrame.Parent := FrameTabPage и показываю этот таб кодом  TabControl.SetActiveTabWithTransition
      Юзер ушел с этой страницы я убираю фрейм кодом MyFrame.Parent := nil
      Все работает, но  проблема в том что это сильно подтормаживает систему - в результате анимация Slide таба двигается рывками. Тормозит на этапе MyFrame.Parent := FrameTabPage, т.е. даже если я создам фрейм на этапе старта программы, то все равно будет тормозить на этом этапе MyFrame.Parent := FrameTabPage (видимо подгоняются размеры, на фрейме лежит ListBox с контролами ). .
      Если Parent фрэйма заранее поставить на нужный TabPage, то ничего не тормозит, но программа грузится дольше.
      Посоветуйте пожалуйста что можно тут придумать, ведь кто-то использует фреймы..
    • От rakhmet
      Вопрос: как определить, какое именно действие совершает пользователь - увеличивает или уменьшает?

       
       
      Ответ: на примере сэмпла, поставляемого в комплекте с Delphi, в файле C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Mobile Snippets\InteractiveGestures\ImageZoom\ImageZoomU.pas можно попробовать заменить одну часть процедуры:
      begin { zoom the image } LImage := TImage(LObj.GetObject); LImageCenter := LImage.Position.Point + PointF(LImage.Width / 2, LImage.Height / 2); LImage.Width := LImage.Width + (EventInfo.Distance - FLastDistance); LImage.Height := LImage.Height + (EventInfo.Distance - FLastDistance); LImage.Position.X := LImageCenter.X - LImage.Width / 2; LImage.Position.Y := LImageCenter.Y - LImage.Height / 2; end; на другую:
      begin { zoom the image } if EventInfo.Distance > FLastDistance then showmessage('zoom in') else showmessage('zoom out'); end;  
      Что с этим делать дальше — думаю, объяснять излишне.
       
       
      Если кто знает более элегантное решение, не основанное на вычислении дистанции, — смело делитесь, не стесняйтесь.
    • От Dinkin
      Добрый вечер!
      Не подскажете, есть ли в  TabControl кнопки закрыть вкладку, на подобие закрытия вкладок браузера?....если нет, то как луче всего их организовать?
  • Последние посетители   0 пользователей онлайн

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

×
×
  • Создать...