Cita:
Empezado por mightydragonlor
alguien conoce un método mejor para la carga de estos datos?
|
Sí, yo
En tu caso particular yo usaría el ListView en
modo virtual. En este modo, el ListView no carga todos los datos sino sólo los que se requiere mostrar en un momento dado.
Los pasos para ello son muy sencillos:
- Pones la propiedad OwnerData del ListView en true.
- Al momento de leer los datos, en lugar de cargar los elementos del ListView como hasta ahora, simplemente le indicas cuántos elementos hay:
Código Delphi
[-]
ListView.Items.Count := DataSet.RecordCount;
- Los elementos en sí, los cargas en el evento OnData del ListView
Código Delphi
[-]
DataSet.RecNo := Item.Index; Item.Caption := DataSet.FieldByName(...).AsString;
Item.SubItems(0) := DataSet.FieldByName(...).AsString;
Item.SubItems(1) := DataSet.FieldByName(...).AsString;
...
Aquí DataSet es el
data set que estés usando, query, table, etc. Eso sí, es necesario que este
data set pueda recorrerse aleatoriamente (que estén implementadas las propiedades RecordCount y RecNo). De no ser así, puedes factorizar por un ClientDataSet:
Código:
TuDataSet -> DataSetProvider -> ClientDataSet -> ListView
// Saludos