[ita] programmare visual basic 6

1116
TITOLO ORIGINALE Programming Microsoft Visual Basic 6 Copyright © 1999 by Francesco Balena All rights reserved. No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the publisher. Copertina per l’edizione italiana: Arsenico Immagine e Comunicazione – Milano Traduzione: Antonella Rivalta, Lucilla Dini per Publish Art Revisione tecnica e realizzazione editoriale: Publish Art – Pavia Ogni cura è stata posta nella raccolta e nella verifica della documentazione contenuta in questo libro. Tuttavia né gli autori, né Microsoft Press, né Mondadori Informatica possono assumersi alcuna responsa- bilità derivante dall’utilizzo della stessa. Lo stesso dicasi per ogni persona o società coinvolta nella creazione, nella produzione e nella distribu- zione di questo libro. Active Desktop, ActiveX, il logo BackOffice, FrontPage, IntelliSense, Microsoft, Microsoft Press, MS- DOS, Visual Basic e Windows sono marchi registrati o marchi di Microsoft Corporation negli Stati Uniti e in altri Paesi. Altri nomi di prodotti e di aziende citati in queste pagine possono essere marchi dei rispettivi proprieta- ri. © 1999 Mondadori Informatica Prima edizione: settembre 1999 ISBN 88-7131-898-6 Finito di stampare nel mese di settembre 1999 per conto della Arnoldo Mondadori Editore S.p.A. presso Milanostampa – Rocca S. Casciano (FO) Stampato in Italia – Printed in Italy

Upload: davide-crivaro

Post on 24-Jul-2015

1.327 views

Category:

Documents


113 download

TRANSCRIPT

TITOLO ORIGINALE Programming Microsoft Visual Basic 6 Copyright 1999 by Francesco Balena All rights reserved. No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the publisher.

Copertina per ledizione italiana: Arsenico Immagine e Comunicazione Milano Traduzione: Antonella Rivalta, Lucilla Dini per Publish Art Revisione tecnica e realizzazione editoriale: Publish Art Pavia Ogni cura stata posta nella raccolta e nella verifica della documentazione contenuta in questo libro. Tuttavia n gli autori, n Microsoft Press, n Mondadori Informatica possono assumersi alcuna responsabilit derivante dallutilizzo della stessa. Lo stesso dicasi per ogni persona o societ coinvolta nella creazione, nella produzione e nella distribuzione di questo libro. Active Desktop, ActiveX, il logo BackOffice, FrontPage, IntelliSense, Microsoft, Microsoft Press, MSDOS, Visual Basic e Windows sono marchi registrati o marchi di Microsoft Corporation negli Stati Uniti e in altri Paesi. Altri nomi di prodotti e di aziende citati in queste pagine possono essere marchi dei rispettivi proprietari. 1999 Mondadori Informatica Prima edizione: settembre 1999 ISBN 88-7131-898-6 Finito di stampare nel mese di settembre 1999 per conto della Arnoldo Mondadori Editore S.p.A. presso Milanostampa Rocca S. Casciano (FO) Stampato in Italia Printed in Italy

Sommario

Prefazione ..................................................................................................... xvii Ringraziamenti .............................................................................................. xix Introduzione .................................................................................................. xxiPARTE I CAPITOLO 1

Concetti di base ....................................................... 1 Primi passi in Microsoft Visual Basic 6 ............. 3L IDE o ambiente di sviluppo integrato .......................................................... 3 Avvio dellIDE .............................................................................................. 3 Scelta del tipo di progetto .......................................................................... 4 Le finestre dellIDE ...................................................................................... 4 I menu .......................................................................................................... 9 Le barre degli strumenti ........................................................................... 10 La finestra Toolbox ................................................................................... 13 Il vostro primo programma Visual Basic ..................................................... 15 Aggiunta di controlli a un form ............................................................... 15 Impostazione delle propriet per i controlli ........................................... 16 Assegnazione di nomi ai controlli ........................................................... 18 Spostamento e dimensionamento di controlli ....................................... 20 Impostazione dellordine di tabulazione ................................................. 21 Aggiunta di codice .................................................................................... 22 Esecuzione e debug del programma ...................................................... 23 Miglioramento del programma di esempio ........................................... 25 Pronti, compilazione, via! ........................................................................ 26

CAPITOLO 2

Introduzione ai Form ............................................ 29Propriet comuni ........................................................................................... 30 Le propriet Left, Top, Width e Height .................................................... 30 Le propriet ForeColor e BackColor ........................................................ 31 La propriet Font ...................................................................................... 34 Le propriet Caption e Text ...................................................................... 35 Le propriet Parent e Container .............................................................. 36 Le propriet Enabled e Visible ................................................................. 36 La propriet hWnd .................................................................................... 37 Le propriet TabStop e TabIndex ............................................................ 38 Le propriet MousePointer e MouseIcon ............................................... 39 La propriet Tag ........................................................................................ 40 Altre propriet ........................................................................................... 40

vi

Sommario

Metodi comuni ............................................................................................... 42 Il metodo Move ......................................................................................... 42 Il metodo Refresh ..................................................................................... 42 Il metodo SetFocus ................................................................................... 43 Il metodo ZOrder ...................................................................................... 44 Eventi comuni ................................................................................................ 45 Gli eventi Click e DblClick ......................................................................... 45 L evento Change ....................................................................................... 46 Gli eventi GotFocus e LostFocus ............................................................. 46 Gli eventi KeyPress, KeyDown e KeyUp ................................................. 47 Gli eventi MouseDown, MouseUp e MouseMove ................................. 48 L oggetto Form ............................................................................................... 51 Propriet di base dei form ....................................................................... 52 Miglioramento delle prestazioni dei form .............................................. 52 Ciclo di vita di un form ............................................................................. 54 L evento Unload ........................................................................................ 58 La collection Controls ............................................................................... 59 L oggetto Screen ....................................................................................... 60 Stampa del testo ....................................................................................... 61 Metodi grafici ............................................................................................ 64 La propriet DrawMode ........................................................................... 70 La propriet ScaleMode ........................................................................... 73 Tavolozze di colori .................................................................................... 76CAPITOLO 3

Controlli intrinseci ................................................ 79I controlli TextBox .......................................................................................... 79 Propriet run-time .................................................................................... 80 Intercettazione delle operazioni di tastiera ............................................. 81 Procedure di convalida per i numeri ....................................................... 82 La propriet CausesValidation e levento Validate ................................. 85 Campi a tabulazione automatica ............................................................. 88 Formattazione del testo ............................................................................ 88 I controlli TextBox multiriga ..................................................................... 92 I controlli Label e Frame ................................................................................ 93 I controlli Label ......................................................................................... 94 I controlli Frame ........................................................................................ 95 I controlli CommandButton, CheckBox e OptionButton ............................. 96 I comandi CommandButton ..................................................................... 96 I controlli CheckBox .................................................................................. 97 I controlli OptionButton ............................................................................ 97 Modalit grafica ........................................................................................ 98 I controlli ListBox e ComboBox .................................................................... 99 I controlli ListBox ...................................................................................... 99 I controlli ComboBox.............................................................................. 108 I controlli PictureBox e Image ..................................................................... 110 Il controllo PictureBox ............................................................................ 110 Il controllo Image .................................................................................... 114 I controlli ScrollBar ...................................................................................... 114 I controlli DriveListBox, DirListBox e FileListBox ...................................... 118

Sommario

vii

Altri controlli ................................................................................................ 120 Il controllo Timer..................................................................................... 120 Il controllo Line ....................................................................................... 121 Il controllo Shape .................................................................................... 122 Il controllo OLE ....................................................................................... 122 I menu ........................................................................................................... 122 Accesso ai menu in fase di esecuzione................................................. 124 Menu pop-up ........................................................................................... 125 Array di controlli .......................................................................................... 127 Condivisione di procedure di evento .................................................... 128 Creazione di controlli in fase di esecuzione ......................................... 129 Iterazione sugli elementi di un array di controlli ................................. 129 Array di voci di menu ............................................................................. 130CAPITOLO 4

Variabili e routine ................................................ 131Visibilit e durata delle variabili ................................................................. 131 Variabili globali ....................................................................................... 131 Variabili a livello di modulo ................................................................... 133 Variabili locali dinamiche ....................................................................... 133 Variabili locali statiche............................................................................ 134 Descrizione dei tipi di dati nativi ................................................................ 135 Il tipo di dati Integer ............................................................................... 135 Il tipo di dati Long ................................................................................... 135 Il tipo di dati Boolean ............................................................................. 136 Il tipo di dati Byte .................................................................................... 136 Il tipo di dati Single ................................................................................. 137 Il tipo di dati Double ............................................................................... 137 Il tipo di dati String ...................................................................................... 137 Il tipo di dati Currency ............................................................................ 138 Il tipo di dati Date .................................................................................... 139 Il tipo di dati Object ................................................................................ 139 Il tipo di dati Variant ............................................................................... 140 Il tipo di dati Decimal.............................................................................. 143 Tipi di dati aggregati .................................................................................... 143 Tipi definiti dallutente............................................................................ 143 Array ........................................................................................................ 145 Collection ................................................................................................. 155 Oggetti Dictionary ................................................................................... 161 Procedure e funzioni .................................................................................... 164 Visibilit ................................................................................................... 164 Parametri e valori di ritorno................................................................... 166 Gestione degli errori ............................................................................... 172

CAPITOLO 5

Le librerie di Visual Basic for Applications e di Visual Basic ................................................... 181Flusso di controllo ....................................................................................... 181 Istruzioni di salto..................................................................................... 181 Le istruzioni Loop ................................................................................... 185 Altre funzioni ........................................................................................... 187

viii Sommario

Lavorare con i numeri ................................................................................. 188 Operatori matematici ............................................................................. 188 Operatori di confronto ............................................................................ 189 Operatori booleani e bit-wise ................................................................ 190 Arrotondamento e troncamento ........................................................... 191 Conversione tra diverse basi numeriche .............................................. 191 Opzioni di formattazione dei numeri .................................................... 192 Numeri casuali ........................................................................................ 193 Il lavoro con le stringhe ............................................................................... 194 Operatori e funzioni stringa di base ...................................................... 195 Funzioni di conversione ......................................................................... 197 Sottostringhe Find e Replace ................................................................. 197 Opzioni di formattazione per le stringhe .............................................. 200 Uso di date e orari ....................................................................................... 201 Lettura e impostazione di data e ora correnti ...................................... 201 Aritmetica sulle date ............................................................................... 204 Opzioni di formato per i valori di data e ora ........................................ 205 Uso dei file ................................................................................................... 206 Gestione dei file ...................................................................................... 206 Gestione delle directory ......................................................................... 207 Iterazione su tutti i file di una directory ................................................ 208 Elaborazione di file di testo .................................................................... 211 Elaborazione di file di testo con delimitatore ....................................... 212 Elaborazione di file binari ...................................................................... 214 La gerarchia FileSystemObject .............................................................. 217 Interazione con Windows ............................................................................ 226 L oggetto App .......................................................................................... 226 L oggetto Clipboard ................................................................................ 227 L oggetto Printer ..................................................................................... 232 Esecuzione di altre applicazioni ............................................................. 234CAPITOLO 6

Classi e oggetti .................................................... 241I concetti di base .......................................................................................... 242 I principali vantaggi della programmazione a oggetti ......................... 242 Il primo modulo di classe ....................................................................... 244 Propriet, metodi ed eventi ........................................................................ 251 Propriet di sola lettura e di sola scrittura............................................ 251 Usi avanzati dei metodi .......................................................................... 257 Uso avanzato delle propriet ................................................................. 260 Attributi .................................................................................................... 270 La vita interna degli oggetti ........................................................................ 276 Cos veramente una variabile oggetto ................................................ 276 Il reference counter ................................................................................. 278 Le istruzioni che agiscono sugli oggetti ............................................... 283 L evento Class_Terminate ...................................................................... 285

CAPITOLO 7

Eventi, polimorfismo ed ereditariet ............. 291Eventi ............................................................................................................ 291 Eventi e riutilizzabilit del codice .......................................................... 291

Sommario

ix

Sintassi degli eventi ............................................................................... 292 Una prima applicazione di esempio completa ..................................... 294 Miglioramento dellapplicazione di esempio ....................................... 298 Multicasting ............................................................................................. 304 Polimorfismo ................................................................................................ 311 Uso del polimorfismo ............................................................................. 311 Polimorfismo e late binding .................................................................. 316 Uso delle interfacce ................................................................................ 316 Ereditariet ................................................................................................... 322 Ereditariet tramite delega .................................................................... 323 Derivazione della classe base ................................................................ 325 Ereditariet e polimorfismo ................................................................... 327 I vantaggi dellereditariet ..................................................................... 329 Gerarchie di oggetti ..................................................................................... 329 Relazioni tra gli oggetti .......................................................................... 330 Le collection class ................................................................................... 333 Gerarchie complesse .............................................................................. 336 L add-in Class Builder ............................................................................. 340CAPITOLO 8

Database ................................................................ 343Accesso ai dati ............................................................................................. 343 ODBC ....................................................................................................... 344 DAO .......................................................................................................... 347 RDO .......................................................................................................... 348 ODBCDirect ............................................................................................. 348 OLE DB ..................................................................................................... 349 ADO .......................................................................................................... 349 Visual Database Tools ................................................................................. 350 La finestra DataView ............................................................................... 350 La finestra Database Diagram ............................................................... 357 La finestra Query Builder ....................................................................... 359 Il data binding di ADO ................................................................................. 360 Il meccanismo di binding ....................................................................... 361 Uso di controlli associati ai dati ............................................................ 363 Il controllo ADO Data.............................................................................. 365 Formattazione dei dati............................................................................ 367 Data Form Wizard ................................................................................... 372 Il designer DataEnvironment ...................................................................... 373 Oggetti Connection ................................................................................. 374 Oggetti Command .................................................................................. 375 Data binding con il designer DataEnvironment ................................... 377 Comandi gerarchici ................................................................................ 380 Introduzione a SQL ...................................................................................... 383 Il comando SELECT ................................................................................ 384 Il comando INSERT INTO ....................................................................... 388 Il comando UPDATE ............................................................................... 389 Il comando DELETE ................................................................................ 389

x

Sommario

PARTE II CAPITOLO 9

L interfaccia utente .............................................391 Form e finestre di dialogo avanzati ............... 393Utilizzo standard dei form ........................................................................... 393 Form usati come oggetti ........................................................................ 393 Form riutilizzabili .................................................................................... 398 Form usati come visualizzatori di oggetti ............................................. 402 Creazione dinamica dei controlli ........................................................... 406 Form data-driven .................................................................................... 412 Form MDI ...................................................................................................... 417 Applicazioni MDI ..................................................................................... 417 Contenitori MDI polimorfici ................................................................... 421 Application Wizard ................................................................................. 423 Uso del drag-and-drop ................................................................................ 426 Drag-and-drop automatico .................................................................... 426 Drag-and-drop manuale ......................................................................... 428

CAPITOLO 10

Controlli standard di Windows - Parte I ........437Il controllo ImageList ................................................................................... 439 Aggiunta di immagini ............................................................................. 439 Estrazione e disegno di immagini ......................................................... 441 Il controllo TreeView .................................................................................... 443 Impostazione di propriet in fase di progettazione ............................. 443 Operazioni della fase di esecuzione ...................................................... 445 Tecniche avanzate ................................................................................... 450 Il controllo ListView ..................................................................................... 458 Impostazione di propriet in fase di progettazione ............................. 459 Operazioni della fase di esecuzione ...................................................... 461 Il controllo Toolbar....................................................................................... 469 Impostazione di propriet in fase di progettazione ............................. 470 Operazioni della fase di esecuzione ...................................................... 473 Il controllo TabStrip ..................................................................................... 476 Impostazione di propriet in fase di progettazione ............................. 476 Operazioni della fase di esecuzione ...................................................... 478 Il controllo StatusBar ................................................................................... 480 Operazioni della fase di esecuzione ...................................................... 482 Il controllo ProgressBar ............................................................................... 485 Impostazione di propriet in fase di progettazione ............................. 485 Operazioni della fase di esecuzione ...................................................... 486 Il controllo Slider ......................................................................................... 486 Impostazione di propriet in fase di progettazione ............................. 486 Operazioni della fase di esecuzione ...................................................... 486 Il controllo ImageCombo ............................................................................ 488 Impostazione di propriet in fase di progettazione ............................. 488 Operazioni della fase di esecuzione ...................................................... 488

Sommario

xi

CAPITOLO 11

Controlli standard di Windows - Parte II ...... 491Il controllo Animation .................................................................................. 491 Il controllo UpDown .................................................................................... 492 Impostazione di propriet in fase di progettazione ............................. 493 Operazioni della fase di esecuzione ...................................................... 494 Il controllo FlatScrollBar .............................................................................. 495 Il controllo MonthView ................................................................................ 496 Impostazione di propriet in fase di progettazione ............................. 496 Operazioni della fase di esecuzione ...................................................... 497 Il controllo DateTimePicker ......................................................................... 503 Impostazione di propriet in fase di progettazione ............................. 503 Operazioni della fase desecuzione ....................................................... 504 Il controllo CoolBar ...................................................................................... 506 Impostazione di propriet in fase di progettazione ............................. 507 Operazioni della fase di esecuzione ...................................................... 509

CAPITOLO 12

Altri controlli ActiveX ....................................... 513Il controllo MaskEdBox ............................................................................... 513 Impostazione di propriet in fase di progettazione ............................. 513 Operazioni della fase di esecuzione ...................................................... 515 Il controllo CommonDialog ......................................................................... 517 La finestra di dialogo Color .................................................................... 518 La finestra di dialogo Font ..................................................................... 518 Le finestre di dialogo Open e Save ....................................................... 524 Finestre della Guida ................................................................................ 530 Il controllo RichTextBox .............................................................................. 531 Impostazione di propriet in fase di progettazione ............................. 532 Operazioni della fase di esecuzione ...................................................... 532 Il controllo SSTab ......................................................................................... 540 Impostazione di propriet in fase di progettazione ............................. 540 Operazioni della fase di esecuzione ...................................................... 541 Il controllo SysInfo ....................................................................................... 544 Propriet .................................................................................................. 544 Eventi ....................................................................................................... 544 Il controllo MSChart .................................................................................... 545 Impostazione di propriet in fase di progettazione ............................. 547 Operazioni della fase di esecuzione ...................................................... 548

PARTE III CAPITOLO 13

Programmazione di Database .......................... 551 Il modello di oggetti ADO ................................. 553L oggetto Connection .................................................................................. 555 Propriet .................................................................................................. 555 Metodi ...................................................................................................... 559

xii

Sommario

Eventi ....................................................................................................... 561 La collection Errors ................................................................................. 564 L oggetto Recordset ..................................................................................... 564 Propriet .................................................................................................. 564 Metodi ...................................................................................................... 574 Eventi ....................................................................................................... 588 L oggetto Field .............................................................................................. 591 Propriet .................................................................................................. 591 Metodi ...................................................................................................... 595 La collection Fields ................................................................................. 597 L oggetto Command .................................................................................... 598 Propriet .................................................................................................. 598 Metodi ...................................................................................................... 600 L oggetto Parameter .................................................................................... 602 Propriet .................................................................................................. 602 Metodi ...................................................................................................... 603 La collection Parameters ........................................................................ 604 L oggetto Property ....................................................................................... 604 Espensioni ADO 2.1 DDL e Security ........................................................... 605 L oggetto Catalog .................................................................................... 607 Loggetto Table ........................................................................................ 608 L oggetto Column ................................................................................... 608 L oggetto Index ....................................................................................... 609 L oggetto Key .......................................................................................... 610 Gli oggetti View e Procedure ................................................................. 610 Gli oggetti Group e User ........................................................................ 611CAPITOLO 14

ADO al lavoro ....................................................... 613Impostazione di una connessione .............................................................. 613 Creazione della stringa di connessione ................................................ 613 Apertura della connessione ................................................................... 616 Elaborazione di dati ..................................................................................... 619 Apertura di un oggetto Recordset ......................................................... 619 Operazioni base sui database ................................................................ 625 Aggiornamenti batch ottimistici del client ........................................... 630 Uso degli oggetti Command .................................................................. 634 Uso del designer DataEnvironment ...................................................... 636 Tecniche avanzate ........................................................................................ 641 Eventi di Recordset ................................................................................. 641 Operazioni asincrone.............................................................................. 646 Stored procedure .................................................................................... 648 Recordset gerarchici ............................................................................... 655

CAPITOLO 15

Tabelle e report .................................................... 663I controlli DataCombo e DataList ................................................................ 663 Impostazione di propriet in fase di progettazione ............................. 664 Operazioni in fase di esecuzione ........................................................... 666

Sommario

xiii

Il controllo DataGrid .................................................................................... 669 Impostazione di propriet in fase di progettazione ............................. 670 Operazioni in fase di esecuzione ........................................................... 674 Il controllo Hierarchical FlexGrid ................................................................ 685 Impostazione di propriet in fase di progettazione ............................. 686 Operazioni in fase di esecuzione ........................................................... 689 Il designer DataReport ................................................................................. 695 Operazioni in fase di progettazione ...................................................... 695 Operazioni in fase di esecuzione ........................................................... 701

PARTE IV CAPITOLO 16

Programmazione ActiveX ........................... 711 Componenti ActiveX .......................................... 713Introduzione a COM ..................................................................................... 713 Breve storia di COM ............................................................................... 713 Tipi di componenti COM ........................................................................ 715 Creazione di un server ActiveX EXE .......................................................... 719 I passi fondamentali ............................................................................... 719 La propriet Instancing .......................................................................... 722 Passaggio di dati tra applicazioni .......................................................... 726 Gestione degli errori ............................................................................... 733 Componenti con interfacce utente ........................................................ 737 Problemi di compatibilit ....................................................................... 739 Registrazione di un componente ........................................................... 746 Chiusura del server ................................................................................. 747 Persistenza .............................................................................................. 748 Creazione di un server DLL ActiveX ........................................................... 753 Componenti in-process nellIDE di Visual Basic .................................. 753 Differenze tra componenti in-process e out-of-process ...................... 754 Aggiunta di form a una DLL................................................................... 757 Prestazioni ............................................................................................... 759 Estensione di unapplicazione con DLL satelliti ................................... 761 Componenti ActiveX a thread multipli ...................................................... 766 Modelli di threading ............................................................................... 767 Componenti EXE ActiveX multithread .................................................. 767 Componenti DLL ActiveX multithread .................................................. 773 Applicazioni di Visual Basic multithread .............................................. 774 Componenti ActiveX remoti ....................................................................... 780 Creazione e test di un componente remoto ......................................... 781 Configurazione di DCOM ....................................................................... 784 Implementazione di un meccanismo di callback ................................. 789

CAPITOLO 17

Controlli ActiveX .................................................793Fondamenti dei controlli ActiveX ............................................................... 793 Creazione di moduli UserControl .......................................................... 794

xiv Sommario

Esecuzione di ActiveX Control Interface Wizard .................................. 796 Aggiunta dei pezzi mancanti .................................................................. 799 L oggetto UserControl ................................................................................. 804 Il ciclo di vita di un oggetto UserControl .............................................. 804 L oggetto Extender.................................................................................. 805 L oggetto AmbientProperties ................................................................. 808 Implementare ulteriori caratteristiche .................................................. 811 Migliorare il controllo ActiveX .................................................................... 816 Propriet personalizzate ......................................................................... 816 Controlli contenitore ............................................................................... 826 Controlli trasparenti ................................................................................ 828 Controlli leightweight ............................................................................. 830 Data binding ............................................................................................ 833 Pagine delle propriet ............................................................................ 838 Trucchi da esperti ................................................................................... 845 Controlli ActiveX per Internet ..................................................................... 848 Problematiche della programmazione .................................................. 849 Download di componenti ....................................................................... 854 Licenze duso ........................................................................................... 856CAPITOLO 18

Componenti ADO ................................................ 859Classi data source ........................................................................................ 859 L evento GetDataMember ...................................................................... 860 Supporto per la propriet DataMember. .............................................. 863 Controlli ActiveX Data personalizzati .................................................... 866 Classi Data Consumer ................................................................................. 869 Data consumer semplici ......................................................................... 869 Data consumer complessi ...................................................................... 873 Gli OLE DB Simple Provider ....................................................................... 877 Struttura di un OLE DB Simple Provider .............................................. 878 La classe OLE DB Simple Provider ........................................................ 878 La classe data source ............................................................................. 885 La registrazione....................................................................................... 886 Verifica di OLE DB Simple Provider ...................................................... 887 Data Object Wizard ...................................................................................... 888 Preparazione del wizard ......................................................................... 888 Creazione della classe data-bound ........................................................ 890 Creazione di un UserControl data-bound ............................................. 893

PARTE V CAPITOLO 19

Programmazione per Internet ..........................897 Applicazioni Dynamic HTML ............................ 899Corso rapido di HTML ................................................................................. 900 Titoli e paragrafi ...................................................................................... 901 Attributi .................................................................................................... 902

Sommario

xv

Immagini ................................................................................................. 903 Collegamenti ipertestuali ....................................................................... 904 Tabelle ...................................................................................................... 905 Stili ........................................................................................................... 906 Form......................................................................................................... 908 Scripting .................................................................................................. 909 Introduzione a Dynamic HTML ................................................................... 913 Caratteristiche principali ........................................................................ 914 Tag ........................................................................................................... 915 Propriet .................................................................................................. 916 Propriet e scripting ............................................................................... 917 Propriet e metodi per il testo ............................................................... 919 Eventi ....................................................................................................... 921 Il modello di oggetti DHTML ....................................................................... 924 L oggetto Window ................................................................................... 924 L oggetto Document ............................................................................... 929 L oggetto TextRange ............................................................................... 932 Loggetto Table ........................................................................................ 934 Il designer DHTMLPage ............................................................................... 935 Un primo sguardo al designer DHTMLPage ........................................ 936 Programmazione di elementi DHTML ................................................... 939 Applicazioni DHTML ............................................................................... 944 Remote Data Services ................................................................................. 957 Data binding in DHTML .......................................................................... 958 Uso degli oggetti RDS ............................................................................ 963 Componenti business personalizzati .................................................... 965 Il controllo DHTML Edit ............................................................................... 970 Installazione ............................................................................................ 970 Propriet e metodi .................................................................................. 971CAPITOLO 20

Applicazioni per Internet Information Server...................................................................... 973Introduzione a Internet Information Server 4 ............................................ 973 Caratteristiche principali ........................................................................ 973 Microsoft Management Console ........................................................... 974 ASP (Active Server Pages) ..................................................................... 978 Il modello a oggetti ASP ............................................................................. 983 L oggetto Request ................................................................................... 984 L oggetto Response ................................................................................ 990 L oggetto Server ...................................................................................... 995 L oggetto Application ............................................................................. 998 L oggetto Session ................................................................................. 1000 L oggetto ObjectContext....................................................................... 1004 Componenti ASP ....................................................................................... 1004 Uso dei componenti negli script ASP ................................................. 1004 Uso di componenti ASP personalizzati ............................................... 1005 Le WebClass ............................................................................................... 1013 Prime impressioni ................................................................................. 1013 Tecniche di base delle WebClass ......................................................... 1020 Un tocco professionale ........................................................................ 1037

xvi Sommario

APPENDICE

Funzioni API di Windows ............................... 1043Un mondo di messaggi ............................................................................. 1043 Controlli TextBox a righe multiple ....................................................... 1045 Controlli ListBox ................................................................................... 1049 Controlli ComboBox ............................................................................. 1051 Funzioni di sistema .................................................................................... 1052 Directory di sistema e versione di Windows ...................................... 1052 La tastiera .............................................................................................. 1055 Il mouse ................................................................................................. 1056 Il Registry di Windows .............................................................................. 1060 Funzioni predefinite di Visual Basic .................................................... 1060 Le funzioni API ...................................................................................... 1062 Callback e subclassing .............................................................................. 1070 Tecniche di Callback ............................................................................. 1070 Tecniche di subclassing ........................................................................ 1074

Prefazione xvii

PrefazioneMi ha fatto un enorme piacere sapere che Francesco stava scrivendo questo libro. Certamente non sono pochi i libri su Visual Basic. Alla nostra rivista, Visual Basic Programmers Journal, ci arrivano montagne di libri ogni settimana, ma ci che Francesco ha fatto importante per vari motivi. Innanzitutto, tutto ci che scrive senzaltro valido. Lo sappiamo perch uno dei nostri pi stimati autori ed un oratore apprezzato alle nostre conferenze VBITS da San Francisco a Stoccolma. Oltre a tutto ci, egli riflette una visione pragmatica e immediatamente utile in tutto ci che scrive. un ottimo sviluppatore Visual Basic e possiede una predisposizione unica per i suggerimenti, i trucchi e le tecniche che aiutano i lettori a essere pi produttivi. Infine questo suo progetto riempie un grosso vuoto. Il libro tratta in modo completo Visual Basic, dalla prospettiva dello sviluppatore professionista, e non sono a conoscenza di alcun altro libro come questo. Esistono tre tipi di libri per sviluppatori. I libri del primo tipo sono quelli che vengono pubblicati frettolosamente non appena una nuova versione del prodotto viene messa in commercio. Sono validi ma presentano sempre problemi, perch sono stati scritti in modo frettoloso e sono basati su versioni beta, le cui funzionalit potrebbero non corrispondere a quelle della versione definitiva. Poich Visual Basic diventa sempre pi complesso, inoltre, gli autori non possono certo avere tutto il tempo necessario per conoscere a fondo il prodotto. Il secondo tipo sono i libri impara a scrivere una applicazione gestionale complessa in 7 giorni, che sfruttano le aspettative dei programmatori meno esperti promettendo di ottenere risultati impossibili. Infine vi sono i tomi enormi che trattano gli argomenti in modo approfondito. Questi in genere sono pi validi, ma se la vostra area di lavoro vasta, finirete col collezionare decine di questi volumi che non finirete mai di leggere. Ci che Francesco ha fatto completamente diverso. Egli ha dedicato oltre un anno e mezzo allo studio di Visual Basic 6, dalla prima beta agli ultimi aggiornamenti, per imparare a usare Visual Basic da sviluppatore professionista, e ora condivide queste sue conoscenze scrivendo un volume che in pratica una enciclopedia del linguaggio. Visual Basic diventa pi complesso ad ogni aggiornamento e padroneggiarlo completamente sempre pi difficile. Il libro di Francesco pu aiutarvi a raggiungere questa padronanza pi velocemente, magari facendovi apprendere cose che non avreste mai scoperto da soli. Al contrario di altre opere apparentemente simili, il libro non una rielaborazione della documentazione del linguaggio, e contiene una serie di tecniche per scrivere codice pi efficiente e in minor tempo, che sono il risultato del lavoro di Francesco. Vi sono anche delle esaurienti introduzioni a HTML, Dynamic HTML, scripting e programmazione ASP, argomenti importanti che mancano nella documentazione di Visual Basic. Questo un progetto ambizioso che ritengo possa essere utile a tutti gli sviluppatori Visual Basic, indipendentemente dal loro grado di esperienza. Distinti saluti, James E. Fawcette Presidente Fawcette Technical Publications Produttori di VBPJ, VBITS, JavaPro, Enterprise Development, The Development Exchange family of Web sites e altri servizi di informazione per sviluppatori.

Ringraziamenti

xix

RingraziamentiMolte persone mi hanno aiutato a scrivere questo libro ed una gioia per me avere lopportunit di ringraziarle pubblicamente. Vorrei ringraziare in particolare quattro dei miei migliori amici, che hanno dedicato varie serate e nottate alla revisione del manoscritto durante la sua stesura. Marco Losavio un eccezionale programmatore Visual Basic e il suo aiuto mi stato prezioso per il perfezionamento delle sezioni relative a VBA, classi e controlli. Luigi Intonti possiede quella speciale intuizione che fa di lui un grande sviluppatore e che ha utilizzato per aiutarmi in questo libro con numerosi trucchi e suggerimenti. Giuseppe Dimauro, il miglior programmatore C++ che abbia mai conosciuto da questo lato delloceano Atlantico, mi ha rivelato molti interessantidettagli sulla struttura interna di Windows. Infine, le sezioni relative alla programmazione di database e Internet non sarebbero mai state cos complete e accurate senza laiuto di Francesco Albano, che mi ha sempre stupito con la risposta corretta a tutte le mie domande su Jet, SQL Server e Windows DNA. Marco, Luigi, Giuseppe e Francesco sono autori tecnici italiani molto noti e potete leggere alcuni dei loro lavori sul mio sito Web www.vb2themax.com. Il libro contiene inoltre molte tracce delle mie conversazioni con altri due noti autori italiani. Giovanni Librando mi ha offerto la sua esperienza su ADO e COM, mentre Dino Esposito mi ha dato molti consigli e suggerimenti utili. Sono inoltre molto grato a Matt Curland, che in molte occasioni mi ha aiutato a capire cosa accade dietro le quinte di Visual Basic. Durante la stesura di un libro tecnico, acquisire conoscenza solo met del lavoro. Laltra met consiste nel mettere questa conoscenza in una forma che i lettori possono comprendere con facilit, specialmente quando la lingua in cui si scrive non la propria lingua madre. Recentemente molte persone hanno dedicato molto tempo a insegnarmi a scrivere meglio in inglese. Tra questi, i redattori di Visual Basic Programmers Journal, in particolare Lee Th e Patrick Meader. Vorrei inoltre ringraziare il capo redattore Jeff Hadfield, che mi ha consentito di riportare un paio di interessanti tecniche di programmazione apparse in origine nel supplemento Tech Tips della rivista e, ovviamente, leditore Jim Fawcette per avermi dato lopportunit di scrivere per VBPJ. Scrivere questo libro con Microsoft Press stata unesperienza entusiasmante e altrettanto lo stato conoscere alla fine le persone con cui avevo lavorato per nove mesi. Kathleen Atkins, Marzena Makuta e Sally Stickney sono tra i migliori editor con cui un autore possa sperare di collaborare. Nonostante tutto il testo che hanno dovuto riconvertire da corsivo a normale e viceversa, hanno sempre trovato il tempo di spiegarmi tutte le regole dellarte editoriale. Un grande grazie a Eric Stroo, che ha dato il via al progetto e mi ha offerto la possibilit di scrivere il libro che da sempre sognavo di scrivere. Grazie infine a Dave Sanborn, Keith Jarrett, Pat Metheny e Jan Garbarek, alcuni dei musicisti che hanno inconsapevolmente fornito la colonna sonora per questo volume. La loro musica mi ha tenuto compagnia durante molte notti e mi ha aiutato ancora di pi delle migliaia di tazzine di caff espresso che ho bevuto in questi mesi. Non ho ancora menzionato le due persone che mi hanno aiutato pi di chiunque altro. Non un caso che siano anche le persone che pi amo. Grazie a te Andrea, per avere girovagato nel mio studio insistendo nel volere giocare sulle mie ginocchia con quegli strani oggetti chiamati il mouse e la tastiera. Alla fine ho dovuto cedere il mio

xx

Ringraziamenti

sistema Windows NT Server per i tuoi esperimenti con Paint e WordArt, ma in cambio mi hai continuamente ricordato la gioia di essere padre di un vivace bimbo di due anni. Grazie a te, Adriana, per avermi convinto a scrivere questo libro e per avermi aiutato ad avere lumore giusto e la concentrazione necessaria per svolgere al meglio questo lavoro. Vivere insieme assomiglia sempre pi ad un affascinante viaggio senza fine. Cosaltro posso dire? Sei la moglie migliore che avrei mai potuto sognare di avere. Questo libro dedicato a voi due.

Introduzione

xxi

IntroduzioneNelle sue sei versioni, Visual Basic si trasformato da un semplice linguaggio di programmazione per Microsoft Windows a un ambiente di sviluppo fin troppo complesso, in grado di dare vita praticamente a qualsiasi cosa, da piccole utility a applicazioni client/server di enorme complessit. Per questo motivo scrivere un libro che trattasse tutte le caratteristiche e le funzioni del linguaggio diventato un obiettivo difficile e in effetti allinizio di questo progetto ero abbastanza intimorito, e spesso ho pensato che sarebbe stato meglio scrivere pi libri su argomenti pi specifici e circoscritti. Sono stati necessari molti mesi di intenso lavoro, ma alla fine sono riuscito a riunire in questo volume tutti gli argomenti che volevo trattare. Sono sicuro che dal punto di vista del lettore un unico libro scritti da un solo autore sia molto meglio che avere a che fare con tanti libri scritti da persone differenti, oppure un unico volume scritto a pi mani, in quanto assicura un approccio uniforme ai problemi ed evita il rischio di incorrere in ripetizioni. Programmare Microsoft Visual Basic 6, tuttavia, mi ha impegnato al punto che mi piace considerarlo come lunione di tanti libri in uno. La lista seguente vi aiuter a comprendere cosa troverete in questo volume. Una panoramica delle nuove funzioni di Visual Basic 6 Visual Basic 6 presenta molte nuove funzioni, in particolare nellarea database e Internet. Tra queste, le applicazioni ADO, DHTML e WebClass, per citare le principali. Ho analizzato queste nuove funzioni e ho mostrato come potete sfruttarle per creare applicazioni di nuova generazione. Ma allo stesso tempo ne ho evidenziato alcuni punti deboli, in modo che il lavoro sia per voi pi rapido. Questo uno dei grossi vantaggi di un libro che non viene messo sul mercato immediatamente dopo luscita del prodotto. Una guida per la programmazione a oggetti Con la versione 4 di Visual Basic avete iniziato a costruire classi, ma in realt sono pochissimi gli sviluppatori che usano oggetti nelle proprie applicazioni nel modo corretto. Ci non deve sorprendere, in quanto la maggior parte degli esempi di codice a oggetti sono classi giocattolo che hanno a che fare con cani, pulci e altri animali. Tutto questo difficilmente stimola limmaginazione dei programmatori che ogni giorno hanno a che fare con fatture, prodotti, clienti e ordini. In questo libro non troverete il codice sorgente completo per un programma di fatturazione e magazzino orientato agli oggetti, ma sicuramente imparerete a fare un uso pratico delle classi nei capitoli 6, 7 e 9 oppure sfogliando le 100 classi disponibili sul CD allegato, alcune delle quali possono essere riutilizzate immediatamente nelle vostre applicazioni. Nei capitoli dal 16 al 20 scoprirete come elevare alle massime prestazioni le funzionalit della programmazione a oggetti per creare controlli ActiveX, componenti ActiveX locali o remoti e alcune varianti meno conosciute, come i componenti per ADO, RDS e ASP. Una valida guida di riferimento per i linguaggi Visual Basic e VBA Non avevo intenzione di scrivere un libro che ripetesse gli argomenti gi trattati dai manuali sul linguaggio e dalla guida in linea del prodotto. Se volete conoscere la sintassi delle parole chiave di Visual Basic, non comprate un libro: premete F1 e leggete ci che appare sullo schermo. Ho organizzato il materiale nei capitoli dal 2 al 5 in modo che ogni propriet, metodo ed evento venga introdotto in modo logico. Inoltre, cosa pi importante, vedrete tutte queste funzioni in azione, con una grande quantit di codice sorgente che potrete studiare. Unanalisi approfondita della tecnologia ADO La programmazione di database importante per la maggior parte degli sviluppatori di Visual Basic, e ADO ha molto da offrire in questo settore.

xxii Introduzione

Questo il motivo per cui ho dedicato a esso 4 dei 20 capitoli del volume (i capitoli 8, 13, 14 e 15), partendo dalle caratteristiche pi semplici per finire ad illustrare gli argomenti pi avanzati, come gli aggiornamenti batch ottimistici, le operazioni asincrone, il recordset gerarchici e alcune delle nuove funzioni di ADO 2.1. Nel capitolo 18 sono inoltre descritti i componenti data-aware e gli OLE DB Simple Provider. Il capitolo 19 contiene una sezione sui Remote Data Services, che mostra come creare client leggeri che accedono a un database remoto attraverso Internet. Una semplice introduzione alla programmazione Internet Con Visual Basic 6 potete creare ottime applicazioni per Internet, ma per farlo dovete gi conoscere i fondamenti dello sviluppo in HTML, Dynamic HTML, VBScript e Active Server Pages. Per questo motivo i capitoli 19 e 20 trattano tutti questi argomenti, oltre a unintroduzione a Microsoft Internet Information Server 4 e una guida per la creazione di componenti ASP. Con queste basi vi sar facilissimo utilizzare le nuove funzioni per Internet. Una guida per la conversione di applicazioni Visual Basic 5 Ogni volta che viene pubblicata una nuova versione di questo linguaggio, i programmatori sono impazienti di scoprire cosa sia cambiato rispetto alla versione precedente. Non soltanto una questione di curiosit: gli sviluppatori devono poter determinare quanto tempo occorrer per modificare le applicazioni esistenti adattandole alla nuova versione. E ovviamente devono avere la certezza che le nuove funzioni non abbiano un impatto negativo sul codice esistente. In tutto il volume, ogni qualvolta descritta una nuova caratteristica di Visual Basic, compare a lato del testo unicona Novit, in modo che sia possibile individuare rapidamente tutte le nuove funzionalit. Un indice di tutte le novit di Visual Basic 6, che non stato possibile inserire in questo testo, disponibile sul mio sito www.vb2themax.com. Una selezione di tecniche di programmazione avanzate Per alcuni sviluppatori, programmazione avanzata significa scrivere molte chiamate API, magari basandosi su alcune tecniche oscure che solo pochi esperti possono capire. La verit che potete risolvere molti seri problemi di programmazione semplicemente con Visual Basic, come dimostrer in questo volume. Ma se vi piace la programmazione API, consultate lappendice per imparare come accedere al Registry, sfruttare le funzioni nascoste dei controlli di Visual Basic e apprendere tecniche avanzate di programmazione come il subclassing. Troverete inoltre una DLL semplice da usare che permette di eseguire il subclassing in tutta sicurezza allinterno dellambiente, oltre al relativo codice sorgente. Ecco alcune informazioni riguardanti la struttura del volume, articolato in cinque parti. La parte I dedicata alla programmazione in generale. Il capitolo 1 presenta unintroduzione allambiente per chi non ha mai lavorato con Visual Basic. I capitoli dal 2 al 5 descrivono form, controlli intrinseci e il linguaggio VBA e contengono molte routine ottimizzate e riutilizzabili. I capitoli 6 e 7 descrivono tutte le caratteristiche relative agli oggetti che verranno utilizzate nei capitoli successivi. Il capitolo 8 introduce le nuove funzioni di database di Visual Basic 6, tra cui i Visual Database Tools e il designer DataEnvironment, e definisce alcuni concetti di cui si far uso nella parte II ma che saranno sviluppati completamente nella parte III. Nella parte II vengono esaminati a fondo i form e i controlli ActiveX. Il capitolo 9 approfondisce i concetti relativi alla natura a oggetti dei form, e mostra come sfruttarla per creare moduli di interfaccia riutilizzabili, form parametrici e contenitori MDI generici che possono essere riusati in molte applicazioni. Il capitolo descrive inoltre come sfruttare la capacit di creazione dinamica dei controlli per produrre form data-driven. Nei capitoli 10 e 11 sono descritti i controlli comuni di Windows che possibile usare in Visual Basic, tra cui i nuovi controlli ImageCombo, MonthView, DateTimePicker

Introduzione xxiii

e CoolBar. Il capitolo 12 contiene la descrizione di altri controlli forniti con il linguaggio, come MaskEdBox e SSTab. La parte III continua da dove si era interrotto il capitolo 8. Nel capitolo 13 viene descritto il oggetti ADO 2.0, con tutte le sue propriet, metodi ed eventi. Vengono inoltre descritte le estensioni DDL e di sicurezza di ADO 2.1. Il capitolo 14 illustra come applicare ADO nei programmi e tratta altri argomenti avanzati come i Recordset gerarchici e le stored procedure. Il capitolo 15 illustra gli strumenti e i controlli addizionali che potete utilizzare per creare facilmente applicazioni di database, come i controlli DataGrid, Hierarchical FlexGrid e il designer DataReport. Nella parte IV vengono descritti i componenti ActiveX che potete creare in Visual Basic. Il capitolo 16 illustra i componenti del codice ActiveX, dagli argomenti pi elementari a quelli pi complessi, come i callback COM, il multithreading, le DLL satelliti e la sicurezza DCOM. Il capitolo 17 descrive i controlli ActiveX e guida nella creazione dei controlli sempre pi complessi. In questo capitolo sono inoltre trattate le principali nuove caratteristiche di Visual Basic 6 relative a questarea, come i controlli windowless e alcune tecniche avanzate che vi permettono di ottenere le migliori prestazioni. Il capitolo 18 illustra i nuovi tipi di componenti ActiveX che potete creare con Visual Basic 6, come i data source, i data consumer e gli OLE DB Simple Provider. La parte V composta da due lunghi capitoli. Il capitolo 19 tratta la programmazione client e presenta unintroduzione ad HTML, Dynamic HTML e VBScript, seguita da una accurata descrizione del designer DHTMLPage. Il capitolo contiene inoltre una descrizione dettagliata di Remote Data Services e le possibilit offerte dai componenti che potete istanziare su un server Web remoto. Il capitolo 20 tratta invece la programmazione per Internet Information Server 4: inizia con unintroduzione al modello di oggetti ASP, continua con la creazione di componenti per Active Server Pages e termina con una descrizione approfondita delle WebClass di Visual Basic 6. Le descrizioni passo per passo vi guideranno nella creazione di unapplicazione ASP completa che consente agli utenti remoti di immettere i propri ordini allinterno di un database di prodotti. Lappendice riguarda la programmazione API. La prima parte dellappendice mostra come aumentare le potenzialit dei controlli standard, recuperare importanti valori di configurazione del sistema, controllare la tastiera e il mouse e accedere al Registry. Nella seconda parte viene descritto come sfruttare al meglio le tecniche avanzate, come il callback e il window subclassing. Sul CD allegato troverete codice sorgente completo per tutti gli esempi descritti o menzionati nel testo. Per la precisione si tratta di 150 progetti e 2 megabyte di codice sorgente ricco di commenti, che vi impegner a lungo. Troverete inoltre una raccolta di oltre 170 routine, pronte per essere riutilizzate nelle vostre applicazioni. Buon divertimento. F.B.

Parte I

CONCETTI DI BASE

Capitolo 1

Primi passi in Microsoft Visual Basic 6Questo capitolo presenta unintroduzione allambiente di sviluppo Visual Basic e le fasi necessarie alla creazione del primo programma; introduce inoltre alcuni concetti fondamentali per luso di questo linguaggio, fra cui il modello di programmazione guidato da eventi. Se questo non il vostro primo approccio a Visual Basic, molto probabilmente conoscete gi gran parte dei concetti trattati, ma tenete presente che potreste scoprire interessanti suggerimenti per utilizzare al meglio questo ambiente e alcune anticipazioni sulle caratteristiche che distinguono la versione 6 dalle precedenti. Vi consiglio quindi di dare almeno una rapida lettura, indipendentemente dal vostro grado di esperienza.

L IDE o ambiente di sviluppo integratoGran parte della diffusione di Visual Basic dovuta al suo ambiente di sviluppo integrato o IDE (Integrated Development Environment). In teoria possibile modificare i programmi Visual Basic utilizzando un editor qualunque, compreso Notepad (Blocco note), ma in realt non ho mai incontrato un programmatore cos pazzo da farlo. LIDE, infatti, vi fornisce tutto ci di cui avete bisogno per creare applicazioni di qualsiasi tipo, scriverne il codice, testarle, ottimizzarle e produrre infine i file eseguibili. Tali file sono svincolati dallambiente, quindi possono essere distribuiti agli utenti finali, i quali possono eseguirli sulle loro macchine, anche se su queste non installato Visual Basic.

Avvio dellIDEPer avviare lIDE di Visual Basic potete procedere in vari modi.s Potete eseguire lambiente Visual Basic 6 dal pulsante Start di Windows; in questo caso la

posizione esatta del comando varia a seconda del fatto che Visual Basic sia installato come parte di Microsoft Visual Studio.s Potete creare sul vostro desktop unicona di collegamento allIDE e avviare lIDE facendo

doppio clic sullicona.s Con linstallazione di Visual Basic vengono registrate nel sistema operativo le estensioni .vbp,

.frm, .bas e altre ancora, quindi potete fare doppio clic su qualsiasi file di Visual Basic per avviare lIDE.s Se avete installato Microsoft Active Desktop, potete creare un collegamento allIDE di Visual

Basic sulla barra delle applicazioni del sistema. Questo probabilmente il modo pi veloce

4

Parte I - Concetti di base

per avviare lIDE, in quanto un pulsante sulla barra delle applicazioni simile a unicona di collegamento sul desktop, ma potete accedervi senza dover ridurre a icona le altre finestre aperte. Non sottovalutate limportanza di poter aprire lIDE di Visual Basic rapidamente, perch durante lo sviluppo di componenti COM potreste dover aprire pi istanze dellambiente contemporaneamente e pi volte in ogni sessione di lavoro.

Scelta del tipo di progettoQuando avviate lIDE di Visual Basic per la prima volta, dovete selezionare il tipo di progetto che desiderate creare nella finestra di dialogo New project (Nuovo progetto) della figura 1.1. In questo capitolo, come in molti altri della prima parte del libro, creeremo progetti Standard EXE (EXE standard), quindi vi baster fare clic sul pulsante Open (Apri) o premere il tasto Invio per iniziare il lavoro a un progetto che, una volta compilato, diventer unapplicazione EXE autonoma. Se desiderate evitare questa operazione quando avvierete lIDE in futuro, potete selezionare la casella di controllo Dont show this dialog in future (Non visualizzare questa finestra in futuro).

Le finestre dellIDESe avete gi lavorato con Visual Basic 5, lIDE di Visual Basic 6 (figura 1.2) vi apparir familiare. Gli unici elementi diversi rispetto alla versione precedente sono i due nuovi menu, Query e Diagram (Diagramma), e due nuove icone sulla barra degli strumenti Standard. Esaminando poi il contenuto dei menu, potete scoprire che sono presenti nuovi comandi, in particolare nei menu Edit (Modifica), View (Visualizza), Project (Progetto) e Tools (Strumenti). In generale per le modifiche sono minime e se conoscete lambiente Visual Basic 5 potete iniziare subito a lavorare. Se invece avete utilizzato solo versioni precedenti alla 5, sarete sorpresi dal numero di cambiamenti nellambiente di lavoro. Per cominciare, lIDE ora unapplicazione MDI (Multiple Document

Figura 1.1 La finestra di dialogo New project che appare allavvio dellambiente di sviluppo Visual Basic 6.

Capitolo 1 - Primi passi in Microsoft Visual Basic 6

5

Interface, ovvero con interfaccia a documenti multipli), quindi potete ridimensionare la finestra principale dellapplicazione e le finestre documento in essa contenute con un unico gesto. Se lo preferite, potete comunque ripristinare la modalit SDI (Single Document Interface, ovvero interfaccia a documento singolo): scegliete il comando Options (Opzioni) dal menu Tools, fate clic sulla scheda Advanced (Avanzate) e selezionate la casella di controllo SDI development environment (Ambiente di sviluppo SDI).Barra dei menu Barra degli strumenti principale Object Browser (Visualizzatore oggetti)

Finestra di form Finestra del codice

Finestra Properties (Propriet) Finestra Project (Progetto)

Finestra Locals (Variabili locali) Finestra Immediate (Immediata) Finestra Toolbox (Casella degli strumenti)

Finestra Form Layout (Disposizione form) Finestra Watches (Espressioni di controllo)

Figura 1.2 Lambiente di sviluppo Visual Basic 6 con molte finestre aperte.Seguono brevi descrizioni dei vari elementi dellIDE che vi aiuteranno a capire le loro diverse funzioni, specialmente se questa la vostra prima esperienza con Visual Basic. Per visualizzare le varie finestre dellIDE, potete utilizzare i comandi del menu View. Per molte finestre, come vedremo, sono disponibili shortcut o icone sulla barra degli strumenti principale.s La finestra Project presenta lelenco di tutti i moduli contenuti nellapplicazione. Potete

visualizzare questi moduli raggruppati per tipo o in ordine alfabetico, facendo clic sulla prima icona a destra nella barra degli strumenti della finestra Project. Potete quindi visualizzare

6

Parte I - Concetti di base

il codice di ciascun modulo o loggetto associato a esso (per esempio un form), facendo clic rispettivamente sulla prima o sulla seconda icona a sinistra. Per visualizzare velocemente la finestra Project o per portarla in primo piano rispetto alle altre finestre, premete i tasti Ctrl+R o fate clic sullicona Project Explorer (Progetto) sulla barra degli strumenti Standard.s Il designer per i form, ossia la finestra nella quale si disegnano i form, serve a progettare

linterfaccia utente della vostra applicazione. Ogni applicazione pu contenere pi form, quindi potete aprire pi finestre di form contemporaneamente. Sia Visual Basic 5 sia Visual Basic 6 supportano altri designer, i designer per gli UserControl e gli UserDocument.s La finestra Toolbox contiene oggetti che potete aggiungere a un form o a un altro elemento

in fase di progettazione. In Visual Basic disponibile un insieme predefinito di controlli, i cosiddetti controlli intrinseci o built-in, ma potete aggiungere altri controlli ActiveX alla finestra Toolbox. Per evitare di riempirla con troppi oggetti, potete creare pi schede in essa: fate clic destro nella finestra Toolbox, selezionate il comando Add tab (Aggiungi scheda) nel menu di scelta rapida e assegnate un nome alla scheda. Alla nuova scheda potete aggiungere controlli ActiveX esterni o trascinare in essa uno o pi controlli dalla scheda General (Generale). Per eliminare o rinominare qualsiasi scheda, fate clic destro sulla scheda e selezionate il comando Elimina scheda o Rinomina scheda nel menu di scelta rapida. Non potete eliminare n rinominare la scheda Generale.s La finestra del codice serve per scrivere il codice che determina il comportamento dei form

e di altri oggetti dellapplicazione. Potete mantenere aperte pi finestre del codice contemporaneamente, per vedere il codice relativo a vari form o, pi in generale, a vari moduli della vostra applicazione. Non potete aprire due finestre del codice per lo stesso modulo, ma potete comunque dividere una finestra del codice in due porzioni distinte e indipendenti, trascinando il piccolo rettangolo grigio posto appena sopra la barra di scorrimento verticale.

SUGGERIMENTO Potete visualizzare velocemente la finestra del codice associata a un form o a un altro designer, premendo il tasto funzione F7 mentre attivo il designer in questione. Se invece aperta una finestra che mostra del codice associato a un designer, premete la combinazione di tasti Maiusc-F7 per visualizzare il designer corrispondente.

s La finestra Properties elenca tutte le propriet delloggetto selezionato e vi permette di mo-

dificarle (potete cambiare per esempio i colori di primo piano e sfondo del form o del controllo selezionato). Le propriet possono essere visualizzate in ordine alfabetico o raggruppate per categorie e in fondo alla finestra compare una breve descrizione della propriet selezionata. Quando selezionate un oggetto, le sue propriet vengono automaticamente visualizzate nella finestra Properties. Se la finestra non visibile, potete aprirla velocemente premendo il tasto F4 o facendo clic sulla sua icona nella barra degli strumenti.s La finestra Color Palette (Tavolozza colori) vi permette di assegnare velocemente un colore

a un oggetto, per esempio al controllo selezionato in una form. Per assegnare il colore di primo piano a un oggetto, fate clic sul colore desiderato. Per assegnare il colore di sfondo a un oggetto, fate clic sul quadrato pi grande nellangolo superiore sinistro della finestra Color Palette. Se invece fate clic su una delle celle vuote in fondo alla finestra, potete definire un colore personalizzato.

Capitolo 1 - Primi passi in Microsoft Visual Basic 6

7

s La finestra Form Layout mostra come il form verr visualizzato durante lesecuzione del pro-

gramma. Potete trascinare un form nella posizione dello schermo in cui esso dovr apparire durante lesecuzione e potete confrontare le dimensioni e posizioni relative di due o pi form. Facendo clic destro su questa finestra, potete visualizzare le relative guide di risoluzione, che vi permettono di controllare come verrebbero visualizzati i form con risoluzioni di schermo diverse da quella corrente.s La finestra Immediate vi consente di immettere un comando o unespressione Visual Basic

e vederne il risultato utilizzando il comando Print (che pu anche essere abbreviato in ?). Nella modalit interruzione (o break), ovvero quando sospendete temporaneamente un programma in esecuzione, potete usare questi comandi per visualizzare il valore corrente di una variabile o di unespressione. Potete inoltre scrivere messaggi diagnostici (ad esempio per creare una traccia di come il programma viene elaborato) dal codice della vostra applicazione a questa finestra, utilizzando listruzione Debug.Print. Poich la finestra Immediate non visibile quando lapplicazione viene compilata ed eseguita allesterno dellambiente di sviluppo, tali istruzioni diagnostiche non vengono incluse nel file eseguibile. Il metodo pi veloce per aprire la finestra Immediate la shortcut Ctrl+G.

SUGGERIMENTO Non esiste alcun comando di menu e pulsante di alcuna barra degli strumenti che vi permetta di eliminare il contenuto della finestra Immediate. Il modo pi veloce per farlo premere la shortcut Ctrl+A per selezionare tutto il suo contenuto e quindi premere il tasto Canc per elimlinarlo. In alternativa, dopo avere selezionato il contenuto della finestra, potete digitare ci che desiderate per sostituirlo.

s Object Browser uno degli strumenti pi importanti a disposizione degli sviluppatori in Visual

Basic, in quanto permette di esplorare le librerie esterne per conoscere gli oggetti di queste, le relative propriet, i metodi e gli eventi. Con Object Browser potete inoltre trovare velocemente qualsiasi routine in qualsiasi modulo della vostra applicazione. Per aprire Object Browser potete premere il tasto F2 o fare clic sulla relativa icona sulla barra degli strumenti Standard.s La finestra Locals attiva solo durante lesecuzione di un programma. Essa elenca i valori di

tutte le variabili locali di un modulo o una routine. Se una variabile essa stessa un oggetto (ad esempio un form o un controllo) compare un segno pi (+) a sinistra del suo nome, per indicare che possibile espanderla ed esaminarne le propriet.s La finestra Watches svolge una doppia funzione: permette di monitorare costantemente il

valore di una variabile o unespressione nel programma (anche di una variabile globale, che non si pu visualizzare in una finestra Locals) e permette inoltre di interrompere lesecuzione di un programma quando una determinata espressione diventa vera oppure ogniqualvolta il suo valore cambia. Potete aggiungere una o pi espressioni di controllo utilizzando il comando Add watch (Aggiungi espressione di controllo) dal menu Debug, oppure selezionando il comando Add watch dal menu di scelta rapida che appare facendo clic destro nella finestra Watches stessa.s La finestra Call Stack (Stack di chiamate), che non presente nella figura 1.2, compare solo

quando interrompete lesecuzione di un programma e premete Ctrl+L. Essa mostra tutte le routine in attesa per il completamento della routine corrente e si tratta di un utile strumen-

8

Parte I - Concetti di base

to di debug, in quanto permette di capire quale percorso di esecuzione ha portato alla situazione attuale. Notate che la finestra Call Stack una finestra modale, quindi dovete chiuderla prima di riprendere la normale esecuzione.Novit

s La finestra Data View (Visualizzazione dati) nuova di Visual Basic 6 (figura 1.3) e in sostan-

za uno strumento integrato per lamministrazione dei database, lesplorazione della loro struttura e degli attributi delle loro tabelle e dei loro campi. Questa finestra molto versatile soprattutto nella connessione a database Microsoft SQL Server o Oracle perch vi permette di aggiungere ed eliminare tabelle, visualizzazioni e campi, nonch di modificare stored procedure. Qualsiasi database sia in uso, spesso potete trascinare tabelle e campi dalla finestra Data View in altre finestre dellIDE. Per visualizzare questa finestra, scegliete il comando Data View (Finestra Visualizzazione dati) dal menu View o fate clic sulla relativa icona nella barra degli strumenti Standard. La maggior parte delle finestre descritte possono essere ancorate, cio fissate a un lato della finestra principale dellIDE, e compaiono sempre sopra le altre. Molte di queste finestre sono ancorate per impostazione predefinita, sebbene le uniche che appaiono allavvio dellIDE siano Toolbox, Project, Properties e Form Layout. Potete controllare lancoraggio di ogni finestra in due modi: fate clic destro sulla finestra e selezionate o deselezionate il comando Dockable (Ancorabile) dal menu di scelta rapida oppure selezionate il comando Options dal menu Tools, fate clic sulla scheda Docking (Ancoraggio) e selezionate o deselezionate la casella di controllo relativa alla finestra che desiderate ancorare.

Figura 1.3 La finestra Data View vi permette di creare interattivamente una nuova visualizzazione in un database SQL Server.

Capitolo 1 - Primi passi in Microsoft Visual Basic 6

9

I menuIn questa sezione sono descritti i principali comandi presenti nei menu e questa rapida panoramica vi aiuter a trovare le funzioni desiderate al momento di usarle. Non descriver dettagliatamente tutti i comandi, in quanto la maggior parte sono legati a funzioni avanzate di Visual Basic che vedremo pi avanti.s Il menu File contiene i comandi per aprire e salvare progetti o gruppi di progetti di Visual

Basic (in Visual Basic 6 possibile aprire pi progetti contemporaneamente), per salvare il modulo corrente, per stampare lintero progetto o sue porzioni selezionate e per creare il file eseguibile del progetto.s Il menu Edit (Modifica) contiene i comandi di modifica tipici, come Cut (Taglia), Copy (Co-

pia), Paste (Incolla), Find (Trova), Replace (Sostituisci), Undo (Annulla), Repeat (Ripeti) e i comandi che agiscono su tabelle di database, i quali sono abilitati solo quando visualizzata la struttura di un database o un diagramma di database. Il menu include inoltre un gruppo di comandi relativi a Microsoft IntelliSense, una funzione dellIDE di Visual Basic che, in fase di digitazione del codice, vi permette di completare automaticamente i comandi, visualizzare piccole finestre contenenti la sintassi di funzioni e argomenti e cos via.s Il menu View (Visualizza) rappresenta il principale strumento per visualizzare le finestre

dellambiente di sviluppo descritte sopra e include inoltre alcuni comandi relativi ai database, che sono abilitati solo quando in uso un tool per la gestione di database.s Il menu Project (Progetto) permette di aggiungere moduli al progetto corrente, fra cui mo-

duli di form, moduli standard, moduli di classe, moduli UserControl e cos via. Permette inoltre di aggiungere moduli designer esterni, cruciali per molte nuove funzioni di Visual Basic 6. Gli ultimi tre comandi del menu sono particolarmente utili perch aprono rispettivamente le finestre di dialogo References (Riferimenti), Components (Componenti) e Project Properties (Propriet Progetto).s Il menu Format (Formato) permette di allineare e dimensionare uno o pi controlli in qual-

siasi finestra di progettazione. Potete centrare un controllo sul form e aumentare o ridurre la distanza fra i controlli di un gruppo. Una volta ottenuto il form di aspetto desiderato, potete selezionare lopzione Lock Controls (Blocca controlli), per evitare di spostare o dimensionare accidentalmente i controlli con il mouse.s Il menu Debug contiene comandi usati di norma quando le applicazioni vengono testate

nellIDE. Potete eseguire il codice passo per passo, visualizzare il valore di una variabile o di unespressione e impostare uno o pi punti di interruzione (o breakpoint) nel codice. I punti di interruzione sono particolari punti nel codice che, quando vengono raggiunti durante lesecuzione, provocano la sospensione dellesecuzione e lattivazione della modalit interruzione. Potete inoltre creare punti di interruzione condizionali, espressioni che vengono controllate man mano che ciascuna istruzione viene eseguita. Quando il valore di un punto di interruzione condizionale cambia o la condizione che avete specificato diventa vera, il programma entra in modalit interruzione e potete quindi eseguirne facilmente il debug.s Il menu Run (Esegui) probabilmente il pi semplice e contiene i comandi per eseguire lap-

plicazione in fase di sviluppo, sospende