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);
}