Merhaba daha önceki mesajımda listview ve listbox arasındaki hız farkından bahsetmiştim listboxu küçük veriler listview için daha büyük verilerde kullanılabilir olduğunu embercadero bahsediyordu hız farkı bununla alakalı diyordum ki projede listview kullanmamla beraber aynı yavaşlığın onda da olduğunu gördüm
web servis kullanıyorum aldığım bilgileri dönüyor ve listview içerisine ekliyorum artık webservisle bir bağlantım kalmıyor peki bu yavaşlığın sebebi ne olabilir?
listview içerisine web servis kullanmadan veri eklediğimde sorunsuzca hızlı kullanabiliyorum ancak web servisten veri aldığımda kilitlenmeler düşünmeler beklemeler ortaya çıkıyor aşağıda uyguladığım kod cümlesini gönderiyorum umarım ufak bir müdahale ile çözülür
procedure Tfrm_Main.cb_durum2Change(Sender: TObject);
var
LItem: TListViewItem;
I: Integer;
srvarizalistesi:ArrayOfServisarizalistesi;
ws:Service1Soap;
begin
ListView2.Items.Clear;
ListView2.BeginUpdate;
ws:=GetService1Soap(true,'',nil);
srvarizalistesi:=ws.servisarizagetir(wmkod,strtoint(sl_durum_id[cb_durum2.ItemIndex]));
for I := 0 to Length(srvarizalistesi)-1 do
begin
LItem := ListView2.Items.Add;
LItem.Text :=inttostr(srvarizalistesi.servis_id)+' - '+
srvarizalistesi.ariza_tanim;
LItem.Detail:='Servis No'+#9+ ': '+ inttostr(srvarizalistesi.servis_id)+#13+
'Makina'+#9+': '+srvarizalistesi.makinatanim+#13+
'Not'+#9+': '+srvarizalistesi.notu;
LItem.Detail:=LItem.Detail+#13+srvarizalistesi.notu;
end;
ListView2.EndUpdate;
end;
listview scroll yavaşlığı
- mustafasoy
- Üye
- Mesajlar: 154
- Kayıt: 02 Ağu 2013 05:00
- Konum: istanbul
- İletişim:
listview scroll yavaşlığı
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
- barisatalay
- Üye
- Mesajlar: 398
- Kayıt: 02 Nis 2013 05:43
- İletişim:
Re: listview scroll yavaşlığı
Detail olayını hiç kullanmadım ne işe yarıyor ekranda gösteriyor mu ?
Manuel listview doldururkende 2 kere .detail dolduruyor musunuz ?
Bu manuel işlemde webserviste gelen veriler ile aynı uzunluktamı ?
Manuel listview doldururkende 2 kere .detail dolduruyor musunuz ?
Bu manuel işlemde webserviste gelen veriler ile aynı uzunluktamı ?
Yeni bloğum: http://brsatalay.blogspot.com.tr/
Re: listview scroll yavaşlığı
Aslında listview yavaşlığı değil onun içine doldurmak istediğiniz anda ki işlemlerin yavaşlığı mevzu burada
Bununda nedeni web servisden aldığınız andaki yavaşlık bununda önüne HTTPRIO kullnarak geçebilirsiniz
HTTPRIO ile yüklemeyi deneyin verilerinizi
dikkatimi çekti
Şimdi öncelikle;
bir HTTPRIO ile çalışın ve,
yapacaksınız
HTTPRIO'nun afterexecutuna
yapın
GLOBAL_SOAPRESULTSTR bir string ifadedir ve bu stringe HTTPRIO' dan gelen xmli yüklüyoruz.
elinize bir xml gelecek geriye bunu parse etmek kalacak.Bununla da ilgili parse ettikten sonra muherrem hocanın ObjectOlustur adlı bir procedururu vardı onuda bir inceleyin
Ben bunları uygulyarak oldukça hızlı bir şekilde işlem yapıyorum fakat listviewa 5000 tane item eklemeye kalktığınız zaman donma olabilir bununda çözümü bir Thread yapısı kullanarak işin içinden çıkmak olacaktır
Scrol yavaşlığı değil de scrol bozukluğu var listviewda
Bunu da önlemenin yolunu henüz bulamadık
Bununda nedeni web servisden aldığınız andaki yavaşlık bununda önüne HTTPRIO kullnarak geçebilirsiniz
HTTPRIO ile yüklemeyi deneyin verilerinizi
Kod: Tümünü seç
ws:=GetService1Soap(true,'',nil);
dikkatimi çekti
Şimdi öncelikle;
bir HTTPRIO ile çalışın ve
Kod: Tümünü seç
ws:=GetService1Soap(false,'',HTTPRIO);
yapacaksınız
HTTPRIO'nun afterexecutuna
Kod: Tümünü seç
SOAPResponse: TStream);
var
Temp: TStringStream;
xml:txmldocument;
xmlnode:ixmlnode;
s:string;
begin
Temp := TStringStream.Create('');
try
Temp.CopyFrom(SOAPResponse, 0);
GLOBAL_SOAPRESULTSTR:=Temp.DataString; //xml parse işlemi için
resultxmlbul();//bu node bulma fonksiyonu parse işlemi için
finally
Temp.Free
end;
end;
GLOBAL_SOAPRESULTSTR bir string ifadedir ve bu stringe HTTPRIO' dan gelen xmli yüklüyoruz.
elinize bir xml gelecek geriye bunu parse etmek kalacak.Bununla da ilgili parse ettikten sonra muherrem hocanın ObjectOlustur adlı bir procedururu vardı onuda bir inceleyin
Ben bunları uygulyarak oldukça hızlı bir şekilde işlem yapıyorum fakat listviewa 5000 tane item eklemeye kalktığınız zaman donma olabilir bununda çözümü bir Thread yapısı kullanarak işin içinden çıkmak olacaktır
Scrol yavaşlığı değil de scrol bozukluğu var listviewda
Bunu da önlemenin yolunu henüz bulamadık
En son gaus tarafından 15 Ağu 2014 03:09 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
- mustafasoy
- Üye
- Mesajlar: 154
- Kayıt: 02 Ağu 2013 05:00
- Konum: istanbul
- İletişim:
Re: listview scroll yavaşlığı
evet aynı uzunlukta diyebiliriz 20 şer karakter diyebilirimbarisatalay yazdı:Detail olayını hiç kullanmadım ne işe yarıyor ekranda gösteriyor mu ?
ekranda göstermediğin yada göstermediğin bilgiyi kullanabiliyorsun örneğin adı soyad bilgilerini text inde gösterdin kullanıcı itemclick yaptığı zamanda detayını gösteriyorsungibiKod: Tümünü seç
ShowMessage(ListView2.Items[ListView2.ItemIndex].Detail);
Manuel listview doldururkende 2 kere .detail dolduruyor musunuz ?
aynı döngü içerisinde dolduruyorum
Bu manuel işlemde webserviste gelen veriler ile aynı uzunluktamı ?
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Re: listview scroll yavaşlığı
ben detail kısmını bu listelenen nesnelerin yanında kullandım mesela <,> gibi işaretleri kullandım
Re: listview scroll yavaşlığı
Sayın mustafa ersoy dediğimi uyguladınız mı