vblogo

Programmare con Microsoft Visual Basic 6

Google
nel sito web
Introduzione
Form
Control
Oggetti
Input
Menu
Array
Visualizzazione stampa
Report
File
Errori
Clipboard
DDE
OLE
Database
Sql
Download
Bibliografia

 

 

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

Copyright @ 2007 Vince