Elenchi Virtuali di Valori

Le liste ( list view ) sono degli elenchi di valori, che nel caso dei report, sono formati da delle colonne e delle righe. A seconda della scelta dello stile delle intestazioni di colonna ( header control ) si può anche fare delle ricerche e filtri con i valori inseriti in queste parti del report. Le righe invece sono i singoli valori, come ad esempio le canzoni in un archivio oppure i prodotti in un magazzino oppure ancora i movimenti della merce. Si tratta di un modo molto efficace di presentare i dati all’utente che può facilmente ordinarli, cercarli oppure filtrarli. Le righe si possono modificare nello stile utilizzando dei colori diversi per quelle pari e quelle dispari, a questo proposito consiglio la lettura di questo mio articolo riferito proprio a questo argomento.
Un aspetto importante che è proprio l’argomento di questo articolo è il caricamento dei valori all’interno del report. Ci possono essere due modi per fare questo compito: il primo staticamente ed il secondo in modo virtuale. Vediamo gli aspetti positivi e negativi del metodo statico e quando allora è preferibile l’uso del metodo virtuale.

  • Un aspetto positivo è che si caricano i valori nella lista e tutto va in memoria RAM, poi non ci si deve più preoccupare di nulla perché sarà la lista stessa a gestire semplicemente tutto il lavoro.
  • Un aspetto negativo è quello che occorre molto tempo per il caricamento e soprattutto l’uso di molta memoria.

Quindi nel caso occorra gestire molti dati, indicativamente sopra i 5.000, è preferibile utilizzare gli elenchi di valori virtuali anche se di più difficile implementazione. Tanto per fare un esempio, una lista con 12.000 articoli di magazzino, nel mio software Calus, ora impiega circa 45 secondi per caricarsi con un dispendio di circa 500 MB di RAM, mentre nella nuova versione 5 che utilizza le liste virtuali, il tempo di caricamento è di circa 0,40 secondi, sempre ovviamente per i 12.000 prodotti e solo 2 MB di RAM.

Calus 5.0

Calus 5.0, il mio software gestionale per il magazzino

Come si può evincere da questi dati l’utilizzo di liste virtuali in caso di moltissime righe è nettamente migliore. Ma vediamo di spiegare come funziona una lista virtuale ( virtual list view ).
In una lista statica occorre inserire, durante il caricamento, tutti i dati nell’elenco e questo risulta essere un processo molto lento in caso di grandi quantità di dati. Per diminuire l’attesa da parte dell’utente si può caricare solo una piccola parte di dati, diciamo i primi 500 per poi concludere il processo creando un worker thread che si occupa di riempire la lista mentre l’utente vede i primi valori caricati. Questo è anche un ottimo metodo per caricare la lista nelle caselle combinate ( combo box ). In una lista virtuale invece vengono caricati nell’elenco solo i valori che l’utente vede, il controllo si carica ( attraverso un evento ) automaticamente ad ogni scrolling, ovviamente dobbiamo essere noi a prendere i dati dall’archivio ed inserirli. Questi valori sono soltanto quelli che fanno parte delle righe visualizzate, quindi al massimo 50 o poco più, in caso di visualizzazione della lista in un grande monitor. Questo approccio è anche ottimo per lavorare con dati remoti che altrimenti andrebbero caricati tutti, con notevole carico di lavoro per la rete. Per identificare il valore da caricare è possibile mettere tutti gli identificati in un array o lista.
In questo articolo ho spiegato solo gli aspetti teorici dello sviluppo di elenchi virtuali, non mi sono soffermato sugli aspetti tecnici, ma se qualcuno dei miei lettori fosse interessato ad un approfondimento dell’argomento può farmelo sapere tramite la sezione dei commenti all’articolo.

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Gestionale. Contrassegna il permalink.