5

私のアプリケーションでは、新しいフォームを表示するときに、タブ アイテムがスライド トランジションで表示される方法と似たようなトランジション スライドが必要です。実際には同じ方法です。

特定の問題に関するトラブルシューティングや例が見つかりません。私が考えることができる唯一の回避策は、3 つのフォームすべてにタブ コントロールを使用し、それらをタブ コントロール内に配置することです。

Form.animateFloatWait()また、フォームのコントロールで通常行うように機能を試しましたが、役に立ちませんでした。

ビューでフォームをスライドさせるにはどうすればよいですか?

4

2 に答える 2

4

RAD Studio XE5 では、Delphi または C++ Builder のいずれかで、フォームが全画面表示されます。

したがって、スライド トランジションで効果を出す必要がある場合は、完璧なパフォーマンスを得るために TPanel を使用する必要があります。

  1. TPanel を追加してフルサイズにし、そのために align を使用しないでください。FormCreate メソッドで TPanel の位置とサイズを初期化する必要があります。

  2. フォームの 2 番目の TPanel を作成します。2 番目の TPanel を最初の TPanel の子にしないでください。2 番目の 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 など) に適合することを確認できます。そして、最初と 2 番目のビューにボタンを設定して、スライド アニメーションを切り替えます (1 番目のパネルのボタンはアニメーションを左にスライドするように切り替え、2 番目のパネルのボタンはアニメーションを右にスライドするように切り替えます)。

最初のパネルのボタンに btnLogin という名前を付けると、btnLoginClick イベントを処理するメソッドは次のようになります。これにより、アニメーションが 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」という名前の 2 番目のパネルのボタン、およびイベント ハンドラーは次のとおりです。

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" を設定し、開始メソッドを呼び出すことで、パネル スライドはとても素晴らしいものになりました。

おそらく、この方法はビューの遷移を行うための最良の方法ではありませんが、機能し、完璧に機能します。この 10 年間、Win32 アプリケーションで複数のビューを処理するために同様の方法を使用していましたが、その効果は良好です。

唯一の違いは、TTimer と Application.ProcessMessage を使用して、Win32 でアニメーションが機能することを確認する必要があることです。(もちろんフォームプロジェクト)。

そして、私は iOS または Android 用の XE5 でこの方法をテストし、どちらのプラットフォームでも動作しました。みんなでシェア。

于 2013-10-02T15:27:03.393 に答える