Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduzione alla
Programmazione Visuale
Per introdurvi nel modo migliore alla programmazione visuale, partiamo dal
vecchio Basic, delineandone le seguenti caratteristiche:
Concetto di evento
Le basi della
programmazione
Esempio: Se non usassimo tale clausola, le variabili che Visual Basic creerà,
potranno essere infinite, ovvero:
Un programma può contenere delle variabili che memorizzano valori che non
cambiano mai. Il loro uso è similare alle variabili, ma non si può ovviamente
modificare il suo valore in fase di esecuzione. Stiamo parlando di costanti
Option Explicit
Sub Main
Dim dato as Integer
dato=numero
dato=dato+67
msgbox(“valore di numero costante:” & numero)
msgbox(“valore di numero modificato:” & dato)
End Sub
numero=numero+78
Variant (con Dim datonum Qualsiasi valore numerico fino all'intervallo di un 16 byte
numeri) Double
Definito Type arch L'intervallo di ciascun elemento è identico a quello Numero richiesto
dall’utente Cognome as del relativo tipo di dati sopraelencato. degli elementi
utilizzando string*20
type Nome as
string*20
End type
Dim dato as
Arch
Boolean Dim flag as True o False 2 byte
Boolean
Esempio:
Quando si crea un’array statico, si nota durante la stesura del codice, ciò che
osservate nella figura in basso:
Se non si specifica l’indice inferiore dell’array, Visual Basic presume che sia 0, a
meno che non si utilizzi un’istruzione Option Base 1 all’inizio di ogni modulo.
Nella creazione degli array dinamici, si può specificare l’indice inferiore, quando
si utilizza l’istruzione redim
Nomi(0)=”Giorgio”
Tale errore viene generato anche quando si supera l’indice superiore dell’array
o della matrice.
Diciamo qualcosa sulla matrice dei controlli (ossia degli oggetti definiti sul form
che hanno tutti la stessa proprietà Name).
Lbletichetta(indice).nomeproprietà
Lbletichetta(indice).nomeproprietà=<valore>
Sub Main
Dim inizio as Integer
Dim fine as Integer
Fine=10
For inizio=1 to fine
Msgbox(“Ciao Francesco” & “ “ & inizio & “ “ & “volta”)
Next inizio
End Sub
……….
Il ciclo For viene utilizzato ogni qual volta si conosce a priori il numero di volte
che un gruppo di istruzioni devono essere ciclate. La variabile inizio stabilisce
la posizione iniziale dalla quale partire; La variabile fine invece il numero di
volte in cui il loop delle istruzioni comprese deve essere eseguito
While Condizione
Istruzione 1
Istruzione 2
Istruzione 3
….
Istruzione k
….
Istruzione n
Wend
Do
Istruzione 1
Istruzione 2
Istruzione 3
….
Istruzione k
….
Istruzione n
Loop until condizione
Do while condizione
Istruzione 1
Istruzione 2
Istruzione 3
…
Istruzione k
…
Istruzione n
Loop
Do
Istruzione 1
Istruzione 2
Istruzione 3
…
Spalluzzi Francesco - Manuali.Net © 2005 Tutti i diritti riservati 7
CORSO DI VISUAL BASIC 6.0 Lezione n. 2
Istruzione k
…
Istruzione n
Loop while condizione
L’esempio classico è dato dal seguente problema: Dati dei numeri eseguire
la loro somma. Tra i dati di ingresso non viene fornita l’informazione di quanti
numeri il problema ha bisogno per calcolarne la somma. La struttura iterativa
For..Next non può essere utilizzata. Però la struttura iterativa While… Wend o
Do while condizione ….. Loop possono essere utilizzate in maniera indifferente.
(1) L’espressione booleana è un’espressione che assume due valori vero (True)
o Falso (False) è può essere qualsiasi espressione numerica
…..
Scelta=”S”
While scelta=”S”
Istruzione 1
Istruzione 2
Istruzione 3
…
Istruzione k
…
Istruzione n
Wend
Sub Main()
Dim scelta As String
Dim cts As Integer
Dim numero As Integer
scelta = "S"
While scelta = "S"
numero = InputBox("Inserisci un numero:")
cts = cts + numero
scelta = InputBox("Vuoi continuare S/N:")
Wend
MsgBox ("somma:" & cts)
End Sub
Poi esiste la struttura iterativa Do….. Loop Until condizione. Questa struttura
iterativa ha la condizione impostata alla fine. Almeno una volta il loop delle
istruzioni viene eseguito. Si dice anche che questa struttura iterativa cicla
per falso. Finchè la condizione risulta falsa, le istruzioni comprese vengono
eseguite, altrimenti termina il ciclo
Dello stesso problema forniamo il codice Visual Basic, applicando tale struttura
iterativa
Sub Main()
Dim scelta As String
Dim cts As Integer
Dim numero As Integer
Do
numero = InputBox("Inserisci un numero:")
cts = cts + numero
scelta = InputBox("Vuoi continuare S/N:")
Loop Until scelta = "N"
End Sub
Sub Main()
Dim ct as integer
Do while ct<=10
ct=ct+1
Msgbox(“Ciao Francesco” & “ “ & ct & “ “ & “volta”)
Loop
End Sub
La struttura di controllo Select Case può essere sviluppata con una serie di If ..
Then… Else
Struttura di un
progetto VB
Per i moduli standard è stata associata, per compatibilità con il vecchio Basic,
l’estensione Bas; per i moduli di classe l’estensione cls; per i moduli di form
hanno estensione frm.
Infatti è possibile creare un menu in italiano e poi a seconda delle altre lingue
tali voci di menu cambiano in base alla lingua scelta e tali informazioni possono
essere riprese dal file risorse.
All’avvio di Visual Basic viene avviato il Project Template, ossia una finestra di
dialogo dove vengono riportate tutte le tipologie di applicazioni realizzabili.
Esse variano con la versione installata sul proprio Personal Computer.
Presentiamo nella figura qui sotto il Project Template di Visual Basic 6.0
versione Enterprise:
Abbiamo:
Nel prosieguo delle lezioni daremo cenni sugli ActiveX Document Dll e ActiveX
Document Exe e qualcosa sull’architettura di una IIS Application (ossia
un’applicazione in linguaggio Active Server Page con Visual Basic integrato,
eseguibile in Internet Information Service (componente di windows 2000,xp
professional, 2003 server).
Se dovessimo cliccare con il tasto destro del mouse sul nome del progetto, dal
menu contestuale che appare possiamo aggiungere un nuovo oggetto (vedi
figura)
A questo oggetto principale, possono essere aggiunti oggetti dello stesso tipo
(ossia altri form, o form già creati e salvati con l’estensione frm), oppure altri
elementi come:
Alterniamo, alla lettura delle prime tre lezioni del corso, un esempio classico
per avviarvi a progettare un’interfaccia grafica molto semplice:
Nella cartella esempi trovate un file zippato applicsaluto.zip nel quale trovate il
file di progetto, l’applicazione Stand-alone (eseguibile fuori dall’ambiente di
sviluppo di VB6), l’interfaccia grafica dell’applicazione (frmsaluto.frm).
• MDICHILD
• MaxButton
• MinButton
OSSERVAZIONE
&Saluto
Nella cartella filmati troverete un file Avi che vi guiderà a creare l’esercizio
commentato in quest’ultimo paragrafo della terza lezione del corso ‘prima
applicazione VB6.avi’
Osservazione:
Ogni controllo intrinseco che vedete nella ToolBox, per essere portato su una
form, richiede una procedura, che io divido in due tempi:
Sebbene tutti i controlli intrinseci siano diversi per le funzioni che assolvono
durante l’esecuzione dell’applicazione, presentano una serie di proprietà
comuni:
NewObj è una variabile oggetto, come spiegato nella lezione 2 sulle basi della
programmazione.
Gli eventi che possono essere associati ai controlli intrinseci li vediamo nella
finestra di codice, in questo modo:
Ecco una finestra dalla quale scorreranno tutti i possibili eventi registrati per
quel controllo
Cliccando con il mouse sulla scritta Ciao, apparirà in modo grafico, ciò che è
stato scritto sotto forma codice. Il clic del mouse genera l’evento OnClick
associato all’oggetto Label (etichetta)
Nelle prime lezioni abbiamo trattato l’argomento dei tipi di dati che Visual Basic
mette a disposizione quando dichiariamo le variabili
Type archivio
Cognome As String*30
Nome As String*30
Indirizzo As String*30
End type
Con questa riga di codice si dichiara in modo statico l’array di record, in quanto
viene assegnata a priori la dimensione (ossia di quanti elementi è costituito)
Così avremo:
…..
…..
N.b Se non si usa l’istruzione Redim, la struttura dati dichiarata con la variabile
arrayrec non risulta disponibile per la memorizzazione dei dati.
Type archivio
Cognome As String
Nome As String
Città As String
End type
Prima di far ciò descriviamo due funzioni importantissime di Visual Basic, che
trovano applicazione per array o matrici
Option Explicit
Option Base 1
Type archivio
cognome As String
nome As String
city As String
End Type
Sub main()
Dim stringa As String
Dim j As Integer
Dim stringat As String
Dim indice As Integer
Dim modcity As String
Dim citynew As String
Dim MODIFICATO As String
numelem = 5
'Assegnare dei valori all'array di record
ReDim arrayrec(numelem)
arrayrec(1).cognome = "Rossi"
arrayrec(1).nome = "Marco"
arrayrec(1).city = "Bari"
arrayrec(2).cognome = "Rizzi"
arrayrec(2).nome = "Marco"
arrayrec(2).city = "Barletta"
arrayrec(3).cognome = "Romino"
arrayrec(3).nome = "Marco"
arrayrec(3).city = "Giovinazzo"
arrayrec(4).cognome = "Ricchiuti"
arrayrec(4).nome = "Marco"
Spalluzzi Francesco - Manuali.Net © 2005 Tutti i diritti riservati 3
CORSO DI VISUAL BASIC 6.0 Lezione n. 5
arrayrec(4).city = "Bari"
arrayrec(5).cognome = "Retoldo"
arrayrec(5).nome = "Luigi"
arrayrec(5).city = "Trani"
'Procedere alla modifica della città
For j = 1 To UBound(arrayrec)
stringa = Str(j) & " " & arrayrec(j).cognome & vbCrLf
stringat = stringat + stringa
Next j
stringat = "Elenco cognomi" & vbCrLf & stringat
indice = InputBox(stringat)
modcity = "Città da modificare per:" & arrayrec(indice).cognome & vbCrLf
modcity = modcity & vbCrLf & "Città vecchia:" & arrayrec(indice).city & vbCrLf
citynew = InputBox(modcity, "Nuova città")
'Modifica della città vecchia con la città nuova
arrayrec(indice).city = citynew
'ARRAY MODIFCATO
MODIFICATO = "COGNOME:" & arrayrec(indice).cognome & vbCrLf
MODIFICATO = MODIFICATO & vbCrLf & "NOME:" & arrayrec(indice).nome &
vbCrLf
MODIFICATO = MODIFICATO & vbCrLf & "CITTA':" & arrayrec(indice).city
MsgBox MODIFICATO, , "DATI MODIFICATI"
End Sub
Arrayrec(indice).city=citynew
codice cognome
arrayrec(indice).cognome=””
arrayrec(indice).nome=””
arrayrec(indice).city=””
For j = 1 To UBound(arrayrec)
Flag=false
if indice=j then
flag=true
end if
If flag=false
stringa = Str(j) & " " & arrayrec(j).cognome & vbCrLf
stringat = stringat + stringa
end if
Next j
stringat = "Elenco cognomi" & vbCrLf & stringat
MsgBox (stringat)
Come potete verificare voi stessi, non avviene una redifinizione dell’indice, ma
non viene praticamente visualizzato l’arrayrec(indice) con i campi
cognome,nome,city nullo.
Dalla finestra di proprietà del controllo, è possibile fare doppio clic su tale
proprietà, e selezionare. dal nostro Hard disk, uno dei tipi di file grafici elencati
in precedenza, per caricarlo nel controllo.
Tale funzione viene utilizzata anche per assegnare uno sfondo ad un form.
Infatti una delle proprietà modificabili del form è proprio Picture. Anche in
questo caso è di lettura e scrittura (ossia è possibile fare l’operazione di
assegnazione con la funzione LoadPicture in modalità di esecuzione
dell’applicazione).
Viene settata la proprietà Picture dell’oggetto Form e si imposta uno sfondo con
l’immagine realizzata con un qualsiasi programma di grafica.
Vediamo una demo per capire la funzione della proprietà Stretch del controllo
Immagine. (Aprire il file avi Stretch_Picture nella sotto-cartella Filmati della
cartella vb6)
Dato il fatto che attualmente i computer risultano molto veloci, sarà difficile
verificare l’efficienza o meno tra i due controlli. A meno che si scrivano
applicazioni per computer meno recenti, si consiglia di utilizzare il controllo
casella Immagine per sfruttare la sua flessibilità.
Oltre questi due controlli per caricare elementi grafici su un form, ne esistono
altri due per disegnare:
Una volta trascinato il Controllo linea, sul Form, dalla casella degli strumenti, si
disegnano linee alla stessa maniera di utilizzare Macromedia Fireworks.
Costante Descrizione
1 – Solid Linea continua
2 – Dash Linea tratteggiata
3 – Dot Linea punteggiata
4 – Dash Dot Ogni trattino è seguito da un punto
5 – Dash – Dot Dot Ogni trattino è seguito da due punti
A differenza del controllo Linea che disegna soltanto linee, il controllo forma (o
shape) supporta il disegno di figure geometriche diverse, a seconda della
costante enumerativa assegnata alla proprietà shape.
Costante Descrizione
0 – Rectangle Rettangolo
1 – Square Quadrato
2 – Oval Disegna ellisse
3 – Circle Cerchio
4 – RoundRectangle Rettangolo con angoli smussati
5 – Rounded square Quadrato con angoli smussati
Il metodo per caricare tali valori, che si vedono in figura, si chiama AddItem
Form1.shape1.Fillstyle=List2.ListIndex
Nel paragrafo precedente abbiamo visto due controlli che ci hanno permesso di
disegnare linee e forme. Inoltre Visual Basic ci permette di disegnare anche con
l’uso di metodi grafici.
Metodo Pset
Metodo Line
Metodo Circle
Grazie a questi metodi, utilizzati con l’oggetto Form, si possono disegnare linee
e forme senza l’uso di controlli in fase di esecuzione dell’applicazione
Noterete in figura che il nuovo form ha il colore della barra del titolo più
marcata; mentre la barra del titolo del primo Form ha un colore più pallido e
ciò significa che non ha lo stato attivo, ma può essere dato, con un clic del
mouse sulla barra, da parte dell’utente
Vediamolo in figura
Il colore del pixel disegnato è dato dal parametro ForeColor dell’oggetto Form
o dell’oggetto casella immagine
Disegnando adesso lo stesso pixel con il metodo Pset, prenderà il nuovo colore
impostato con tale proprietà
Anche il metodo Pset ha il parametro Color. I valori che il parametro Color può
assumere sono le costanti intrinseche di Visual Basic per i colori:
Se invece si adotta lo stesso colore dello sfondo del form, il pixel disegnato
viene disattivato
Costante Descrizione
vbBlack Nero
vbRed Rosso
vbGreen Verde
vbYellow Giallo
vbBlue Blue
vbMagenta Color Magenta
vbWhite Bianco
vbCyan Color Ciano
Esempio:
Osservazione: Utilizzando il ciclo for si uniscono più pixel alla volta e si ottiene
una linea del colore indicato dalla costante intrinseca (vedi tabella costanti
colori)
La sintassi è la seguente
Il risultato:
Ci sono altri metodi grafici che disegnano anche forme curvilinee (ossia cerchi o
ellissi)
Spalluzzi Francesco - Manuali.Net © 2005 Tutti i diritti riservati 9
CORSO DI VISUAL BASIC 6.0 Lezione n. 6
Il metodo circle ha molti parametri noi diamo per il fine di questo corso questa
sintassi:
L’enunciato
1 casella di testo per inserire il nome del drive (lettore cd) dove è stato inserito
il cd audio per l’ascolto
Una casella di riepilogo per gestire che traccia audio si desidera ascoltare
Basta inserire il nome dell’unità dove si trova il cd nella relativa casella di testo
Premere il pulsante di comando sino a contenere la traccia che si vuole
ascoltare
Selezionare la traccia audio dalla lista di riepilogo (1)
Si attiverà il controllo multimedia con i relativi pulsanti; cliccare sul pulsante
Play simile a quello che si trova su tutti i comuni video registratori
(1)
Quando si preme il pulsante Aggiungi tracce naturalmente si segue la struttura
dei file che stanno sul cd audio
Viene aggiunta l’unità perché sul cd audio non troverete mai un nome di file
track00.cda
Con il metodo AddItem viene aggiunto il valore di nome alla lista delle tracce
audio
Per concludere questo esercizio, vi devo suggerire come portare sul form il
controllo Microsoft Multimedia Controllo 6.0
Per prima cosa, basta fare tasto destro sulla casella degli strumenti
Esempio: Ho disegnato un semplice sommario con due livelli: nel primo livello
ho inserito i titoli delle prime 5 lezioni; nel secondo i titoli delle successive 5
Layer1 1-5
Layer2 6-10
Il contenuto che si vede nello stage sarà visualizzato nel controllo aggiunto sul
form quando si premerà il pulsante Layer 1-5
Il contenuto che si vede nello stage sarà visualizzato nel controllo aggiunto sul
form quando si premerà il pulsante Layer 6-10
Su ogni layer creato ho aggiunto l’azione di stop in modo tale che quando viene
caricato il movie non viene visualizzato il contenuto dello stage precedente.
Quando si premerà il pulsante Play verrà caricato il layer 0 (cioè il primo layer
del filmato) con il metodo LoadMovie. A tale metodo viene assegnato il
percorso dove si trova il file swf compilato con Macromedia Flash
Quando si premerà il secondo pulsante Layer 6-10 vengono eseguite due righe
di codice importanti
Ciò che abbiamo visto a proposito del controllo ShockwaveFlash è una dei tanti
aspetti della gestione del controllo (quello più semplice da realizzare).
Le Api di Windows
Siamo finalmente arrivati alla lezione un pochino, se non proprio delicata dal
titolo Le Api di Windows. Cercherò di usare un linguaggio molto semplice e
chiaro da comprendere senza utilizzare del tecnicismo per evitare che poi nella
pratica non si riesca a individuare l’applicazione in cui farne uso.
Dopo questa premessa, diciamo che Visual Basic, come qualsiasi altro
linguaggio di programmazione Visuale, estende le sue funzioni, avendo
accesso, attraverso questo strumento (c.d. Application Programmino
Interface di Windows), alle routine interne di Windows
In altri termini la funzione Api dichiarata in Visual Basic viene caricata per il
tempo necessario all’esecuzione, successivamente se non più necessaria, il
sistema operativo Windows la scarica, ottimizzando la gestione delle risorse
hardware.
Possiamo comprendere bene che ogni programma Windows ha delle sue dll
proprie, le quali possono far capo a quelle comuni; se non funziona una a
cascata non funzionerà più l’applicazione che le richiama.
Any E’ un tipo di dati universale: Vengono passati per riferimento gli argomenti
con questo tipo di dati e non serve la parola ByVal (Il passaggio per valori e
per riferimento sarà chiaro tra 4 lezioni)
ATOM E’ l’integer di Visual Basic. E’ un tipo di dati che supporta dati interi
Sempre passati per valore con la clausola ByVal davanti al nome della variabile
BOOL E’ l’intero lungo di Visual Basic (Long) Come per il tipo di dati precedente
gli argomenti dichiarati vengono passati con la clausola ByVal (passaggio per
valore)
Char Dati tipo byte Anche in questo gli argomenti sono passati per valore
COLOREF Di tipo Long utilizzati per definire valori di colori. Gli argomenti sono
sempre passati per valore
DWORD Di tipo Long (interi), i cui argomenti, dichiarati nella Api chiamata,
sono sempre passati per valore
Null Di tipo long (interi) utilizzati per valori non inizializzati Gli argomenti sono
passati per valore
LPSTR, LPCSTR Corrispondenti dei dati di tipo string Anche in quest’ultimo caso
sono passati gli argomenti per valore.
Visualizzatore Api
Per caricare la casella Api type, dal menu file occorre richiamare il file
testuale WinApi32.txt, come si vede in figura
Ecco la finestra di codice che riflette le informazioni prese dal visualizzatore Api
C:\CORSO è una cartella di modello. Nel senso che apitest verrà creata
con le informazioni prese da Corso. Es Se corso è di sola lettura, anche
apitest sarà con l’attributo di sola lettura.
Il punto di forza di Visual Basic è quello di gestire con strumenti semplici le basi
di dati di qualsiasi formato Dbf database creati con Visual Dbase della borland
oppure con le precedenti versioni di Dbase iii plus e Dbase IV sotto il
precedente sistema operativo Ms-Dos, Mdb database creati con l’applicativo
Microsoft Access nelle sue varie versioni Txt database in formato testo
e database più professionali come SQL Server.
Il controllo intrinseco, che si trova sulla casella degli strumenti di Visual Basic.
ossia il controllo Data permette di accedere a database tipo:
Proprietà Descrizione
Connect Scegliere dalla lista di riepilogo il formato di basi di
dati al quale connettersi
Visual Basic in sede di progettazione genera l’errore che verrà discusso nelle
lezioni successive, ma che in questo paragrafo ve ne mostriamo comunque
l’alert di errore:
Dal menu Progetto –Riferimenti si ottiene tale finestra di dialogo che elenca
tutte le librerie necessarie a far funzionare correttamente l’applicazione
Visual Database Tools è un’utility che semplifica molto la gestione di una base
di dati, e permette a chi sa smanettare con Sql (linguaggio standard per
creare,estrapolare,aggiornare,cancellare informazioni), di effettuare la
creazione della struttura di una tabella o di fare un’inserimento dati, di
interrogare la base di dati attraverso istruzioni del modulo DML DI SQL (Data
manipulation Language o Linguaggio di manipolazione dei dati, istruzione
Select, update, insert into per intenderci).
Si accede dal menu Aggiunta (o Add-in per la versione Inglese di Visual Basic)
selezionando Visual Data Manager. Appare la seguente interfaccia grafica:
Per rispondere alla domanda formulata alla chiusura del paragrafo precedente
si procede nel modo seguente:
Si accede, attraverso questa interfaccia grafica, dal menu file, alla voce
Nella finestra successiva potrete dare un nome alla base di dati e premere il
pulsante salva
Per creare una nuova tabella occorre cliccare con il tasto del destro del
mouse sulla prima finestra a sinistra e selezionare New Table.
Una volta aggiunti tutti campi per la tabella, che troveremo nella casella di
riepilogo Field List, si preme il pulsante Build the table (Costruisci la tabella)
Dal menu Utilità di Visual Data Manager c’è Data Form Designer
Premendo Build the Form, viene generato il form per la gestione della base di
dati associata alla tabella tabprova.
Il controllo Data sta nella parte bassa del form, tutte le caselle di testo sono
associate alla tabella tabprova e troviamo poi una serie di pulsanti:
Il Data Environment
• Oggetto Connection
• Oggetto Command
Option Explicit
Dim ct As Integer
Dim k As Integer
Dim k1 As Integer
L’enunciato End al posto di Exit Sub ha lo stesso effetto del metodo Unload
Form1
La finestra QueryBuilder
Vediamo una demo: Nella sottocartella filmati della cartella vb6 troverete
creaquery.avi
Il precitato strumento aiuta tutti coloro che non hanno mai smanettato con le
istruzioni del linguaggio Sql. Come si potrà osservare dalla riproduzione del
filmato, l’istruzione Sql viene generata automaticamente, dopo che l’utente ha
impostato campi, criterio di ordinamento su un campo della tabella, aiutandosi
con l’intuitiva interfaccia grafica a disposizione
La scelta del font (ossia la finestra di dialogo per scegliere il tipo di carattere, la
sua dimensione, il colore)
Con l’aiuto della grafica creiamo un’applicazione che visualizzi tali finestre di
dialogo:
Il codice per gestire tale applicazione molto semplice è quello che si vede in
figura:
Una delle frontiere, che ha reso popolare l’utilizzo di Visual Basic, è stata quella
di poter interagire con altri software microsoft e non. Il paragrafo s’intitola
Excel con Visual Basic
End Sub
Menu Progetti - > Riferimenti -> Dalla finestra di dialogo sceglieremo Microsoft
Internet Controls
Sono rimasti da analizzare pochi controlli intrinseci della ToolBox, che definisco
avanzati perché permettono di effettuare operazioni molto professionali
Vediamone il funzionamento
Quando viene eseguito tale metodo, appare una finestra di dialogo come
quella in figura:
In un contenitore Ole può essere aggiunto solo un oggetto alla volta. Altrimenti
occorre aggiungere sul form più controlli Ole
Un pulsante di comando
Codice
PROJECT PROPERTIES
Step n° 8: Facciamo L’F5 (ossia clicchiamo con il tasto di funzione F5, per
avviare l’applicazione)
• La collection Connection
• La collection Recordset
• La collection Command
Questi tre oggetti sono tra loro indipendenti, ma possono correlarsi attraverso
una proprietà comune che prende il nome di ActiveConnection
Con ADO, invece se dovessimo connetterci allo stesso formato di db, abbiamo
bisogno prima di configurare l’oggetto connection.
Per il motivo che gli oggetti Ado elencati sono indipendenti tra loro,
l’oggetto Recordset ha la caratteristica di essere molto flessibile
rispetto a quello dell’oggetto Dao.
…..
Dim objConn as Adodb.Connection
Set objConn=new Adodb.Connection
Objconn.Open Adodc1.ConnectionString
……
….
Set objconn=New Adodb.Connection
Objconn.OpenConnection Adodc1.ConnectionString,”Admin”,””
DataSource Adodc1
DataField cognome
RowSource Adodc1
ListField cognomen
Visual Basic
avanzato:Procedure e
funzioni
Le Subroutine e le function Public e Private
La riposta è affermativa.
Tutte le variabili di tipo pubblico sono visibili a tutti gli oggetti del progetto
(form, moduli di classe, moduli standard aggiunti)
Per la prova del 9 facciamo lo startup project sul modulo 2 che ha routine Sub
Main () End sub..
Domanda: Che significa che un argomento della subroutine viene passato per
valore, ossia con l’uso della clausola Byval?
Domanda: Che significa che un argomento della subroutine viene passato per
riferimento, ossia con l’uso della clausola ByRef?
Il passaggio per valore consente alla routine di accedere ad una copia della
variabile; di conseguenza il valore effettivo della variabile non può essere
modificato dalla routine passante
Sub Main
Dim numero as integer
Numero=56
Call passavalore(numero)
Msgbox “valore:” & numero
End sub
Con queste due routine, la prova del nove la verifichiamo in questo modo:
dopo l’esecuzione della routine passavalore, il valore della variabile numero
sarà sempre 56 e non 112 come visualizzato dalla finestra di dialogo eseguita
in passavalore
Finestra di codice
Visual Basic
avanzato:La gestione
degli errori
Errori logici e errori sintattici
Una prima categoria di errori (o bugs) che si possono presentare sono quelli
sintattici. Si definisce errore di sintassi un errore nella grammatica del
linguaggio di programmazione.
txtCognome.text=indirizzo
txtnome.text=numerociv
txtindirizzo.text=cognome
Errori di run-time
Txtnumero.txt
Txtnumero1.txt
Lblrisultato.caption=txtnumero.txt/txtnumero1.txt
Questi sono errori di run-time che se non vengono gestiti bloccano applicazioni
di mole di codice.. Solo che quando si dà l’eseguibile o si distribuisce un
controllo utente rilasciato, questo controllo smette di funzionare e occorre
(‘richiamare a urla il programmatore’)
Lblrisultato.caption=txtnumero.txt/txtnumero1.txt
Visual Basic
avanzato:La librerie di
Visual Basic For
Application
La libreria di Visual Basic For Application (VBA)
Notiamo al primo posto che uno dei grandi moduli della libreria
MSVBVM60.DLL è denominato Visual Basic For Application (siglato
VBA).
Visual Basic
avanzato:Modificare
le proprietà di una
Form e il metodo
ShowFont
Tutorial Modificare le proprietà di una Form e il metodo ShowFont
Ciò grazie alle finestre di dialogo ShowFont, ShowColor del controllo Microsoft
Common dialog control 6.0
Ciò che vedete sul form (sull’angolo superiore sinistro) è il controllo Microsoft
Common Dialog control 6.0
Ci sono due pulsanti Cambia Colore form e il pulsante cambia carattere form.
Nell’ultima figura abbiamo visto che gli obiettivi che ci eravamo prefissati a
inizio lezione sono stati raggiunti positivamente
Area di codice
Visual Basic
avanzato:form.print
Per compatibilità con il vecchio Basic, le due istruzioni Print e Cls sono
diventate metodi dell’oggetto form e hanno conservato la medesima funzione,
quella rispettivamente di stampare qualcosa sul form, e di cancellare ciò che
viene stampato
Con il primo pulsante si scrive la scritta Ciao mondo alle coordinate currentX e
currentY
Eserciziario di Visual
Basic: Parte Prima
Tutti coloro che scrivono corsi.., videocorsi, libri su Visual Basic partono con il
loro esempio classico Hello World, io invece voglio seguire la strada che la
prima applicazione Windows da creare con Visual Basic sia:
Infatti gli elementi memorizzati nella terza lista sono definite somme parziali
A tutti i controlli, quando vengono aggiunti sul form, visual basic genera
automaticamente il valore della proprietà TabIndex. Infatti premendo il tasto
Spalluzzi Francesco - Manuali.Net © 2005 Tutti i diritti riservati 1
CORSO DI VISUAL BASIC 6.0 Lezione n. 16
In questo caso essendoci delle liste di riepilogo, lo stato attivo, all’avvio del
form, lo prende la prima lista di riepilogo
Se non viene mai premuto il tasto Tab , detta lista conserva sempre lo stato
attivo
Case Else
Msgbox(“Non hai premuto I tasti richiesti dall’applicazione”)
End Select
OSSERVAZIONE
Per acquisire un dato da parte dell’utente con la tastiera , Visual Basic mette a
disposizione la funzione InputBox
Il codice che esce fuori, è frutto sempre di un’analisi accurata dei dati
ottenuti in via output con quelli attesi e verifica se l’algoritmo trovato
funziona e funzioni sempre e non in alcuni casi particolari.
Quali sono i problemi dei quali occuparci nella gestione dei file sequenziali?
Terzo passo: La scrittura delle informazioni, all’interno del file aperto, al quale
viene associato un Handle (canale), avviene attraverso l’enunciato
Print#<handle o canale>
OSSERVAZIONI TECNICHE
L’intervallo da 1 a 255 incluso per aprire file che non sono accessibili da altre
applicazioni
Spalluzzi Francesco - Manuali.Net © 2005 Tutti i diritti riservati 4
CORSO DI VISUAL BASIC 6.0 Lezione n. 16
L’intervallo da 256 a 511 incluso per aprire file che sono accessibili da altre
applicazioni
Si può usare a tal proposito la funzione Freefile() per conoscere l’handle di
canale libero e non utilizzato da nessuna istruzione Open.
Per record intendiamo una riga logica del file (es. cognome, nome, indirizzo,
telefono, etc.) che contiene un gruppo di dati completo.
Il primo record di un file inizia dalla posizione 1, mentre tutti i record successivi
sono scritti a partire da locazioni con incrementi pari alla lunghezza del file
Ciò che rende potente l’uso di questo particolare accesso ai file, è quello di
utilizzare qualsiasi tipo di variabile come singola unità.
Eserciziario di Visual
Basic: Parte Prima
Un applicazione Windows che si rispetti ha, dopo la barra del titolo, un menu.
Si definisce menu un’insieme di azioni organizzati in più voci, per mezzo delle
quali è possibile accedere in maniera molto rapida a tutte le funzionalità
previste per l’applicazione che si sta realizzando.
Visual Basic all’interno del suo ambiente di sviluppo, ha uno strumento che ci
permette di creare, modificare, cancellare delle voci e disporle secondo un
certo nostro ordine. Lo strumento prende il nome di Editor di menu
L’editor di menu è accessibile per mezzo anche dello short cut da tastiera con
Ctrl+E
…..
Dim objapplic As Object
Set objapplic = CreateObject("Word.Application")
objapplic.Visible = True
…..
Per aprire Microsoft Excel, basta scrivere le seguenti righe di codice (esse sono
di riepilogo a quelle già viste in una delle lezioni precedenti)
Eserciziario di Visual
Basic: Parte Prima
Con questo esercizio dobbiamo gestire l’errore di run-time 3343 “questo errore
in inglese recita Unrecognized Database Format”. Ciò significa che il controllo
Data, apparentemente non sia adatto a leggere database in formato access
2000,2002 (versione xp) e di Office System (versione 2003).
Il controllo Data solleva tale errore perché è stato progettato per funzionare
con il Jet (motore di gestione dei database) Engine 3.5, mentre per accedere a
database con versione 2000 il motore di gestione è passato alla versione 3.6
Ricordo che ogni controllo Data aggiunto, Visual Basic assegna un numero
progressivo (e avremo Data1, Data2, e così via)
Ammettiamo che la variabile Recordset istanziata sia rs, la riga di codice per
impostare la proprietà Recordset dell’oggetto Data1 è
Set data1.Recordset=rs
Vi ricordo che oltre al controllo Data per l’accesso ai db, esiste il controllo Ado
Data Control (che può essere aggiunto alla toolbox per mezzo della finestra
Componenti – Ctrl+T). Viene sollevato l’errore “Unrecognized Database
Format” nel caso si utilizzi il provider di accesso ai db Microsoft Jet.OLEDB.3.51
anziché il nuovo in versione 4.0. Il vecchio provider di accesso è quello
installato automaticamente con Visual Basic.
Dopo questi brevi indicazioni teoriche, possiamo creare l’interfaccia utente che
utilizzi il controllo Data per accedere ad un database Access in formato Access
2003
• cognome
• nome
• indirizzo
• telefono
• email
Al solito lo aggiungiamo sul form è otteniamo quello che vediamo nella figura
qui in basso
Quando viene prelevato il controllo dalla casella degli strumenti e aggiunto sul
form, MsFlexgrid1 (nome a cui dobbiamo sempre riferirci nel nostro codice) è
ad una sola colonna.
Msflexgrid1.cols=4
Msflexgrid1.rows=5
Otteniamo:
Msflexgrid1.textmatrix(0,1)=”cognome”
Msflexgrid1.textmatrix(0,2)=”nome”
Msflexgrid1.textmatrix(0,3)=”indirizzo”
Option Explicit
Dim numcolonne As Integer
Dim numrighe As Integer
Dim righeins As Integer
righeins = righeins + 1
If righeins > numrighe Then
'aggiungiamo una nuova riga
MSFlexGrid1.Rows = righeins + 1
End If
For colonne = 1 To numcolonne
MSFlexGrid1.Col = colonne
MSFlexGrid1.Row = righeins
MSFlexGrid1.Text = txt_vettore(colonne - 1).Text
Next colonne
End Sub
numcolonne = MSFlexGrid1.Cols - 1
numrighe = MSFlexGrid1.Rows - 1
MSFlexGrid1.AllowUserResizing = flexResizeColumns
End Sub
Recuperiamo adesso una riga di dati dal controllo Flexgrid e la copiamo nella
maschera d’inserimento
Eserciziario di Visual
Basic: Parte Seconda
1) Per prima cosa occorre aprire Visual Basic e creare un progetto Exe
Standard;
2) Aggiungere come riferimento Microsoft v xx Access Object Library (dove
xx sta per versione installata sul vostro Personal Computer)
3) Aggiungere una casella di testo nella quale memorizzare il nome della
maschera che si desidera aprire
4) Un pulsante di comando per eseguire le seguenti righe di codice
Option Explicit
Comunque vi ricordo che in sede di aggiunta del controllo ListBox sul form, c’è
una proprietà sorted, che se viene impostata a true, ordina alfabeticamente e
automaticamente tutti gli elementi aggiunti alla lista con il metodo AddItem
Se la proprietà index dovesse risultare uguale a -1, significa che non è stato
selezionato nessun elemento e genera un alert di errore
La raccolta dei
trucchi di VB6[1]
Dalla lezione 20 parte un ciclo di lezioni che fornirà a tutti i corsisti una serie di
trucchi utili da poter inserire nelle proprie applicazioni: non a caso il titolo della
lezione è La raccolta dei trucchi di VB6
Oltre la funzione Api di Windows, che adesso forniremo, esiste una funzione
che si chiama GetATTR. Essa permette di ottenere la stessa informazione (cioè
dell’esistenza della cartella controllando che il path name fornito non
corrisponda ad un file bensì ad una cartella).
Sub Main()
Dim pathname1 As String
Dim msg As Integer
pathname1 = InputBox("Inserisci percorso cartella:")
If controllafolder(pathname1) = False Then
msg = MsgBox("La cartella non esiste:", vbCritical)
Else
msg = MsgBox("La cartella:" & " " & pathname1 & " " & "esiste",
vbInformation)
End If
End Sub
Sub main()
Dim pathname1 As String
Dim msg As Integer
Dim codice_attributo As Long
pathname1 = InputBox("Inserisci percorso cartella:")
codice_attributo = GetFileAttributes(pathname1)
If codice_attributo = 16 Then
msg = MsgBox("La cartella:" & " " & pathname1 & " " & "esiste!!",
vbInformation)
Else
msg = MsgBox("La cartella non esiste!", vbCritical)
End If
End Sub
!" # $
% & ' &
%% ( ( !
*+
*+
) '
*+
*+
, # - ./ &
0 1 %% (
1 ( $
$ !
2 ' ' !
1 ' ( ' (! (
" 3 ' 4 5 ( 1 (
' + 6
2 $ ' 7&
8&9&: !
'
, &
7&9&
;
< $ = >
(
?
*+
?
+*+ 7
?*+ 9
?
@*+ ;
, ?
&?+&
?&?
@
?@
?
?+
?
A ' ' 3 B
, +&
+&+&
+ +&+&+& +&+&+&@ +&+&+&>
, +&
+&+&
7 +&+&+&
8 +&+&+&
9 +&+&+&
C
, +&
+&+&
;
) (
• ( &
• %% (
! " # $ !! ! $
$ %
!! & ! ' " ()
*
+ ! !
, % )
$ - ! $ . !!
-
+ ! .
! ! *+
*
/ $
! 0
/ $
! 0 $
!! ! *
0 $ - $
&
&& $ %
)$ % & )
$
%
& )
* % -
&2 )
!" # $ %$
& ' ( # )%*
+ ' %
# $ ' ( # , '
%
La raccolta dei
trucchi di VB6[4]
htmlpage = Inet1.OpenURL("http://xoomer.virgilio.it/newit1/ecdl-start.htm")
Text1.Text = htmlpage
Open "c:\test.htm" For Output As #1
Print #1, Text1.Text
Close 1
End Sub
Per eseguire questo trucco avete bisogno di creare un progetto con due form
Nel primo form realizzate l’interfaccia utente vista in figura, aggiungendo dalla
finestra componenti (Ctrl+T), il controllo Microsoft Internet Transfer Control
La raccolta dei
trucchi di VB6[5]
Capita sovente di aver creato un database di Access con Microsoft Office Access
e di proteggerlo con password.
Domanda: Come si può con Visual Basic, aprire un database di access protetto
da password?
Il trucco che vedremo a tal proposito sta nella scrittura della stringa di
connessione con Ado (il modello ad oggetti più potente per accedere a
database di vario tipo, tra cui anche Access)
N.b. Per eseguire questo trucco occorre che abbiate sul vostro pc un database
di Access protetto con una password che avete scelto voi e cambiare alcuni
riferimenti che in questo trucco non ci sono:
La raccolta dei
trucchi di VB6[6]
Si chiude il ciclo delle lezioni sui trucchi di Visual Basic. Trattasi della funzione
che permette di ordinare una lista di riepilogo senza impostare a true la
proprietà sorted del controllo stesso.
lst_parole.AddItem VET(J + 1)
Next J
End Sub
For J = 0 To NUMELEMENTI - 1
VET(J + 1) = lst_parole.List(J)
Next J
Avviene il caricamento degli elementi della lista nel variabile array vet
Alla fine di questi due cicli for, abbiamo il vettore ordinato e possiamo caricare
gli elementi nella lista, dopo averla pulita con il metodo Clear
Per far ciò gli eventi Change associati a driveListBox e dirlistBox sono:
Per conoscere il nome del file selezionato nel controllo FileListBox, basta
utilizzare la proprietà FileName
Errore run-time 68
Tale errore viene generato per i seguenti dispositivi rimovibili: cd-rom e floppy.
Per l’hard disk in condizione di integrità, non genererà nessun errore, in quanto
è disco fisso e sempre pronto.
Attraverso l’enunciato On Error Resume Next possiamo catturare tutti gli errori
di run-time. Occorre solo saper (e non c’è una regola) localizzare, nel codice, al
punto giusto questo enunciato.
Poi c’è l’enunciato err con una serie di proprietà, tra cui number che ci fornirà il
codice di errore generato.
If err.number=68 then
……
…..
End if
Come avviene la
distribuzione
dell’applicazione
Distribuire l’applicazione per conto terzi
Quando installiamo Microsoft Visual Studio o una copia retail di solo Visual
Basic, nel menu di start si aggiunge un link ad un Tool fondamentale:
Vi ricordo che è errato pensare che si possa passare al cliente solo il file
eseguibile creato (nome progetto.exe), attraverso l’IDE(Integrated
Development Environment o Ambiente di sviluppo integrato).
Esempio: Creazione di un’interfaccia che carica tutti i nomi assegnati alle varie
unità hardware (floppy, hard disk, lettori cd-rom); poi selezionando una di
queste unità, nella seconda lista vengono caricate tutte le cartelle,
selezionando a loro volta una di queste cartelle, vengono caricate nell’ultima
lista di riepilogo tutti i file contenuti
Nella variabile lettera viene recuperata la root del nome del drive selezionato
attraverso la prima lista di riepilogo
Il contenuto di questa variabile diventa argomento del metodo GetFolder
dell’oggetto Obj (Scripting.FileSystemObject)
L’espressione Obj.GetFolder(lettera) viene assegnato all’oggetto Objfile di tipo
Folder
Viene eseguito un ciclo For Each per esaminare tutti i nomi delle sottocartelle
contenute nella root del drive selezionato nella prima lista di riepilogo
Basta selezionare l’unità drive dell’hard disk (c:\), vengono caricate nella lista
di riepilogo tutte le cartelle (o folder) della root e poi selezionando una di quelle
cartelle, vengono caricate nell’ultima lista di riepilogo tutti i files in essa
contenuti
Nella cartella esempi del corso (\vb6\esempi) c’è un file zippato che si chiama
applicfolder.zip. In quel file troverete i sorgenti e il file eseguibile allo
scopo di avere subito una demo operativa dell’applicazione.
Primo steps:
Steps n° 2
Steps n° 3
Esecuzione dell’applicazione
Il codice per utilizzare tale libreria allo scopo di visualizzare detta finestra è
Il codice è
ObjShell.Explore “c:\”
Visualizzerà
CONCLUSIONI:
Il futuro di Visual Basic 6.0, sebbene sia stato un ambiente di sviluppo visuale
molto popolare, ha esaurito il suo ciclo di sviluppo ed è stato sostituito in modo
radicale dalla nuova piattaforma microsoft che porta da un paio di anni la sigla
.Net.
Corsisti, non vi appesantisco più di tanto, perché il corso è già stato corredato,
come avete potuto notare, di esempi pratici e anche di alcuni filmati chiavi. E’
solo per stimolare la vostra curiosità nel trovare nelle trenta lezioni e altrove
anche la risposta.
Option Explicit
Sub Main
Dim Cognome As String
Dim Nome As String
Dim City As String
Cognome=Inputbox(“Inserire il cognome:”)
Nome=Inputbox(“Inserire il nome:”)
City=Inputbox(“Inserire la città:”)
End Sub
Sub Visualizza
Dim stringaTesto As String
stringaTesto=”Dati inseriti:” & cognome & vbCrlf
stringaTesto=StringaTesto & nome & vbcrlf
stringTesto=StringaTesto & city
Msgbox(stringaTesto)
End Sub
Le domande sono:
E altri, ma già con questi potete già rendere funzionali le vostre applicazioni
form1.TextBox1.FontName=”Arial”
form1.TextBox1.Forecolor=vbred
form1.textbox1.fontsize=20
4) I controlli intrinseci,per mezzo dei quali si accede al file system sono tre:
• DriveListBox
• DirListBox
• FileListBox
Option Explicit
Sub Main
Dim Cognome As String
Dim Nome As String
Dim City As String
Cognome=Inputbox(“Inserire il cognome:”)
Nome=Inputbox(“Inserire il nome:”)
City=Inputbox(“Inserire la città:”)
End Sub
Sub Visualizza
Dim stringaTesto As String
Le domande sono:
msflexgrid1.cols=x
msflexgrid1.rows=y
Msflexgrid1.col=1
Msflexgrid1.row=4
Msflexgrid.text=valore
10) MSFlexGrid1.AllowUserResizing=flexResizeBoth