ListView animasyon gelmesi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
ListView animasyon gelmesi
Selam arkadaşlar formda iki tane ListView kullanıyorum ListView biri sürekli işlem yaparken diğer ListView buton yardımıyla formun sağ tarafından sola doğru gelmesini nasıl sağlarım.
Re: ListView animasyon gelmesi
Formun üzerine bir tane Timer koyun. Timer'ın Enabled değerini False, Interval değerini 10 yapın. Buttonun OnClick olayında Timer'ın Enabled değerini True atayın. Timer'ın OnTimer olayına aşağıdakileri yazarsanız, butona bastığınızda ListView2 sola doğru hareket edecektir. Formun en soluna geldiğinde duracaktır:
Timer'ın Interval değeri ile oynayıp Listview'ın daha hızlı yada daha yavaş hareket etmesini sağlayabilirsiniz.
Not: Formun DoubleBuffered özelliğini True yapmanızı tavsiye ederim...
Kod: Tümünü seç
if ListView2.Left > 0 then
ListView2.Left := ListView2.Left - 1
else
Timer1.Enabled := False;
Not: Formun DoubleBuffered özelliğini True yapmanızı tavsiye ederim...
There's no place like 127.0.0.1
Re: ListView animasyon gelmesi
Teşekkür ederim...
Re: ListView animasyon gelmesi
Selam listview de kayıt adeti yaklaşık 50 ve üstü olunca animasyon kasıyor, kasmaması için ne yapabilirim veya başka bir alternatif var mı?
Kod: Tümünü seç
if ListView2.Left > 0 then
ListView2.Left := ListView2.Left - 1
else
Timer1.Enabled := False;
Re: ListView animasyon gelmesi
İlüzyon ile :
(1) Listview'in konumunu formun dışındaki bir LEFT / TOP konumuna koyup resmini cekin,
(2) Bu resmi animasyon ile nihai olması gereken yere getirin / taşıyın / renklendirin vs.
(3) Dilerseniz küçükten zoom yaparak büyütebilirsiniz de... vs vs varyate size bağlı
(4) Son noktaya ulaşınca gerçek ListView'i resimle aynı LEFT / TOP değerini verip ön plana getirin. Resin Visible özelliğini de False edin gitsin.
İşte animasyon...
(1) Listview'in konumunu formun dışındaki bir LEFT / TOP konumuna koyup resmini cekin,
(2) Bu resmi animasyon ile nihai olması gereken yere getirin / taşıyın / renklendirin vs.
(3) Dilerseniz küçükten zoom yaparak büyütebilirsiniz de... vs vs varyate size bağlı
(4) Son noktaya ulaşınca gerçek ListView'i resimle aynı LEFT / TOP değerini verip ön plana getirin. Resin Visible özelliğini de False edin gitsin.
İşte animasyon...

Re: ListView animasyon gelmesi
mrmarman yazdı:İlüzyon ile :
(1) Listview'in konumunu formun dışındaki bir LEFT / TOP konumuna koyup resmini cekin,
(2) Bu resmi animasyon ile nihai olması gereken yere getirin / taşıyın / renklendirin vs.
(3) Dilerseniz küçükten zoom yaparak büyütebilirsiniz de... vs vs varyate size bağlı
(4) Son noktaya ulaşınca gerçek ListView'i resimle aynı LEFT / TOP değerini verip ön plana getirin. Resin Visible özelliğini de False edin gitsin.
İşte animasyon...

Re: ListView animasyon gelmesi
- Zorluk görecelihido yazdı:Selam hocam cevap için teşekkür ederim fakat bu işlem daha zor değil mi?

- Performans istersen, bu çözüm maksimuma yakın performans sağlar.
- Maksimum performans için DirectX / OpenGL vs. ki bunu lafa söze hiç karıştırmıyorum bile...
Aşağıdaki bu soruna göre tasarladığım procedure bir dene istersen...
Form'a bir tane TImage koy visible özelliğini de false yap bir kenarda beklesin.. Açıklamalarını Procedure içine yerleştirdim..

Kod: Tümünü seç
Procedure ListViewDoldur_Animasyon( ListView:TListView; Image: TImage );
Var
LAdim, TAdim : Integer;
begin
ListView.Visible := False; // Visible False iken daha hızlı veri girişi yapılabilinir.
// Burada ListView içeriğini doldurma işlerini yapıyoruz...
// ------------------------------------
// ....
// ------------------------------------
ListView.Visible := True;
Application.ProcessMessages;
// ListView'in orjinal yerinde ekran resmi kopyasını alıyoruz.
Image.Width := ListView.Width;
Image.Height := ListView.Height;
Image.Canvas.CopyRect( Image.Canvas.ClipRect, ListView.Canvas, Image.Canvas.ClipRect );
ListView.Visible := False;
// ListView'in resmini hemen ekranın dışında bir yere taşıyoruz...
Image.Left := Application.MainForm.Width + 10;
Image.Top := Application.MainForm.Height + 10;
// Orjinal konuma olan uzaklığına göre yaklaşma hızı/adımını hesaplıyoruz.
LAdim := Image.Left div ListView.Left;
TAdim := Image.Top div ListView.Top;
Image.Visible := True;
// Form küçükse küçük adımlarla gelir.
// Form büyükse büyük adımlarla gelir.
while Image.Left > ListView.Left + LAdim do
begin
Image.Left := Image.Left - LAdim;
Image.Top := Image.Top - TAdim;
Application.ProcessMessages;
sleep(50);
end;
ListView.Visible := True;
Image.Visible := False;
end;
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ListViewDoldur_Animasyon( ListView1, Image1 );
end;