Modules

5.28 API - Creare a runtime il controllo ListView senza necessità di OCX (Soluzione avanzata)
  Alessandro Baraldi, Klaus H. Probst
L'esempio allegato a questa FAQ mostra come creare a runtime il controllo ListView senza necessità di usare un file OCX, ma appoggiandosi direttamente alla DLL di Windows.

Implementazioni importanti
Ordinamento per colonna Il controllo creato consente l'ordinamento crescente o decrescente per colonna in base ad un clic sull'header dell controllo stesso.
Selezione multipla Permette di selezionare più items contemporaneamente. Le routine mostrano come iterare l'oggetto ListView per accedere in modo semplice agli items selezionati.
Seleziona tutto Permette di selezionare tutti gli items con un solo comando.
Track_Select Quando si abilita questa opzione, che fa parte degli ExtendedStyle, il controllo seleziona l'item sul quale muovo il mouse. Questa possibilità esiste anche per la Selezione multipla tenendo contemporaneamente premuti i tasti Shft e Ctrl.
Gride_Line Disegna la griglia.
Check_Box Applica la Check_Box alla prima colonna. Viene anche mostrato come iterare l'oggetto per estrarre l'elenco degli items cecked.
Ceck_All Consente di impostare a True o False il check di tutti gli items con un solo comando.
Toll_Tip Ho inserito questo gadget perché lo ritenevo simpatico. Praticamente ho implementato il controllo (API) ToolTip e l'ho associato alla ListView; in particolare rileva il singolo item e personalizza il ToolTip in base all'Hot_Item, cioè quell'item sul quale ho posizionato il cursore (l'item non deve essere necessariamente selezionato).

Importante
Dopo aver aperto in modalità struttura la maschera non cercate di aprirla in modalità visualizzazione. Questo comporterebbe il crash dell'applicativo poichè è usata la tecnica del subclassing.
Chiudere prima Access, poi riaprire la maschera per verificarne il funzionamento corretto.
Per evitare il problema descritto, basterà convertire il progetto in MDE. L'alternativa è quella di creare una DLL esterna alla quale passare la gestione del subclassing.
La versione pubblicata per permettere la completa visualizzazione del codice non poteva essere distribuita come MDE.

Nota di Giorgio Rancati
Il crash di Access con versione successiva ad Access 97 al verificarsi di tali situazioni è notificato anche nella Kb Microsoft:
ACC2000: Rilevamento e impedimento dello scorrimento dei record di una maschera mediante la rotellina del mouse
http://support.microsoft.com/default.aspx?scid=kb;it;278379&Product=accIN2

Nota di Alessandro Baraldi
Questo esempio è stato realizzato usando una routine di Klaus H. Probst (che ringrazio per la gentile concessione) da me modificata per permetterne l'utilizzo con Access.

Download:
 
  API_C_ListView.zip (353Kb) MSAccessXP database


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.