![]() |
|
Editore: Mondadori Informatica Pagine: 327 Autore: Balena Francesco Collana: I portatili Acquistalo a prezzo scontato:
|
Data Pubblicazione: 2003-02-01 ISBN: 8883314778 Prezzo: 10.70 € Lingua: Italiano |
Centinaia di routine pronte all'uso, suggerimenti e "trucchi" per evitare gli errori di programmazione piu' comuni e aggirare le limitazioni e i bug di Microsoft Visual Basic 5 e 6!
La raccolta comprende anche numerose procedure e classi testate e pronte per essere riutilizzate nelle proprie applicazioni.
Il primo libro che raccoglie il materiale del sito web gestito dallo stesso autore e nasce dall'esperienza diretta di un vero esperto di programmazione, con la collaborazione del team di Code Architects Srl.
Tutti i trucchi sono suddivisi per categoria e sono indipendenti gli uni dagli altri, per essere rintracciati velocemente e applicati immediatamente ai rispettivi progetti VB.
Con I trucchi di Visual Basic 6 I portatili sarai subito in grado di:
Prefazione
Introduzione
1 Il linguaggio
Non omettere le direttive Option Explicit
Evitare le direttive Defxxx
Attenzione alle variabili Variant
Non utilizzare mai l'istruzione End
Dichiarare il tipo corretto per le costanti
Commentare un gruppo di righe di codice
Suggerimenti per scrivere codice piu' compatto
Codice piu' compatto con la funzione Choose
Codice piu' compatto con la funzione IIf
Codice piu' compatto con la funzione InStr
Codice piu' compatto con la funzione Switch
Le istruzioni GoSub sono piu' lente nei programmi compilati
Breakpoint persistenti
IsMissing restituisce False con argomenti non Variant
Le variabili statiche sono piu' lente di quelle dinamiche
Ridurre il numero di DoEvents
Interpretato o compilato?
Cicli For-Next piu' flessibili
Semplificare ed ottimizzare le espressioni con gli operatori And, Or e Xor
Il logging degli eventi non funziona nelle applicazioni interpretate
Attenzione agli elementi di un ParamArray
Le procedure Property nei moduli BAS
Cortocircuitazione dei costrutti Select Case
Confrontare velocemente gli UDT
L'opzione di compilazione "Assume No Aliasing"
Creare un valore Missing
2 Numeri e Date
Utilizzare il corretto operatore per la divisione tra interi
Non utilizzare l'operatore = con valori di tipo Date
Evitare l'overflow degli interi
Convertire numeri esadecimali
Nuove funzioni matematiche per VB
L'operatore And e' piu' veloce di Mod
Calcolare l'intero maggiore o uguale di un determinato valore
Utilizzare l'API Sleep per aggiungere delle pause ai programmi
Il numero di giorni in un mese
Misurazioni temporali a cavallo della mezzanotte
Calcolare il numero di giorni che rimangono nell'anno corrente
Controllare gli anni bisestili
Contare i bit in un intero
Utilizzare correttamente l'opzione "Allow Unrounded Floating Point Operations"
Attenzione ai caratteri "/" quando si formano le date
Un comportamento non documentato della funzione CInt ()
Manipolare i bit di un numero
Un semplice valutatore di espressioni
L'eta' di una persona
Tecniche con DateSerial
Una versione migliorata della funzione DatePart
Benchmark accurati al millisecondo
Estrarre le informazioni sul fuso orario
Eseguire benchmark con la funzione API QueryPerformanceCounter
Estrarre le word da un valore Long
Creare un timer di sistema utilizzando AddressOf ed una funzione di callback
3 Stringhe
Le funzioni stringa che terminanti con il carattere "$"
Due utili funzioni per gestire i Null
Operazioni di concatenazione con la funzione Replace
Convertire opportunamente maiuscole e minuscole
Contare le sottostringhe con la funzione Replace
Sostituire l'ultima occorrenza di una stringa
Estrarre il simbolo di valuta
Trucchi con ICase e UCase
Concatenare le stringhe piu' velocemente con il comando Mid$
Utilizzare in modo non banale l'operatore LIKE
Replicare una stringa di lunghezza qualsiasi
Varianti della funzione InStr
Le stringhe di lunghezza fissa sono allocate e deallocate piu' velocemente
Creare una funzione InStr migliore con le regular expression di VBScript
Estrarre tutte le stringhe tra virgolette con l'oggetto RegExp
Elaborare i caratteri in una stringa utilizzando vettori di Byte
Ricercare piu' sottostringhe con l'oggetto RegExp
Il modo piu' veloce per scambiare stringhe
4 Array e Collection
Le variabili semplici sono sempre piu' veloci degli elementi dei vettori
Inizializzare velocemente vettori di Variant e stringhe
Procedure polimorfiche per vettori
Eliminare gli elementi di una collezione partendo dall'inizio
Verificare se vettore di stringhe contiene un elemento (senza utilizzare un ciclo)
Visitare tutti gli elementi di una matrice multidimensionale con un unico ciclo
Individuare velocemente un oggetto all'interno di una Collection
Eliminare i duplicati in un vettore
Una tecnica non documentata per velocizzare le funzioni che restituiscono vettori
Una routine per il sort di un vettore
CountSort, un caso particolare di ordinamento indicizzato
Ordinare utilizzando piu' chiavi
Ricerca binaria in un vettore ordinato
Velocizzare le ricerche con le tabelle di hash
Controllare una chiave in una PropertyBag senza sollevare un errore
Il numero di dimensioni di una matrice
Azzerare velocemente una porzione di un vettore
5 Form e controlli
Chiudere una form con effetto di restringimento
Non utilizzare il metodo SetFocus sui controlli invisibili
Utilizzare il metodo Refresh anziche' l'istruzione DoEvents
Utilizzare la proprieta' UseMnemonic i controlli Label collegati a sorgenti dati
Aggiungere una stringa ad una casella di testo velocemente e senza sfarfallio
Utilizzare il tasto Enter per spostarsi nel campo successivo
Spostare il focus con i tasti freccia su e freccia giu'
Evidenziare il contenuto di un controllo quando ottiene il focus
Utilizzare la proprieta' DataChanged con i controlli non collegati a sorgenti dati
Creare pulsanti freccia senza usare icone
Modificare l'aspetto delle TextBox e ComboBox disabitate
Assicurarsi che i controlli TextBox e ComboBox di una forma abbiano la stessa altezza
Evitare di inserire nel codice i nomi e le dimensioni dei font
Verificare se una form e' caricata o meno
Evitare i bip sulle form che non hanno un pulsante predefinito
Attenzione a quando si spostano o ridimensionano le form
Modificare la proprieta' DataSource a runtime
Collegare un gruppo di OptionButton ad un Data Control
Modificare lo stile di un controllo CheckBox o OptionButton a runtime
Modificare le dimensioni del cursore di testo e l'intermittenza del lampeggio
Modificare la proprieta' ShowInTaskbar a runtime
Modificare la larghezza dell'elenco a discesa di una ComboBox
Clonare un oggetto Font
Impostare correttamente la larghezza e l'altezza delle barre di scorrimento
Aggiungere una barra di scorrimento orizzontale ad un controllo ListBox
Creare pulsanti di comando colorati
Creare controlli ListBox dotati di pulsanti di spostamento
Tagliare, copiare ed incollare con le funzioni API di Windows
Determinare in che modo un controllo ha ottenuto il focus
Determinare la riga corrente in una casella di testo multiriga
Determinare se un controllo possiede una barra di scorrimento
Creare una form padre con le funzioni API
Ricevere eventi da un timer mentre e' attiva una message box
Abilitare e disabilitare completamente o in parte la barra di scorrimento
Verificare che il caret di una TextBox sia visibile
Attivare l'interfaccia utente estesa per i controlli ComboBox
Ottenere un riferimento ad una form dato il suo nome
Nascondere e visualizzare le barre di scorrimento di un controllo
Evidenziare la parola o la riga corrente in una TextBox
Implementare la proprieta' MaxLength del controllo ComboBox
Ricerche incrementali all'interno dei controlli ListBox
Ottenere l'handle dell'area di modifica di una ComboBox
Rendere a sola lettura un controllo CheckBox
Mostrare una form come se fosse disabilitata
Aprire l'elenco a discesa di un controllo ComboBox
Attivare la modalita' di sovrascrittura per i controlli TextBox
Rimuovere i comandi Close dal menu di sistema
Rimuovere i pulsanti Max e Min nel form MDI
Salvare e ricaricare le impostazioni di una form dal Registry
Mostrare un menu di popup personalizzato per un controllo TextBox senza ricorrere al subclassing
Attivare l'attenzione dell'utente con un titolo lampeggiante
Leggere e modificare l'area di formattazione di una TextBox
Il comportamento dell'evento LostFocus dipende dalla versione di VB
Limitare il tipo di caratteri inseriti in un controllo TextBox
Annullare le modifiche in un controllo TextBox
Elaborazione intelligente del tasto Tab nelle TextBox multiriga
Determinare la prima riga visibile in una TextBox multiriga
Determinare il numero di righe in una TextBox multiriga
Impostare le posizioni dei tabulatori per una TextBox multiriga
Far apparire una finestra in primo piano
Creare colonne di dati in un controllo ListBox
Trascinare form prive di titolo
Impostare le dimensioni e la posizione di una form massimizzata
Ottimizzare le procedure Paint con il subclassing
Impedire il ripristino di una finestra iconizzata
Fornire una breve descrizione della voce di menu che viene evidenziata
Determinare quando l'utente scorre il contenuto di un controllo TextBox
Utilizzare il subclassing per eliminare il menu di popup predefinito Edit dalle TextBox
Creare controlli TextBox con sfondo retinato
Determinare quando l'area di una ComboBox viene chiusa
Caselle di testo realmente sicure per l'inserimento della password
Creare form non rettangolari
6 Altri controlli
Azzerare il contenuto di un controllo MaskEditBox senza errori
Controllare la posizione di una common dialog
Collegare dinamicamente un controllo DataList o DataCombo ad un Recordset di ADO
Aggiornare i record nei controlli DataList e DataControl di ADO
Modificare il record corrente in una DataList utilizzando i bookmark
Consentire all'utente di inserire oggetti OLE in un controllo RichTextBox
Scaricare e salvare una pagina HTML con Internet Transfer Control
Inserire piu' controlli in una Band di una Coolbar
Determinare la larghezza ottimale delle colonne di un controllo ListView
Determinare il numero di elementi visibili in un controllo ListView
Ottenere o impostare l'altezza dei nodi di un controllo TreeView
Riempire un controllo TreeView con dati casuali
Velocizzare il caricamento degli elementi dei controlli TreeView e ListView
Eliminare i tooltip del controllo TreeView
Consentire all'utente di aggiungere caratteri di tabulazione ad un controllo RichTextBox
Inserire un'immagine in un controllo RichTextBox
Limitare la lunghezza di un elemento di un controllo ListView
Leggere e impostare il primo nodo visibile in un controllo TreeView
Limitare la lunghezza del testo in un nodo di un TreeView
Copiare il contenuto del controllo WebBrowser nella Clipboard
Stampare il contenuto di un controllo WebBrowser
Ottenere testo puro o in formato HTML del contenuto di un controllo WebBrowser
Ottenere il pieno controllo sul testo inserito in un elemento di un ListView
Ottenere il pieno controllo sul testo inserito in un nodo di un TreView
Memorizzare oggetti nella proprieta' Tag
Impedire il trascinamento degli elementi di un controllo ListView
7 Grafica e Stampa
Visualizzare una GIF utilizzando il controllo WebBrowser
Verificare sempre che una stampante sia installata
Visualizzare la finestra di dialogo Connect To Printer
Estrarre le componenti Red, Green, Blue di un colore
Ottenere il colore di un pixel
Impostare il colore di un pixel
Modificare il colore dei pixel in un'area
Convertire il valore di un colore in toni di grigio
Animare le icone delle form
Creare un semplice browser per le icone
Ottenere le proprieta' dei Bitmap
Copiare il contenuto dello schermo o della finestra attiva
8 Tastiera e Mouse
Nascondere e mostrare il cursore del mouse
Determinare il numero dei pulsanti del mouse
Determinare lo stato dei pulsanti del mouse
Leggere lo stato dei tasti Shift
Controllare la velocita' del mouse
Scambiare il comportamento ed il significato dei pulsanti del mouse
Leggere la posizione del mouse
Spostare il mouse al centro di un form o controllo
Ripristinare correttamente il cursore del mouse
Simulare gli eventi MouseEnter e MouseExit
Leggere lo stato dei tasti di lock
Modificare lo stato dei tasti di lock
9 File e directory
Caricare un file di testo in un'unica operazione
Controllare che un file o una directory esista
Verificare se il drive di un floppy e' pronto
Copiare un albero di directory
Eliminare una cartella e tutte le relative sottocartelle
Ottenere la directory principale di Windows (senza utilizzare funzioni API)
Ottenere la directory temporanea di Windows (senza utilizzare funzioni API)
Ottenere il nome canonico di un file
Ottenere informazioni su tutti i drive disponibili
Aggiungere un file all'elenco dei documenti recenti
Contare i caratteri in un file
Cercare un file in un albero di directory utilizzando la DDL Imagehlp
Convertire nomi lunghi di file nel formato 8.3 e viceversa
Determinare se una directory e' condivisa
Formattare un drive utilizzando una funzione non documentata
10 Programmazione ad oggetti
Non verificare le variabili ad auto-istanziazione utilizzando Is Nothing
ByVal con i riferimento agli oggetti
Le procedure Friend sono piu' veloci delle Public
Implementare proprieta' di tipo "Write-Once Read-Many"
Implementare proprieta' Variant che possono contenere oggetti
Le proprieta' di default tendono a nascondere gli errori di programmazione
Verificare se due variabili oggetto puntano allo stesso oggetto
Passare variabili pubbliche di classe ad argomenti ByRef
Creare moduli di classe di tipo collection con un template
Attenzione ai riferimenti circolari nascosti tra un form ed un oggetto
11 Oggetti COM
Dichiarare sempre gli oggetti utilizzando il nome completo della libreria
Eseguire una componente utilizzando la compilazione completa
Controllare un GUID
Capire il marshaling delle interfacce
Utilizzare correttamente le impostazioni per la compatibilita' binaria
Non usare classiSingleUse e MultiUse nello stesso progetto
Ridurre i ritardi di attivazione ordinando l'elenco dei protocolli DCOM
Creare un GUID
Creare type library stand-alone
Non includere le proprieta' Extender nell'ActiveXWizard
Non passare oggetti Private alle applicazioni client
Come passare l'oggetto Global nascosto ad una DLL ActiveX
Registrare e deregistrare le componenti con i menu di contesto
Registrare programmaticamente un controllo ActiveX o una DLL
Rilocare le DLL compilate
Individuare quando un nuovo controllo viene aggiunto ad un contenitore ActiveX
Registrare e deregistrare le type library
Determinare il CLSID di un oggetto COM
Evitare l'utilizzo delle funzioni per il Registry di VB nelle WebClass e nelle componenti ASP
Ottenere il valore Command$ da una DLL ActiveX
Determinare se una DLL ActiveX viene utilizzata da un programma interpretato
Determinare il CLSID associato a un ProgId
12 Database e oggetti ADO
Velocizzare la creazione dei Recordset con la proprieta' CommandType
Creare oggetti Field espliciti quando si itera su Recordset
Aprire un database MDB protetto da password con ADO
Ovviare all'errore "Unrecognized Database Format" con database Access 2000
Consentire all'utente di creare una stringa di connessione
Esportare in un file di testo con campi delimitati da virgolette
Il metodo nascosto Collect dell'oggetto Recordset
Determinare il RecordCount di un Recordset di tipo forward-only
Creare velocemente una copia di un Recordset di ADO
Recordset ADO 2.1 lato-client piu' veloci con la proprieta' OPTMIZE
Minor overhead con i Recordset disconnessi
Ottimizzare gli aggiornamenti batch con la proprieta' Update Criteria
Leggere e scrivere un campo binario (BLOB)
Ottenere l'elenco dei driver ODBC
Ottenere l'elenco dei DNS ODBC
Creare ed eliminare i DSN a runtime
Leggere e scrivere i file ODBC di definizione delle sorgenti dati
Estrarre l'elenco delle stored procedure di SQL Server
Salvare una matrice in una tabella di SQL Server con VB ed ADO
Connettere un Recordset stand-alone ad un database utilizzando l'XML
13 Linguaggio SQL e programmazione con Microsoft SQL Server
Velocizzare le istruzioni UNION con la clausola ALL
Come utilizzare la clausola TOP WITH TIES nelle query di SELECT
I valori Null nelle clausole WHERE
Eliminare tutti i record di una tabella nel modo piu' rapido
Copiare velocemente i record tra tabelle aventi la stessa struttura
Creare tabelle con l'istruzione SELECT INTO
Funzioni statistiche che tengono conto dei valori Null
Estrarre i record in base al relativo numero
Elencare tutti gli indici di un database di SQL Server
Elencare i permessi degli utenti sugli oggetti di un database
Istruzioni GROUP BY e UNION possono restituire resultset non ordinati
Migliorare le prestazioni con le pinned table
Ripristinare la funzionalita' di un database di SQL Server marcato come "suspect"
Migliorare il fattore di I/O dei sottosistemi intelligenti
Condivisione di connessioni
Effettuare il backup di un database MSDE utilizzando T-SQL
Gestire il formato per la data di SQL Server
Effettuare il restore del database master di SQL Server
Eseguire query distribuite utilizzando un linked server
Monitorare stored procedure ed attivita' batch da postazioni remote
Inviare Fax da Microsoft SQL Server utilizzando Microsoft Word
Elencare tutte le installazioni di SQL Server esistenti
Avviare ed interrompere programmaticamente il servizio principale di SQL Server
Aggiornare i record di SQL tramite HTTP
Utilizzare un Updategram per aggiornare i database di SQL Server
Monitoraggio avanzato dei lock
14 Multimedia
Migliorare il bip di VB
Verificare la presenza di una scheda audio
Determinare la durata complessiva di un CD audio
Ascoltare una traccia di un CD audio
Ottenere la lunghezza di un file multimediale (WAV,AVI,MIDI)
Eseguire un file MIDI
Eseguire un filmato AVI
Visualizzare un filmato AVI in un controllo PictureBOx
Registrare un file WAV
15 Le funzioni API di Windows
Determinare l'utilizzo della memoria
Ottenere in modo semplice informazioni sulla CPU (solo per NT/2000)
Ottenere in modo semplice informazioni di login (senza utilizzare funzioni API)
Attendere la fine di un programma utilizzando Windows Scripting Host
Verificare la disponibilita' di una porta seriale o parallela
Estrarre stringhe ASCIIZ restituite da chiamate alla API di Windows
Non utilizzare la funzione API GetLastError
Determinare se una funzione API e' DISPONIBILE
Visualizzare la finestra di dialogo per configurare una porta
Visualizzare lo Shortcut Wizard di Windows
Visualizzare la finestra di dialogo Find
Aprire in cascata tutte le finestre figlie di una finestra
Creare una utility per ottenere informazioni su una windows
Realizzare effetti speciali con i cursori animati
Determinare se un programma e' a 16 o a 32 bit
Disabilitare la combinazione di tasti Ctrl-Alt-Del in Windows 9x
Determinare la modalita' di avvio di Windows
Visualizzare la finestra di dialogo "Shut down Windows"
Determinare la versione di Windows richiesta da un determinato programma
Ottenere il codice d'uscita di un processo
Stabilire quando l'applicazione ottiene o perde il focus di input
Nascondere o disabilitare le icone del desktop
Nascondere o disabilitare la barra delle applicazioni di Windows
Nascondere un'applicazione nella finestra di dialogo Task List
Aprire il Pannello di controllo o una procedura guidata
Aprire il prompt di MS-DOS da qualsiasi directory all'interno di Windows Explorer
Attivare il menu Start di Windows via codice
Fornire un'anteprima dei documenti di Office
Restituire un codice d'errore DOS in uscita
Visualizzare il contenuto della directory Recycle Bin
Effettuare una chiamata telefonica utilizzando TAPI
Creare un'icona per la System Tray di Windows
Utilizzare correttamente la funzione CopyMemory
Tracciare le modifiche alla data/ora del sistema ed alla risoluzione dello schermo
Utilizzare valori Currency anziche' LARGE_INTEGER nelle chiamate API
16 Applicazioni Internet
Creare uno shortcut per Internet
Verificare la validita' di un URL
Ottenere l'indirizzo IP locale utilizzando Internet Transfer Control
Verificare che il RAS sia installato
Verificare se esiste una connessione ad Internet
Verificare se l'utente lavora off-line
Eseguire il download di un file
Avviare il browser predefinito caricando un determinato URL
Aprire il programma predefinito per inviare messaggi di posta elettronica
Impostare la modalita' off-line
Aggiungere un URL ai favoriti di Internet Explorer
Convertire una stringa in HTML
17 Ambiente di sviluppo e Setup
Modificare velocemente le proprieta' di un controllo
Creare piu' controlli dello stesso tipo
Copiare velocemente le proprieta' tra i controlli
Copiare velocemente gli attributi dei campi quando si creano le tabelle
Avviare l'IDE con le finestre di codice e della form massimizzate
Specificare piu' costanti di compilazione
Aggiornare il file di dipendenza per COMCTL32.OCX
I programmi che utilizzano il WebBrowser richiedono l'installazione di IE
Installazione senza finestre di dialogo con il Package and Deployment Wizard
Note sull'autore
Tutorial Visual Basic 2008 di manuali.net
Articoli Visual Basic 2005 di Visual-Basic.it
Guida Visual Basic di WebMasterPoint
Corso di Visual Basic di SoftwarePlanet
Manuale Visual Basic di Html.it