Ver Mensaje Individual
  #4  
Antiguo 12-06-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Reputación: 22
Mick Va por buen camino
Uno de los cuellos de botella que tienes es que no llamas a
Lista.BeginUpdate;
Debes llamar a esta metodo al principio de la funcion de llenado de datos, y cuando acabes de añadir todos lo nodos, al final de la funcion llama a:
List.EndUpdate;
Cada vez que añades un nodo al TListView, este se redibuja, y esto es lento de modo que si añades 1000 nodos tendras 1000 redibujados, añadiendo el codigo que he indicado le indicas al TListView que no se refresque de modo que se redibujara una sola vez , al final de la funcion, cuando se llame a List.EndUpdate.

Esto es aconsejable hacerlo, con todos los objetos visuales que almacenan items o strings , no solo TListView, ya que acelera enormente las inserciones.

Ademas de esto no se si habra algun otro cuello de botella, ya que realmente un tlistview es lento debido a que cada insercion exige pedir un bloque de memoria, pero pruebalo (normalmente el uso de este sistema hace que las inserciones sean 20 o 30 veces mas rapidas).

Saludos
Responder Con Cita