|
INPUT
Con il termine input si considerano
gli strumenti usati per l'immissione dei dati come textbox per
esempio. Tutte le applicazioni usano strumenti di input in vario
modo:
- come richiesta per compiere delle
elaborazioni
- per inserire parametri di
ricerca
- per inserire dati nei
database
- per rispondere a
domande
Non ci sono solo control in questa
categoria ma anche istruzioni Visual Basic in senso
tradizionale.
INPUTBOX
Una di queste é inputbox una funzione che restituisce al
programma un valore digitato. Il valore viene inserito in un'apposita
casella di input che compare quando viene eseguita inputbox. Esempio
di inputbox:
nome =
inputBox("Come ti chiami ?")
La variabile nome conterrà
quanto digitato. Se non si é digitato nulla o si é
premuto il tasto cancella, restituisce una stringa vuota. Non si usa
molto inputBox.
MSGBOX
Altro tipo di funzione é msgbox Essa é utilizzata per
rispondere a domande del tipo "Vuoi uscire dal programma ?". L'utente
potrà rispondere Si o No, a seconda di come é stata
impostata. A video compare una finestra dove é possibile
inserire in messaggio, il titolo e decidere quanti e quali bottoni
dovranno apparire; é possibile visualizzare delle piccole
picture. L'utente fa la sua scelta in base alla quale il programma
opera di conseguenza. Ecco un esempio:
- if msgbox("Vuoi
uscire ?", vbYesNo) = vbYes then
- end
- end
if
Come si vede msgbox usa delle
costanti predefinite di VB. E' usata per segnalare errori o per
compiere semplici scelte.
TEXTBOX
Nel caso però di un data entry
completo, con controlli formali, il miglior sistema é usare il
control textbox. E' lo strumento di input per eccellenza. La
proprietà text contiene quanto digitato e
può anche essere impostata a run-time. Textbox restituisce
sempre valori stringa per cui , nel caso di numeri, per poterli
elaborare, hanno bisogno di esser convertiti. Altra proprietà
é maxLength che permette di inserire il
numero massimo di caratteri digitabili. In PassWordChar si deve scrivere un carattere che
sarà l'unico che compare quando si scriverà qualcosa:
serve nel caso di inserimento di password, cosi che nessuno
potrà vedere cosa si é inserito. Entrambe queste
proprietà vanno inserite in fase di progetto. La
proprietà locked se impostata a true, blocca
qualsiasi possibilità di inserimento del codice: va bene nei
casi in cui l'input in una textbox può venire momentanemente
disabilitato per vari motivi. Impostando a false al proprietà
locked, l'input é di nuovo consentivo. Esempi:
- txtnome.length
= 25 'lunghezza del nome a 25 caratteri
- txtPass.passwordchar
= "*" 'qualsiasi cosa scriva compaiono solo
asterischi
- txtNome.locked
= true ' non posso fare input
-
- Textbox dispone di alcuni eventi
che permettono di controllare quanto inserito. Uno di questi
é KeyPress e restituisce il codice ascii
dei tasti premuti. In questo modo é possibile controllare
lettera dopo lettera quanto inserito dall'utente, impedendo per
esempio di scrivere delle lettere dove andrebbero dei numeri o di
scrivere lettere minuscole al posto d elle maiuscole. In caso di
errore di battitura, si può 'togliere' il carattere errato.
KeyPress non é in grado di controllare tutti i tasti
speciali come tabulatore o i tasti freccia, ma solo quelli
alfanumerici. Esempio:
-
- sub
txtNome_KeyPress(Keyascii as integer)
- Keyascii =
asc(ucase(chr(keyascii)))
- end sub
Questa procedura impedisce ad un
utente di scrivere in txtnome delle lettere in minuscolo. KeyAscii
é un parametro di input di KeyPress e contiene il codice del
tasto premuto in formato Ascii: per vedere a quale lettera o numero
corrisponda, basta cercare negli help di visual basic o nelle
appendici di unbuon libro di programmazione. Nell'esemp io il codice
keyascii viene trasformato prima in un carattere, con chr , poi convertito in maiuscolo
con ucase e riconvertito in codice ascii
con asc Il risultato del tutto ritorna a
keyascii. Se in caso di errore si vuole che il carattere digitato non
faccia parte dell'input, basta digitare, sempre in keypress:
- keyascii = 0
Per controllari tasti speciali come
gli Fx, si deve usare l'evento keyDown.Esempio:
- sub
txtNome_KeyDown(KeyCode as integer,shift as integer)
- if keycode =
vbKeyF1 then
- msgbox
"Hai premuto F1"
- end
if
- end
sub
Keydown ha 2 parametri di input con i
quali posso conoscere i tasti premuti; in questo caso basta
controllare keycode per sapere se F1 é stato premuto.
COMMAND
BUTTON
I command button sono i classici
bottoni. Le proprietà principali sono caption,
per impostare il nome che compare sul bottone e quelle relative ai font.
Con l'evento click,
si può dar corso a una serie di procedure per il controllo dei
dati. Esempio:
- sub
command1_click()
- if txtnome=
"" then
- msgbox
"Nome vuoto"
- end
if
- end
sub
LABEL
Permettono di visualizzare un testo o
un numero nel form, usando la proprietà caption.Con fontName, fontSize si possono modificare i font come
tipo e dimensione. Hanno anche loro un evento click del tutto simile a quello del
command Button. Esempi:
- lblNome.caption
= nome
-
- sub
lblNome_click()
- msgbox "Hai
fatto click sul nome"
- end sub
La proprietà
caption é un tipo dato string.
COME
GESTIRE UN INPUT
Supponiamo che ci sia stato richiesto
di creare un form per l'inserimento dello user name e password per
entrare nel sistema. Il form deve essere composto da 2 textbox, per
inserire username e password e di 2 bottoni: uno conferma il tutto
l'altro chiude il form. I controlli vanno impostati a 2 livelli: il
primo a livello di keypress per impedire di inserire nello username
valori come 'virgola' o 'punto esclamativo'; il secondo per
controllare che username e password siano nomi validi e abilitati ad
entrare nel sistema Questo secondo livello ha bisogno di funzioni ad
hoc e conviene usarlo solo dopo aver immesso per intero entrambi i
nomi. Il punto migliore dove piazzare questa funzione é nel
bottone di conferma che grossomodo conterrà questo
codice:
- sub
cmdConferma_click()
- dim esito as
integer
- esito =
controlloSistema(txtUserName, txtPasswd)
- if esito
then
- ...
prosegui
- else
-
- ...
messaggio d'avviso
- end
if
- end sub
Evitare di inserire controlli formali
negli eventi lostFocus di textbox: sono difficili da
gestire ed a volte possono dare cicli infiniti di esecuzione (il
programma non termina mai)
DataRegion
|