簡體   English   中英

通過幻燈片過渡顯示表單

[英]Make a Form show with a Slide Transition

對於我的應用程序,當顯示新表單時,我希望有一個過渡幻燈片,當它們看上去與Tab項在幻燈片過渡中的顯示方式有些相似時-實際上,是相同的方式。

我找不到有關特定問題的任何故障排除或示例。 我能想到的唯一解決方法是對所有三種表單都使用選項卡控件,並將它們放置在選項卡控件中。

我也嘗試過Form.animateFloatWait()函數,就像通常使用表單控件一樣,但無濟於事。

如何使表格在視圖中滑動?

使用DEL Studio或C ++ Builder的RAD Studio XE5,該窗體將全屏顯示。

因此,如果我們需要在幻燈片過渡上產生一些效果,則需要使用TPanel以獲得完美的性能:

  1. 添加一個TPanel,使其為全尺寸,並且不要使用align這樣做。 我們需要在FormCreate方法中初始化TPanel的位置和大小。

  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 Phone。 並在第一個和第二個視圖上設置一個按鈕,以切換幻燈片動畫(第一個面板上的按鈕將動畫切換到左側,第二個面板上的按鈕將動畫切換到右側。)

讓我們將第一個面板上的按鈕命名為btnLogin,因此處理btnLoginClick事件的方法是:注意:FloatAnimation1代表第二個面板,FloatAnimation2代表第一個面板,並且兩個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;

第二個面板的按鈕名為“ btnBacktoMainView”,事件處理程序為:

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方法,Panel幻燈片是如此出色。

也許這種方法不是進行視圖過渡的最佳方法,但它可以正常工作並表現完美。 在過去的10年中,我曾經使用類似的方式在Win32應用程序中處理多個視圖,效果很好。

唯一的區別是我必須使用TTimer和Application.ProcessMessage來確保Win32中的動畫正常工作。 (當然是表格項目)。

我在XE5中針對iOS或Android進行了這種測試,並且可以在兩種平台上使用。 與大家分享。

您可能只是嘗試蠻力。 IE瀏覽器 一個for循環,用於調整面板的大小,直到其填充所需的區域。 我在動畫控件方面工作不多,但是我在TMS軟件( http://www.tmssoftware.com/site/advsmoothtilelist.asp )的VCL控件中做了一些工作。 他們可能有您可以使用的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM