USB - Notifica & Rimozione

Questo progetto mostra come ricevere la notifica quando si inserisce una chiavetta USB e come rimuovere detta chiavetta, il tutto fatto programmaticamente, ovvero senza obbligare l'utente a farlo manualmente.
Le notifiche si ricevono non solo per le chiavette USB ma in realtà per qualsiasi modifica venga fatta a livello di file system ed il codice è molto potente.
Nel textbox a destra sono elencate tutte le notifiche ricevute in conseguenza di un evento, ad esempio avviate il progetto e poi create in Esplora Risorse un nuovo file e riceverete tutte le notifiche.
Oppure, avviate il progetto (senza nessuna chiavetta USB inserita) poi inserite la chiavetta e vedrete che
- si aggiorna l'elenco dei drives
- cambia l'immagine della chiavetta arancione e relativa didascalia
- si aggiorna nel TextBox l'elenco dei messaggi di notifica relativi
Attenzione, però, che viene utilizzato il subclassing della finestra quindi si raccomanda di chiudere il progetto nell'IDE esclusivamente tramite l'apposito pulsante Exit, oppure usano i comandi del menu di sistema.
Per nessun motivo di deve usare l'istruzione End e tanto meno il pulsnate STOP presente sulla toolbar dell'IDE di VB6!!!
Allinea il testo

Questo progetto è una traduzione da un listato in C del 1992 (incluso) preso dal libro Programmare Windows di C. Petzold.
Un aspetto importante è quello del ritorno a capo che, grazie alle API, viene gestito in automatico.
A sinistra abbiamo una semplice TextBox con il testo da elaborare
Nella PictureBox a destra osserviamo il risultato con il testo stampato utilizzando la giustificazione (calcolando un margine di 10 pixels).
Codice Fiscale

-
Usa ADO
-
è possibile (in automatico) creare il codice fiscale anche per i nati all'estero.
Infatti il nuovo database contiene due tabelle: una dei Comuni d'Italia, una con gli Stati esteri.
-
Tutto il codice relativo alla gestione del codice fiscale è inglobato nel modulo modCodiceFiscale.bas, quindi se volete aggiungerlo ad un vostro progetto vi basta copiare questo file ed il database e richiamare le routine già predisposte dal vostro programma!
-
sono utilizzate funzioni API per l'interfaccia (vedi il codice sorgente commentato).
PrintDB

Questo è un progetto veramente utile ed è stato realizzato da Gabriele Marchionni. Consente la stampa della struttura delle tabelle di un file MDB.
Da me modificato e pubblicato su gentile concessione dell'autore.
L'ho trovato talmente utile che ho pensato di perfezionarlo ed aggiungervi altre importanti funzionalità per renderlo ancor di più versatile e flessibile. Ecco l'elenco delle modifiche apportate:
-
aggiunta una classe che memorizza in un file INI tutti i database recentemente aperti (senza alcun limite di numero), e ne ricarica tutti i percorsi in un combobox all'avvio del programma. Questo evita di dover ogni volta navigare per il file system alla ricerca del database, se questo era già stato caricato in precedenza.
-
ho reso compatibile al 100% il progetto con i Themes di Windows XP sostituendo i Frame con PictureBox e aggiungendo una chiamata alla funzione InitCommonControls (eliminando così quel classico e fastidioso 'flickering' dei Frame quando si muove il mouse al loro interno).
-
ho aggiunto un checkbox che consente all'utente di selezionare o deselezionare tutte le tabelle. Infatti se ho un DB con 57 tabelle e voglio stamparne una sola sono costrettto a cliccare 56 volte per deselezionare le tabelle che non mi servono.
-
per la stampa ho parametrizzato la dimensione della prima colonna Nome del campo che aveva un'impostazione fissa a 32, ciò non permetteva di stampare correttamente alcuni campi se erano più lunghi (creando quindi una stampa sovrapposta del testo). Ho perciò aggiunto un combobox da cui, prima di stampare, si può impostare la larghezza della prima colonna (le altre sono sempre fisse, quindi non ho ritenuto opportuno modificarle.). Funziona solo con la stampa reale, non per l'anteprima di stampa.
-
ho corretto un errore nella routine di stampa che, a volte, produceva la stampa di pagine vuote.
-
ho aggiunto il codice per poter aprire un DB protetto da password. Prima, restituiva un laconico "Errore nel file."
-
Se l'utente digita nella casella txtPath un qualche percorso, il pulsante "Sfoglia..." aprirà la finestra di dialogo su 'quel' percorso, così da 'snellire' la navigazione nel file system.
TrapTABkey
Ovvero come intercettare (ma anche simulare) la pressione del tasto TAB, o SHIFT TAB.
Questo progetto mostra 3 approcci diversi per intercettare il tasto TAB:
- Usando solo puro codice VB
Questo metodo è complesso ed articolato, e necessità la scrittura di istruzioni in ogni singolo controllo..
- Usando la funzione GetKeyState
Metodo dal codice drasticamente più semplice rispetto al 1°, ma che richiede comunque la scrittura di istruzioni in ogni singolo controllo.
- Usando la funzione GetKeyState Multicasting
Ritengo che sia il metodo migliore, perchè con l'aiuto di 2 classi si scrive il codice necessario UNA sola volta e possiamo gestire lo stesso evento per più tipi di controlli in una volta sola!
Altri notevoli vantaggi, rispetto ai precedenti esempi:
a) Se aggiungiamo un controllo al Form già gestito dalle classi, non serve aggiungere alcuna istruzione.
b) Se aggiungiamo un nuovo Form al progetto, è sufficiente istanziare la classe clsForm, e tutti gli eventi dei relativi controlli saranno gestiti automaticamente.
c) Le classi sono riutilizzabili in qualsiasi progetto
d) Se si usano ulteriori TIPI di controlli di terze parti (es DTPicker), è sufficiente aggiungerli all'elenco dei controlli da gestire (vedere la routine SetVbForm di clsForm).
e) La classe clsControls può essere ampliata a piacere con routine che reagiscono agli eventi. A titolo di esempio, si osservi nel progetto quelle già presenti come ColorFocus, ShowMessage, ShowToolTips.