Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
¿De cuántos itemes estamos hablando? Cuando se manejan muchos elementos (y muchos pueden ser unas decenas) estos controles funcionan mucho mejor en modo virtual. Si alguna vez has utilizado un DBGrid, por ejemplo, notarás que su rendimiento es óptimo independientemente de si tienes miles o millones de registros. Pero eso es así porque el componente realmente no guarda toda la información sino que solicita (al DataSet en el caso del DBGrid) sólo los registros que requiere mostrar en un momento dado, esto es, básicamente, sólo los que caben en la parte visual del control.

El ListView puede funcionar en modo virtual poniendo su propiedad OwnerData en true. En esta modalidad, uno no llena explícitamente el control con llamadas a Items.Add. Lo único que se le indica al control de inicio, es el número de elementos que debe manejar:

Código Delphi [-]
ListView.Items.Count := NumeroDeElementos;

Conforme nos desplazamos por la lista, el control solicita la información en el evento OnData:

Código Delphi [-]
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin

end;

El Item que se pasa como parámetro únicamente contiene un dato útil: Item.Index, el índice del elemento que debe proporcionarse.

Entonces, puedes guardar la información en una estructura más eficiente, como un TObjectList, dependiendo del tipo de datos que tengas. Con el Item.Index buscas el elemento que corresponda en tu estructura de datos y con eso llenas la información restante del objeto Item. Por decir algo:

Código Delphi [-]
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
  Item.Caption := TMiClase(MiLista[Item.Index]).Propiedad;
end;

Espero que esto ayude.

Bye
Responder Con Cita
  #2  
Antiguo 11-04-2008
Avatar de lag_0
lag_0 lag_0 is offline
Miembro
 
Registrado: jul 2006
Posts: 131
Poder: 18
lag_0 Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
¿De cuántos itemes estamos hablando? Cuando se manejan muchos elementos (y muchos pueden ser unas decenas) estos controles funcionan mucho mejor en modo virtual. Si alguna vez has utilizado un DBGrid, por ejemplo, notarás que su rendimiento es óptimo independientemente de si tienes miles o millones de registros. Pero eso es así porque el componente realmente no guarda toda la información sino que solicita (al DataSet en el caso del DBGrid) sólo los registros que requiere mostrar en un momento dado, esto es, básicamente, sólo los que caben en la parte visual del control.

El ListView puede funcionar en modo virtual poniendo su propiedad OwnerData en true. En esta modalidad, uno no llena explícitamente el control con llamadas a Items.Add. Lo único que se le indica al control de inicio, es el número de elementos que debe manejar:


Código Delphi [-]
ListView.Items.Count := NumeroDeElementos;





Conforme nos desplazamos por la lista, el control solicita la información en el evento OnData:


Código Delphi [-]
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin

end;





El Item que se pasa como parámetro únicamente contiene un dato útil: Item.Index, el índice del elemento que debe proporcionarse.

Entonces, puedes guardar la información en una estructura más eficiente, como un TObjectList, dependiendo del tipo de datos que tengas. Con el Item.Index buscas el elemento que corresponda en tu estructura de datos y con eso llenas la información restante del objeto Item. Por decir algo:


Código Delphi [-]
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
Item.Caption := TMiClase(MiLista[Item.Index]).Propiedad;
end;





Espero que esto ayude.

Bye
Gracias por la sugerencia.. Cuando enga un rato lo probaré, puede que tengas razón y sea por lo de los elementos.. nosé son unos 600 o así...

Muchas gracias y un saludo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Añadir elementos sin repetir MaMu Varios 12 21-10-2015 21:17:40
XML y sus elementos papulo Varios 5 01-03-2007 10:13:30
TListView calogero Varios 0 18-01-2007 17:16:45
Tlistview Yenifer Varios 1 18-08-2004 16:33:44
Problemas al añadir elementos a una Lista en una aplicación tipo consola judoboy Varios 2 09-06-2003 13:58:48


La franja horaria es GMT +2. Ahora son las 06:59:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi