FireMonkeyのTListBoxに項目をアニメーション効果をつけて追加する

Stack Overflowの「Animating the addition of a string to a ListBox in FireMonkey」より。

FireMonkeyのTListBoxに項目を追加するコードは次のようになります。

Delphi XE3のソースコード

/// <summary>
///   リストボックスに文字列を追加する
/// </summary>
/// <param name="S">
///   追加する文字列
/// </param>
procedure TForm1.AddItem(S: String);
var
  Item: TListBoxItem;
begin
  Item := TListBoxItem.Create(Self);
  Item.Parent := ListBox1;
  Item.Text := S;
end;

C++Builder XE3のソースコード

void TForm1::AddItem(const UnicodeString S)
{
  TListBoxItem* item = new TListBoxItem(this);
  item->Parent = ListBox1;
  item->Text = S;
}



AnimateFloatメソッドを使って、追加した項目の高さを1秒間で0から元の値に戻します。

Delphi XE3のソースコード

procedure TForm1.AddItem(S: String);
var
  Item: TListBoxItem;
  OldHeight : Single;
begin
  Item := TListBoxItem.Create(Self);
  Item.Parent := ListBox1;
  Item.Text := S;

  OldHeight := Item.Height;
  Item.Height := 0;
  Item.AnimateFloat('Height', OldHeight, 1);
end;

C++Builder XE3のソースコード

void TForm1::AddItem(const UnicodeString S)
{
  TListBoxItem* item = new TListBoxItem(this);
  item->Parent = ListBox1;
  item->Text = S;

  float oldHeight = item->Height;
  item->Height = 0;
  item->AnimateFloat("Height", oldHeight, 1);
}







AnimateFloatメソッドを使って、追加した項目の不透明度を1秒間で透明から不透明に戻します。

Delphi XE3のソースコード

procedure TForm1.AddItem(S: String);
var
  Item: TListBoxItem;
begin
  Item := TListBoxItem.Create(Self);
  Item.Parent := ListBox1;
  Item.Text := S;

  Item.Opacity := 0;
  Item.AnimateFloat('Opacity', 1, 1);
end;

C++Builder XE3のソースコード

void TForm1::AddItem(const UnicodeString S)
{
  TListBoxItem* item = new TListBoxItem(this);
  item->Parent = ListBox1;
  item->Text = S;

  item->Opacity = 0;
  item->AnimateFloat("Opacity", 1, 1);
}








両方組み合わせると、追加した項目が上から徐々に表示されます。

Delphi XE3のソースコード

procedure TForm1.AddItem(S: string);
var
  Item : TListBoxItem;
  OldHeight : Single;
begin
  Item := TListBoxItem.Create(Self);
  Item.Parent := ListBox1;
  Item.Text := S;

  OldHeight := Item.Height;
  Item.Height := 0;
  Item.Opacity := 0;
  Item.AnimateFloat('Height', OldHeight, 1);
  Item.AnimateFloat('Opacity', 1, 1);
end;

C++Builder XE3のソースコード

void TForm1::AddItem(const UnicodeString S)
{
  TListBoxItem* item = new TListBoxItem(this);
  item->Parent = ListBox1;
  item->Text = S;

  float oldHeight = item->Height;
  item->Height = 0;
  item->Opacity = 0;
  item->AnimateFloat("Height", oldHeight, 1);
  item->AnimateFloat("Opacity", 1, 1);
}








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください