Este grupo especializado luego de algunos días de investigación y recopilación de de información, hemos dado con los datos necesarios, nuestro deseo es que te sea de utilidad para tu proyecto.
Solución:
El control Delphi TListView es un contenedor alrededor del componente de vista de lista de Windows. En su modo de funcionamiento predeterminado, las copias de los datos de la lista se transfieren desde su aplicación al control de Windows y esto es lento.
La alternativa a esto se conoce como vista de lista virtual en la terminología de Windows. Su aplicación no pasa los datos al control de Windows. En cambio, cuando el control necesita mostrar datos, le solicita a su aplicación solo los datos que se necesitan.
El control Delphi TListView expone vistas de listas virtuales mediante el uso de la propiedad OwnerData. Tendrá que volver a escribir su código de vista de lista, pero en realidad es la única solución.
Solo necesita usar su lista en modo “virtual”.
- Ponga un TListBox en su formulario;
- Establezca la propiedad Estilo en lbVirtual.
- Establezca la propiedad Count en el número de elementos de su lista.
- Luego use el controlador OnData para proporcionar el texto que se mostrará a pedido:
Como en este código (reemplace con algunos datos de su base de datos o un TStringList o similar):
procedure TForm1.ListBox1Data(Control: TWinControl; Index: Integer;
var Data: String);
begin
Data := Format('Item %d',[Index+1]); // set the text to be displayed
end;
Puede personalizar aún más el dibujo usando el estilo lbVirtualOwnerDraw y debe dibujar elementos usando un controlador de eventos OnDrawItem. Hay algún código de muestra en la documentación de Delphi (al menos en Delphi 7). 😉
En el modo Virtual, puede mostrar 50000 o 100000 elementos de forma instantánea.
Para almacenar el texto, usar un buen TStringList antiguo será más rápido que el método Items de TListBox, porque este Items[] La propiedad tendrá que comunicarse con Windows con mensajes GDI “lentos” para cada elemento, mientras que TStringList simplemente almacenará el texto en el montón de Delphi, que suele ser mucho más rápido.
Puede llamar a BeginUpdate y EndUpdate en la vista de lista para mejorar el rendimiento, evitando que la vista de lista se vuelva a dibujar mientras se actualiza. Pero esto probablemente no le dará el impulso que desea. Además, debe saber que acceder a los controles de VCL directamente desde un hilo no es seguro a menos que esté sincronizado.
Creo que sería mejor omitir la vista de lista y elegir un control de terceros como Virtual Tree View, que es excelente y gratuito. 🙂
Aquí tienes las reseñas y calificaciones
Finalizando este artículo puedes encontrar las reseñas de otros sys admins, tú incluso eres capaz insertar el tuyo si lo crees conveniente.