ListView animasyon kayıt girişi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
dogan
Üye
Mesajlar: 173
Kayıt: 17 Eki 2014 10:11

ListView animasyon kayıt girişi

Mesaj gönderen dogan »

İyi Akşamlar...

ListView ile ilgili araştıra yaparken tesadüfen gördüğüm ListBox daki animasyonu ListView uygulamayı başaramadım bu konuda yardımcı olabilirseniz sevinirim.

Video link altıncı dakikadan itibaren animasyonu görebilirsiniz...
https://www.youtube.com/watch?v=sF3Dt2djGVI

Kod: Tümünü seç

  
 public
 { Public declarations }
  procedure AddItem(S: String);
  end;

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
begin
  AddItem(Edit2.Text);
  Edit2.Text := 'Item' + IntToStr(ListBox1.Count);
end;

Kod: Tümünü seç

procedure TForm1.AddItem(S: String);
var
  I: TListBox1Item;
  OrginalHeight: Single;
begin
  I := TListBoxItem.Create(Self);
  I.Text := S;
  OrginalHeight := I.Height;
  I.Height := 0;
  I.Opacity := 0;
  ListBox1.InsertObject(0, 1);
  I.Animate.Float('Height', OrginalHeight, 0.5);
  I.Animate.Float('Opacity', OrginalHeight, 1, 0.5);
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: ListView animasyon kayıt girişi

Mesaj gönderen mrmarman »

Merhaba.

ListBox için dahi çalıştıramadın değil mi? Verdiğin kod hatalı çünkü.

Sana bir ilüzyon sunucam onu kullanabilirsin. Aslında FireMonkey'i Android uygulamaları dışında kullanmıyorum çünkü.

// Bu senin istediğinin çalışan hali TListBox içindir.

Kod: Tümünü seç

procedure TForm1.AddItem(S: String);
var
  I: TListBoxItem;
  OrginalHeight: Single;
begin
  I := TListBoxItem.Create(ListBox1);
  I.Text := S;
  OrginalHeight := I.Height;
  I.Height := 0;
  I.Opacity := 0;
  ListBox1.InsertObject(0, I);
  I.AnimateFloat('Height', OrginalHeight, 0.5);
  I.AnimateFloat('Opacity', 1, 0.5);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  AddItem( Format('Satir-%.2d', [ListBox1.Items.Count]) );
end;
// Bu da istediğin TListView için olan önerdiğim ilüzyon.

Kod: Tümünü seç

procedure AddListViewItem(S: String; ListView:TListView);
  procedure bekle( miliSaniyeSure: Cardinal );
  Var
    zaman : Cardinal;
  begin
    zaman := TThread.GetTickCount + miliSaniyeSure;
    while TThread.GetTickCount < zaman do
    begin
      Application.ProcessMessages;
      Sleep(1);
    end;
  end;
var
  lwItem: TListViewItem;
  I : Integer;
begin
  lwItem := TListViewItem.Create;
  lwItem := ListView.Items.Add;
  lwItem.Height := 1;
  lwItem.Text   := S;
  for i := 1 to 30 do
  begin
    lwItem.Height := i;
    ListView.Repaint;
    bekle(10);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  AddListViewItem( Format('Satir-%.2d', [ListView1.Items.Count]), ListView1 );
end;
Resim
Resim ....Resim
Cevapla