2013-09-27 1 views
3

Для моего приложения При показе новых форм я хотел бы, чтобы там был переходный слайд, когда они выглядят несколько похожими на то, как элементы табуляции могут появляться с переходами слайдов - ну, на самом деле в такой же способ.Сделайте вид с переходом на слайд

Я не могу найти никаких проблем с устранением неполадок или примеров, связанных с конкретным вопросом. Единственная работа, о которой я могу думать, - это просто использовать элемент управления вкладками для всех трех форм и поместить их в элемент управления вкладкой.

Я также пробовал функцию Form.animateFloatWait(), как обычно, с элементами управления на формах, но безрезультатно.

Как мне получить свои формы для просмотра?

+0

Это поможет получить код, в котором вы пытались и не удалось; Я думаю, что вы гораздо чаще получите ответ таким образом. Просто вставьте его в вопрос, но убедитесь, что вы обрезаете его до необходимого. – Johan

+0

Упс! Пока я не увидел тег ios, я почти предположил, что менее известная, но очень универсальная анимация ** Библиотека VCL ** называется [AnyiQuack] [1];) [1]: http://sourceforge.net/projects/ accessquery/ –

ответ

3

С RAD Studio XE5, либо Delphi, либо C++ Builder, отображается форма fullScreen.

Поэтому, если нам нужно сделать какой-то эффект с переходом слайд, мы должны использовать TPanel для идеального исполнения:

  1. Добавить TPanel, сделать его как Полный экран, и не использовать Align, чтобы сделать это , Нам нужно инициализировать положение и размер TPanel в методе FormCreate.

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

метод FormCreate:

procedure TFormMainView.FormCreate(Sender: TObject); 
var 
newLocation : TPosition; 
begin 
    newLocation := self.btnLogin.Position; 
    newLocation.X := screen.Size.Width - self.btnLogin.Width - 5; 
    self.btnLogin.Position := newLocation; 

    self.PanelMainView.Position.X := 0; 
    self.PanelMainView.Position.Y := 0; 
    self.PanelMainView.Width := screen.Size.Width; 
    self.PanelMainView.Height := screen.Size.Height; 

    self.PanelLogin.Position.X := screen.Size.Width; 
    self.PanelLogin.Position.Y := 0; 
    self.PanelLogin.Width := screen.Size.Width; 
    self.PanelLogin.Height := screen.Size.Height; 
end; 

С Screen.Size, мы можем убедиться, что TPanel может соответствовать различному размеру устройства, скажем, Android телефонов. и установить кнопку на первой и второй точки зрения, для переключения слайдов анимации (кнопки на 1-й панели для переключения анимации скользить влево, и кнопку на 2 панели для переключения анимации скользить вправо.)

Назовите кнопку на первой панели как btnLogin, поэтому метод обработки события btnLoginClick: ВНИМАНИЕ: FloatAnimation1 для второй панели, FloatAnimation2 для 1-й панели, а «Имя свойства» обоих TFloatAnimation - «Position.X «это сделает анимацию на оси X:

procedure TFormMainView.btnLoginClick(Sender: TObject); 
begin 
    self.FloatAnimation2.StartValue := 0; 
    self.FloatAnimation2.StopValue := -1 * screen.Size.Width; 

    self.FloatAnimation1.StartValue := screen.Size.Width; 
    self.FloatAnimation1.StopValue := 0; 

    self.FloatAnimation2.start; 
    self.FloatAnimation1.Start; 
end; 

кнопка 2 панели под названием» btnBacktoMainVi ew ", а обработчик события:

procedure TFormMainView.btnBackToMainScreenClick(Sender: TObject); 
begin 
    self.FloatAnimation1.StartValue := self.PanelLogin.Position.X; 
    self.FloatAnimation1.StopValue := self.PanelLogin.Position.X + self.PanelLogin.Width; 

    self.FloatAnimation2.StartValue := self.PanelMainView.Position.X; 
    self.FloatAnimation2.StopValue := self.PanelMainView.Position.X + self.PanelMainView.Width; 

    self.FloatAnimation1.Start; 
    self.FloatAnimation2.Start; 
end; 

См.? что мы сделали, это установить «statValue», «StopValue» объекта анимации и вызвать метод start, Панельный слайд настолько велик.

Возможно, этот способ - не лучший способ сделать переход, но он работает и отлично работает. Я использовал аналогичный способ обработки нескольких видов в приложении Win32 за эти 10 лет, и эффект хороший.

Единственная разница в том, что я должен использовать TTimer и Application.ProcessMessage, чтобы убедиться, что анимация в Win32 работает. (Форма проекта, конечно).

И я протестировал этот путь в XE5 для iOS или Android и работал на любой платформе. Поделитесь с всем.

+0

Плюс это решение может быть использовано и в Android! –

+0

Используется TLayout для размещения всех элементов управления. В качестве дочернего компонента «главного экрана» TLayout я также использовал TPanel. Выделили TPanel цвет фона и TShadowEffect. Наконец, я отправил элемент управления TPanel на все остальные элементы управления. Затем я создал анимацию для TLayout. Прекрасно работает! Причина, по которой я не использовал TPanel вместо TLayout, состоял в том, что ListBoxes внутри TPanel испытывал большой лагг при прокрутке. – ThisGuy

+0

@ DenniesЧанг вы можете поместить полный код для этого решения !? im действительно смешался !! –

-1

Вы можете просто попробовать грубую силу. IE. За цикл, который изменяет размер панели до тех пор, пока она не заполнит требуемую область. Я не очень много работал с анимированными элементами управления, но я немного поиграл с элементами управления VCL из программного обеспечения TMS (http://www.tmssoftware.com/site/advsmoothtilelist.asp). У них может быть что-то, что вы могли бы использовать.

+1

Этот вопрос касается iOS, что означает, что это FMX, а не VCL. VCL - только для Windows. –

 Смежные вопросы

  • Нет связанных вопросов^_^