Buenas!!
Pues nada, tengo un codigo que me va LENTISIMO y todo en la parte en la que añado los elementos a mi TListview...
Lo hago así:
Código Delphi
[-]var
TempI,TempII,foundby:integer;
tempb:bool;
filtrados:integer;
TempSna,TempSdn,TempSip,TempSmo:string;
TiT : TListItem;
begin
AllStatus(False);
filtrados := 0;
comparacionaeservista.Clear;
for TempI := 0 to aerodbreplist.Items.Count-1 do begin
application.ProcessMessages;
foundby := -1;
TempSna := aerodbreplist.Items.Item[TempI].Caption;
TempSdn := aerodbreplist.Items.Item[TempI].SubItems.Strings[0];
TempSip := aerodbreplist.Items.Item[TempI].SubItems.Strings[1];
TempSmo := aerodbreplist.Items.Item[TempI].SubItems.Strings[2];
TempII:=0;
while TempII < getsoksek.Items.count do begin
if TraduceSMtoDB('i',TempSip,getsoksek.Items.Item[TempII].SubItems.Strings[1]) then begin
foundby := TempII;
TempII := getsoksek.items.count;
end else if TraduceSMtoDB('d',TempSdn,getsoksek.Items.Item[TempII].SubItems.Strings[0]) then begin
foundby := TempII;
TempII := getsoksek.items.count;
end else if TraduceSMtoDB('n',TempSNA,getsoksek.Items.Item[TempII].Caption) then begin
foundby := TempII;
TempII := getsoksek.items.count;
end;
TempII := TempII + 1;
end;
if foundby > -1 then begin
TiT := comparacionaeservista.Items.Add;
TiT.Caption := aerodbreplist.Items.Item[TempI].Caption;
Tit.SubItems.Add(getsoksek.Items.Item[foundby].Caption);
Tit.SubItems.Add(aerodbreplist.Items.Item[TempI].SubItems.Strings[0]);
Tit.SubItems.Add(getsoksek.Items.Item[foundby].SubItems.Strings[0]);
Tit.SubItems.Add(aerodbreplist.Items.Item[TempI].SubItems.Strings[1]);
Tit.SubItems.Add(getsoksek.Items.Item[foundby].SubItems.Strings[1]);
Tit.SubItems.Add(aerodbreplist.Items.Item[TempI].SubItems.Strings[2]);
Tit.SubItems.Add(getsoksek.Items.Item[foundby].SubItems.Strings[2]);
Tit.SubItems.Add(aerodbreplist.Items.Item[TempI].SubItems.Strings[3]);
Tit.SubItems.Add(getsoksek.Items.Item[foundby].SubItems.Strings[3]);
Tit.SubItems.Add(getsoksek.Items.Item[foundby].SubItems.Strings[4]);
Tit.SubItems.Add('');
end else begin
TiT := comparacionaeservista.Items.Add;
TiT.Caption := aerodbreplist.Items.Item[TempI].Caption;
Tit.SubItems.Add('N/A');
Tit.SubItems.Add(aerodbreplist.Items.Item[TempI].SubItems.Strings[0]);
Tit.SubItems.Add('N/A');
Tit.SubItems.Add(aerodbreplist.Items.Item[TempI].SubItems.Strings[1]);
Tit.SubItems.Add('N/A');
Tit.SubItems.Add(aerodbreplist.Items.Item[TempI].SubItems.Strings[2]);
Tit.SubItems.Add('N/A');
Tit.SubItems.Add(aerodbreplist.Items.Item[TempI].SubItems.Strings[3]);
Tit.SubItems.Add('N/A');
Tit.SubItems.Add('N/A');
Tit.SubItems.Add('');
end;
end;
[etc...]
No tengo ni idea como puedo hacerlo mas rapido el Tit.... pero es tremendamente lento

... Y por cierto, el primer while es MUY rapido así que no me digais que será por eso por que no... tengo más que debugeado que el retardo enorme está en la parte de "TiT := comparacionaeservista.Items.Add;"...
Hay otra forma mejor? Gracias!!
Vale, si, ya se que hago muchos "application.ProcessMessages;", pero cuando no los hago va igual de lentro y además necesito hacerlo por que no puedo dejar la aplicación en modo colgado...
Muchas gracias...