Visual Basic: L’ambiente di lavoro I controlli Selezionare e disegnare i controlli sul Form Nome del progetto Progetto (elementi) Un progetto è composto da form e da moduli Proprietà (proprietà dell’oggetto che avete selezionato: form o controllo) Form Lo spazio su cui inserire i controlli. Dove apparirà il form quando lancerete il programma L’interfaccia grafica Visual Basic è un linguaggio di programmazione che nasce da un’evoluzione del Basic. Un Basic reso “visual”. Visual vuol dire visivo, che si usa in modo interattivo, cliccando con il mouse (che in QBasic non viene mai utilizzato), usando le finestre, ecc. ecc. La prima cosa da fare, quindi, sarà creare un ambiente visuale per il nostro utente. Un ambiente in cui lui effettuerà le operazioni necessarie a far “girare” il programma. Questo ambiente si chiama Interfaccia grafica ed è la prima cosa a cui pensare quando si crea un progetto in Visual Basic. L’interfaccia è fatta dal Form, la nostra “pagina in bianco”, e dai controlli, che vanno inseriti sul form. Per inserire un controllo lo si seleziona e poi lo si disegna sul form, cliccando con il tasto sinistro del mouse e trascinando. Il form i controlli Visual Basic 1 I controlli e le loro proprietà I primissimi controlli Il Pulsante (Command). E’ il controllo che fa succedere le cose con l’evento Click. Può avere su di sè una didascalia (Caption), che dice a cosa serve. L’Etichetta (Label). Serve a scrivere del testo sul Form. Il testo dell’etichetta dipende dalla proprietà Caption, così come avveniva per il pulsante. Le proprietà del controllo Un controllo ha tante proprietà: il colore, le dimensioni, la forma, la posizione sullo schermo, il carattere, quello che c’è scritto sopra... Per selezionare un controllo devo cliccare sopra di esso con il mouse. Il controllo apparirà evidenziato. Quando seleziono un controllo, nella Finestra delle Proprietà apparirà l’elenco delle proprietà di questo controllo. Proviamo ad inserire un pulsante Anche il nome di un controllo è una proprietà. Quando inserisco un pulsante sul form il programma gli attribuisce automaticamente un nome: in questo caso Command1. Vedete anche che la proprietà BackColor (colore di sfondo) è impostata sul grigio. La proprietà Caption (didascalia), quello che appare scritto sul pulsante, corrisponde alla parola “Command1”. Per modificare le proprieta si interviene direttamente nella barra delle proprietà, scrivendo o scegliendo nella casella a destra del nome della proprietà. Proviamo a modificare le seguenti proprietà del pulsante: (Name) - scrivete: CmdProva e date invio Caption - scrivete: Io sono un pulsante Font - scegliete :Times New Roman Grassetto 10 punti Height: scrivete: 600 + Invio Left: scrivete: 100 + Invio Width - scrivete 3000 + Invio Vedrete questo pulsante.... Proviamo ad inserire una etichetta Vediamo che quello che ha scritto al suo interno corrisponde alla proprietà Caption Basta scrivere qualcosa di diverso nella Finestra delle proprietà, nella casella a destra della casella Caption e vedremo cambiare anche il testo dell’etichetta sul form. Proviamo a cambiare anche altre proprietà (Name): diamo all’etichetta il nome : Lblprova (digitate il nome + invio) Caption: “ora sono bianca” Backcolor: <selezionate il bianco > Forecolor: <selezionate il rosso> Top: 1000 Visual Basic 2 Il Basic La sintassi di Visual Basic Visual Basic è un linguaggio Basic, che ha moltissime delle istruzioni che avete imparato con QBasic (IF ...THEN, DO ...LOOP). Visual Basic utilizza le variabili proprio come QBasic. Con il Visual Basic si possono fare tutte le cose che si facevano con QBasic: calcoli, problemi, disegni, ecc. Ma all’inizio faremo soprattutto una cosa: useremo il Basic per cambiare le proprietà dei controlli. La sintassi Basic per modificare la proprietà Caption del pulsante Command1 è, ad esempio: Command1.Caption = ”ciao” Osservate con attenzione..... Command1.Caption = “ciao” NomeControllo.NomeProprietà = ValoreProprietà Se la cosa non vi è chiara, provate a pensare le cose in questo modo: Pensate a un compagno (ad esempio Andrea), alle sue proprietà (ad esempio: ColoreCapelli) e al valore che questa proprietà può assumere: diventerebbe.... Andrea.ColoreCapelli = neri NomeControllo.NomeProprietà = ValoreProprietà Oppure, se pensiamo all’età di Marina, che ha 12 anni, possiamo dire: diventerebbe.... Marina.Età = 12 NomeControllo.NomeProprietà = ValoreProprietà A cosa può servire questo? Ad esempio a cambiare la proprietà di un oggetto durante un programma. Immaginiamo un programma che, quando premo un pulsante, cambia il colore dei capelli di Andrea. All’inizio, disegnerò il controllo Andrea sul form e imposterò la sua proprietà Capelli su “castani” , selezionando il valore nella Finestra delle Proprietà. Poi costruirò un programma che, quando premo su un pulsante, cambia la proprietà Capelli da “castani” a “neri”. Gli eventi Come faccio a dire al programma quando deve cambiare il colore dei capelli di Andrea? Ci vuole un momento particolare... La cosa più comune è cliccare su un pulsante. Allora preparerò un pulsante e, quando cliccherò su di esso, il colore dei capelli di Andrea cambierà. Il Clic sul pulsante si chiama evento. In Visual Basic di eventi ce ne possono essere molti, dal cliccare su qualcosa al muovere semplicemente il mouse. Li vedremo poi. Ora basta ricordare che, quando progetto l’interfaccia grafica di un programma, devo prevedere un controllo con cui far succedere le cose, come se fosse l’interruttore che fa partire il gioco, l’interruttore che dà corrente al treno elettrico, ecc. E’ a questo controllo che dovrò associare il Codice Basic, che contiene le istruzioni che dicono cosa deve succedere (ad esempio che il colore dei capelli di Andrea cambia....). Per associare il codice Basic a un pulsante, basta selezionarlo e fare doppio clic su di esso. Si aprirà una schermata in cui scrivere il codice. Ma partiamo da un esempio pratico. Visual Basic 3 Un primo esercizio Un primissimo esercizio: Preparate un form che contenga una etichetta e un pulsante. Durante la preparazione dell’interfaccia grafica dobbiamo cambiare le proprietà di alcuni controlli. All’etichetta cambieremo: • il nome (Proprietà Name) in “lblscritta” • la scritta (Proprietà Caption) in “ciao” Al pulsante cambieremo: • il nome (Proprietà Name) in “Cmdpremi” • la scritta su di esso (Proprietà Caption) in “premi qui” Adesso faremo in modo che, quando premiamo sul pulsante, la scritta sull’etichetta lblscritta cambi e, da “ciao”, diventi “come stai?” Dovremo cambiare una proprietà, quindi, senza farlo direttamente sulla Finestra Proprietà, ma con del codice Basic associato al clic sul pulsante. Anche se cambia la scritta sull’etichetta, quello che scatena il cambiamento è il clic sul pulsante ed è proprio sul pulsante che dovremo inserire il codice Basic. Per inserire il codice Basic, fate doppio clic sul pulsante. Apparirà una schermata come questa: Il codice va inserito nella sottoprocedura Private_Sub Cmdpremi_Click() dopo queste parole e prima delle parole End Sub . Riflettiamo: dobbiamo cambiare la proprietà Caption del controllo lblscritta, come quando dicevamo Andrea.Capelli=neri. Allora scriveremo il seguente codice: lblscritta.Caption=”come stai?” Ora proviamo a lanciare il programma e vediamo se funziona: Per far girare il programma clicchiamo sul tasto “Play” che troviamo sulla barra in alto. (Possiamo anche premere il tasto F5). Play Apparirà il vostro form con il pulsante in mezzo. Proviamo a cliccare sul pulsante. Se non abbiamo fatto errori la didascalia dell’etichetta cambierà in “come stai?”. Per terminare il programma clicchiamo sul tasto Fine della barra in alto Visual Basic 4 Pausa Fine Salvare il vostro lavoro I progetti di visual basic sono composti da diversi file, che vanno tutti salvati separatamente dando loro un nome. Al momento del salvataggio vengono salvati: - il file del Progetto, che contiene le informazioni complessive, con estensione “.vbp” - i file dei form, uno per ogni form che avete utilizzato, con estensione “.frm” Per salvare, andate sul menu File e selezionate la voce Salva Progetto (o Salva Progetto con nome...). Quindi, sempre sul menu File, selezionate Salva Form.... per ognuno dei form che avete creato. Il programma vi aiuta visualizzando il nome che avete dato al form attualmente aperto. Se lo avete chiamato frmciccio, apparirà “Salva Frmciccio...” Date dei nomi ai vostri file! Non accontentatevi di Progetto1 o Form1! Correte il rischio di cancellare il lavoro che avete fatto l’ora prima o la settimana scorsa. Creare un programma eseguibile I progetti di Visual Basic possono essere dei programmi che funzionano senza bisogno di aver prima aperto Visual Basic. Possono cioè diventare dei veri e propri file eseguibili, con estensione “.exe”. Per creare un programma eseguibile, prima di chiudere il vostro progetto in Visual Basic, andate sul Menu File e selezionate Crea <Nome Progetto>.exe Verrà creato un programma eseguibile che potrete lanciare da qualsiasi cartella o da un altro computer. AIUTOOO! Cosa faccio se.......? Se non vedo più il form Clicco su Form nella finestra Progetto in alto a destra, oppure clicco con il tasto destro del mouse sulla pagina del codice Basic e scelgo Nascondi dal menu che appare. Se non vedo più il codice Faccio doppio clic sul controllo che mi interessa, oppure clicco con il tasto destro del mouse e scelgo Visualizza codice dal menu che appare . Se non vedo più la barra dei controlli Clicco su Menu Visualizza e scelgo Casella degli strumenti Se non vedo più la casella Progetti Clicco su Menu Visualizza e scelgo Gestione progetti Se non vedo più la Finestra Proprietà Clicco su Menu Visualizza e scelgo Finestra Proprietà o premo F4 Se non vedo più la Finestra Disposizione Form Se non riesco a scrivere il codice Basic Clicco su Menu Visualizza e scelgo Finestra Disposizione Form Controllo che il progetto non sia in esecuzione. Premo il tasto STOP sulla barra in alto. Visual Basic 5 Fasi di lavoro Riassumiamo le fasi di lavoro per la creazione di un programma in Visual Basic 1. Creazione dell’interfaccia grafica 1.1 Disponete sul Form i controlli che vi servono 1.2 Date ai controlli un nome che vi ricordi a cosa servono. Il nome del controllo si abbrevia e si aggiunge una parola che ricorda l’azione del controllo. Il controllo Command1 su cui clicco, diventerà CmdClicca. L’etichetta Label1, su cui leggo una risposta, diventerà LblRisp. 1.3 Cambiate il colore, il tipo di carattere, eccetera, secondo i vostri gusti 2. Scrittura del codice Basic 2.1 Assegnate il codice Basic ai controlli che rispondono agli eventi. NON A TUTTI I CONTROLLI. Sono a quelli che servono. 3. Verfica del funzionamento. 4. Salvataggio del programma. I progetti in Visual Basic sono formati da un file in cui è memorizzata la struttura di tutto il progetto e un file per ogni Form che avete utilizzato. Date ai form dei nomi che abbiano un significato. Non lasciateli come Form1 (!!!!) 5. Creazione di un programma eseguibile. Dal Menu File, scegliete l’opzione Crea <Nomeprogetto>. exe Potrete creare un piccolo programma che verrà eseguito senza bisogno di passare per Visual Basic. Per lanciarlo basterà cliccare sul suo nome. Progettare il programma Utilizziamo delle schede per progettare il programma per avere le idee chiare prima di metterci a lavorare sul computer. 1 Sul form disegnate i controlli che compongono l’interfaccia grafica 2 Per ogni controllo specificate il nome che gli avete attribuito e le proprietà che vengono cambiate nella Finestra delle Proprietà, durante la progettazione dell’interfaccia grafica. Specificate i valori di partenza delle proprietà, anche se poi vengono cambiati tramite codice Basic dal programma. 3 Descrivete a parole quello che succede nel programma. Ad es: “Cliccando sul pulsante CMDVai appare la scritta “buona notte” sull’etichetta LblNotte” 4 Stabilite quale evento manda in esecuzione il codice, su quale controllo si agisce e quale codice Basic deve essere letto: Es: Controllo CmdVai Evento Click Codice Basic: LblNotte.Caption = “Buona Notte” FATE ATTENZIONE AI NOMI DEI CONTROLLI !!! NEL CODICE BASIC USATE GLI STESSI NOMI CHE AVETE ASSEGNATO IN FASE DI PROGETTAZIONE GRAFICA Visual Basic 6 La proprietà Visible Visibili ed invisibili Tutti i controlli di Visual Basic hanno la proprietà Visible, che può essere impostata su True (vero) o False ( falso) Quando la proprietà è su True, i controlli sono normalmente visibili sul Form. Quando la proprietà è impostata su False, i controlli ci sono, ma non si vedono. Possiamo utilizzare questa proprietà per far apparire o scomparire dei controlli durante il programma, magari cliccando su un pulsante. Es: Label1.Visible = False ‘ Fa scomparire l’etichetta I controlli che devono “comparire” devono avere la proprietà impostata su False al momento della progettazione grafica. Si vedranno sullo schermo durante la progettazione ma non si vedranno quando si lancia il programma per provarlo. Esercizio 1 Esercizio 2 Create un form in cui ci sia solo un pulsante. Al clic sul pulsante, questo scomparità. In pratica, faremo in modo che la sua proprietà Visible assuma il valore False. (Es: Command1.Visible=False) Create un Form che contiene un pulsante con la scritta “prova”. Quando l’utente clicca sul pulsante questo sparisce e ne appare un altro con la scritta “riprova”. Cliccando su di esso l’utente lo vedrà sparire (anche questo!) e apparire un’etichetta con la scritta “Era ora!” Attenzione che il primo evento è associato al primo pulsante, il secondo evento al secondo pulsante. L’evento Mouse Move L’evento Mouse Move attiva il codice Basic quando il mouse “urta” un controllo, come nel caso in cui il mouse passa sopra a una etichetta o a un pulsante. L’evento Mouse Move non appare immediatamente se fate doppio clic su un controllo. Per selezionarlo dovete cercarlo sul Menu a tendina a destra, nella schermata del Codice. La schermata del codice può essere attivata anche cliccando su un controllo con il tasto destro del mouse e scegliendo “Visualizza Codice” Primo Esercizio Uno scherzo carino Creare un form in cui ci sia un pulsante che ha scritto su di sè “Vieni qui”. Quando l’utente si muove con il mouse sul pulsante (evento Mouse Move del pulsante) la scritta del pulsante cambia in “cliccami” Quando l’utente clicca sul pulsante (evento Click del pulsante) appare un’etichetta con scritto “ciao” Facciamo un piccolo scherzo, utilizzando l’evento MouseMove. Preparate un’interfaccia grafica come quella che appare sotto. Quando l’utente passa con il mouse su uno dei due tasti, cercando di cliccare, le didascalie debbono invertirsi, quella del tasto di destra dovrà apparire sul tasto di sinistra e viceversa. La posizione di un controllo sul form La posizione sul form di un controllo è definita da due proprietà: La proprietà TOP che indica quanto è distante dal bordo superiore La proprietà LEFT che indica quanto è distante dal bordo sinistro Le distanze sono misurate in twip, un’unità di misura un po’ speciale. Per vedere quanto è largo il vostro form andate a leggere le proprietà del form ScaleHeight (altezza) e ScaleWidth (larghezza) sulla Finestra delle Proprietà Un altro scherzo: “Prendimi!” Posso usare queste proprietà per uno scherzetto divertente. Creo un pulsante con la scritta Premimi Quando mi avvicino con il mouse (evento MouseMove) farò in modo che la posizione del pulsante, sia dal bordo superiore che dal bordo sinistro venga trovata a caso, con l’istruzione RND (per i numeri casuali), scegliendo tra un valore fra 0 e 5000 Private Sub Command1_MouseMove Command1.Top = Rnd * 5000 Command1.Left = Rnd * 5000 End Sub Visual Basic 7 La casella di testo Casella di testo (Text Box). L’utente può scrivere nella casella, parole, numeri, ecc. Sostituisce l’istruzione INPUT . Quando progetterò il mio programma, gli dirò di guardare cosa l’utente ha scritto nella casella di testo e lo metterà in una variabile. Il testo scritto dall’utente corrisponderà alla proprietà Text Ciò che scrive l’utente è inserito nella casella di testo sotto forma di stringa alfanumerica e quindi deve essere utilizzato in una variabile del tipo A$. Es: A$ = TextRisposta.Text Potrò fare tutti i controlli tipici delle stringhe alfanumeriche (es: IF TextRisposta.Text = “Napoli” THEN....) Se voglio chiedere all’utente un numero, dovrò convertire la stringa alfanumerica in un valore numerico. Per fare questa operazione si utilizza la funzione VAL. La funzione VAL In QBasic La sintassi della funzione VAL è: NomeVariabileNumerica = VAL (NomeVariabileStringa) Immaginiamo che la variabile Numero$ contenga le cifre “153” (uno, cinque, tre). Per farle diventare il numero 135 (centotrentacinque), e utilizzarlo per dei calcoli, utilizzerò la funzione VAL: A = VAL(Numero$) ‘ metti nella variabile numerica A il valore delle cifre contenute nella variabile stringa Numero$ In Visual Basic Immaginiamo di dover leggere un valore numerico da una casella di testo. Utilizzeremo la funzione VAL in questo modo: A = VAL(Text1.Text) ‘ Metti in A il valore delle cifre contenute nella stringa che si trova nella proprietà Text della casella di testo Text1 Esercizio 1: La capitale della Spagna Create un form con una etichetta (Label1), che pone una domanda “Quale è la capitale della Spagna?”, e due etichette, una la con scritta “Giusto” e una con “Sbagliato”. Cambiate il nome delle etichette (Proprietà Name) in LblGiusto e LblSbagliato. Rendetele entrambi invisibili. Inserite un pulsante di comando e una casella di testo (TextRisp) Associate al clic sul pulsante il codice che controlla la risposta che l’utente ha inserito nella casella di testo. IF TextRisp.Text = “Madrid” THEN LblGiusto.Visible = True ELSE LblSbagliato.Visible =True END IF Esercizio 2: Il vostro giocatore preferito Il programma chiede all’utente di inserire il nome di un giocatore. Associate alla pressione del pulsante un semplice controllo che faccia apparire l’etichetta “Grande” se il giocatore che piace all’utente è lo stesso che piace a voi. In tutti gli altri casi apparirà l’etichetta “scarso” Se l’utente prova a digitare un nome diverso, senza far ripartire il programma, capiterà che rimangano visibili due etichette,con messaggi contrastanti. Per evitare questo, oltre al pulsante “controlla” che avvia il controllo sul nome, prevedete un pulsante “riprova” che faccia sparire entrambi le etichette e faccia apparire nella casella di testo la frase “scrivi qui”. Per fare questo dovrete inserire una riga di codice che stabilisce che la proprietà della casella di testo deve essere una certa frase: Text1.Text= ”scrivi qui” Se date l’istruzione Text1.Text=”” la casella di testo si svuoterà. Esercizio 3: Il test di Inglese Preparate un Form che ponga all’utente 3 domande del tipo: “Come si dice in Inglese .....”? Per ogni domanda ci sarà una casella di testo in cui l’utente inserirà la risposta, un pulsante per avviare il controllo e due etichette “OK” e “NO” che appaiono a seconda della risposta. I controlli saranno associati ai pulsanti e non si limiteranno a dire all’utente se ha risposto bene, ma aumenteranno la variabile Giuste se la risposta è esatta. Un ultimo pulsante, al termine, permette all’utente di chiedere il punteggio. Il codice associato all’ultimo pulsante guarderà che valore c’è nella variabile Giuste e visualizzerà sull’etichetta LblTotale il punteggio ottenuto. (LblTotale.Caption = Giuste) Visual Basic 8 Altri esercizi Altri piccoli programmi per mettere a fuoco le cose che abbiamo già visto e per imparare un paio di funzioni in più La calcolatrice Preparate un’interfaccia grafica come quella che vedete a sinistra. Vi sono due caselle di testo in cui l’utente inserirà i numeri da elaborare Quattro pulsanti di comando, premendo i quali i numeri verranno sommati, sottratti, moltiplicati o divisi. Nell’etichetta a destra deve apparire il risultato. Va ricordato che quello che inserite nelle caselle di testo sono stringhe e che quindi il loro valore deve essere trasformato in numero, con la funzione VAL Per la somma, ad esempio, dovrete fare qualcosa del genere: a = Val(txtprimo.Text) + Val(txtsecondo.Text) LblRisultato.Caption = a Il cambia euro Il prossimo programma cambia le lire in euro e gli euro in lire. Come evento per il calcolo, questa volta, useremo l’evento Modifica del testo nella casella di testo (Text_Change ). Mentre l’utente inserirà il testo nella casella, quindi, verrà fatto automaticamente il calcolo, il cui risultato apparirà sulla didascalia (caption) dell’etichetta a destra. Ricordate che per ogni Euro ci vogliono 1936,27 lire Form colorati Questo programma inizia con il form visualizzato sopra. Ad ogni pressione del tasto, apparirà un nuovo form, colorato con il colore indicato. Sul form che appare ci sarà un tasto che permetterà di farlo scomparire. Per creare un nuovo form si utilizza l’istruzione “Inserisci Form” del menu Progetto. Dovrete crearne tre. Per far apparire un form basterà impostare su True la sua proprietà Visible, per farlo scomparire basterà impostare la proprietà Visible a False. Al tasto “Fine” faremo corrispondere il codice “End” che metterà termine al programma. Visual Basic 9 Visual Basic: La programmazione ad eventi Ora che ne sappiamo un pochino, facciamo una piccola riflessione,per chiarirci meglio le idee. Programmazione ad eventi: Nella programmazione procedurale (es: QBasic) esiste un’unica procedura complessiva che viene eseguita dal programma dall’inizio alla fine. Nella programmazione ad eventi si crea un “ambiente di lavoro” in cui vi sono tante sottoprocedure che reagiscono ad eventi particolari prodotti dall’utente (es: pressione di un pulsante). Nella programmazione di tipo “procedurale” la sequenza degli eventi è decisa dal programmatore, qui è decisa dall’utente. Il programma in QBasic è fatto da una sola procedura che parte quando si avvia il programma e termina con il programma Nei programmi in Visual Basic le procedure (e il codice Basic) sono associate alla pressione di pulsanti o al realizzarsi di altri eventi. Il programma termina quando l’utente preme un pulsante o clicca sulla X in alto a destra L’istruzione INPUT è sostituita dall’immissione di dati in apposite caselle di testo L’istruzione PRINT è sostituita dall’apparire di numeri o parole su apposite etichette I controlli: i pezzi dell’Interfaccia grafica I programmi creati con Visual Basic hanno la stessa ’Interfaccia grafica di Windows: finestre, caselle di testo, barre, ecc.... L’evento più classico: il clic sul pulsante Ogni elemento della finestra si chiama controllo. Il Form è lo spazio su cui si mettono tutti i controlli Il pulsante (Command) serve ad avviare una procedura Attraverso i controlli si attivano gli eventi. L’evento più classico è il clic sul pulsante. Quando si verifica un dato evento , vengono eseguite le linee di programma ad esso associate. CLIC!!! Le caselle di testo (Text Box) servono a inserire dei dati Le etichette (Label) servono a scrivere del testo sul form Visual Basic 10 Ogni controllo ha diverse proprietà (dimensioni, colore, tipo di carattere, ecc ecc) Frame, caselle di controllo e pulsanti radio Il problema del tosacani Le caselle di controllo e i pulsanti radio permettono di far scegliere all’utente dei valori predefiniti Inserendo nel codice l’istruzione If...then ... Else potremo utilizzare i valori scelti dall’utente per inserirli nel nostro programma. Disegnamo un’interfaccia di questo tipo L’interfaccia mi fa già capire come è strutturato il problema. L’utente può scegliere tra vari servizi Due tipi di lavaggio e due tipi di tosatura. In più, al costo dei servizi già detti, si possono aggiungere accessori acquistati. Premendo il tasto Calcola verrà effettuata la somma dei servizi scelti (il programma vero e proprio), e il totale verrà visualizzato dall’etichetta Totale. Il tasto Esci mi porterà alla fine del programma con l’istruzione END. Le caselle di controllo (Check) Le caselle di controllo possono essere spuntate o non spuntate . Quando una casella è spuntata, la sua proprietà Value diventa “1”, quando non è spuntata diventa “0”. Tramite codice posso controllare se la casella è spuntata e in tal caso memorizzare un valore o fare un’operazione. If ChkProfumo.Value = 1 Then Accessori = Accessori + 8000 End If I pulsanti Radio (Option) I pulsanti radio si comportano più o meno come le caselle di controllo, solo che si escludono l’un l’altro. Se ne premo uno, si disattivano gli altri, eccetera. Quando un pulsante è attivato, la sua proprietà Value diventa True, altrimenti è False Attenzione quindi che Caselle di controllo e Pulsanti Radio hanno valori diversi (1/0 per le caselle, True e False per i pulsanti) Posso controllare lo stato di un pulsante con il codice Basic If OptLavaNorm.Value = True then Lavaggio = 10.000 End If Il Frame Il Frame è un riquadro che permette di visualizzare bene una parte dell’interfaccia. Ma può fare di più.Visto che i pulsanti radio si escludono l’un l’altro, in teoria potrei utilizzare una sola serie di pulsanti in tutto il form. Se invece metto le serie di pulsanti in tanti frame ho la possibilità di utilizzarle separatamente. Salvare il progetto Per salvare il vostro progetto in Visual Basic, dovete salvare tutti i “pezzi” che lo compongono: i vari form e gli eventuali file di Modulo, quindi salvare il Progetto (che è un po’ l’indice che ricorda dove sono tutti i pezzi). Date ai vari componenti un nome che li riconosca. In seguito potrete ricaricare il vostro progetto per correggerlo o addirittura utilizzarne alcuni form per dei progetti nuovi. Visual Basic 11 Visual Basic: moduli e variabili condivise Il problema che affronteremo ora è più complesso: prevede l’utilizzo di più form, prevede che i risultati dei calcoli fatti su di un form vengano utilizzati anche da un altro e prevede l’uso di un modulo. I moduli I moduli sono sottoprogrammi in Basic, nè più ne meno come i controlli. Possono far parte di un progetto non appaiono sullo schermo. Possono servire per far partire il programma, per fare dei calcoli complessi il cui risultato viene poi inviato a un form oppure, come nel nostro caso, per dichiarare le variabili che devono valere per tutto il progetto. I moduli si inseriscono dal Menu Progetto/Inserisci modulo Utilizziamo il modulo per “condividere” le variabili. Il valore di una variabile utilizzata in un form non può essere letto in un altro form, a meno che la variabile non venga dichiarata come “condivisa”. Se non viene effettuata questa operazione, per il secondo form il contenuto della variabile è “0”. Per condividere una variabile bisogna scrivere Public NomeVariabile nella finestra (dichiarazioni) del modulo che abbiamo creato Esempio di variabili condivise. (da non usare per il problema della pagina successiva....) Utilizziamo il modulo per far partire il progetto Normalmente il progetto parte dal Form1 oppure dall’oggetto che viene indicato nella finestra Proprietà/ Proprietà di Progetto1.../Oggetto di avvio. Noi decideremo di farlo partire dal modulo, creando una sottoprocedura MAIN in cui diremo i form che vogliamo visualizzare all’inizio Per creare una sottoprocedura Main, andiamo sul modulo e, nella finestra (generale), scriviamo “Sub Main ()”. Apparirà automaticamente la dicitura “End Sub”. Ora andiamo nel Menu Proprietà/Proprietà di Progetto1.../Oggetto di avvio e selezionamo la Sub Main come oggetto di avvio Mostrare o non mostrare i form Olte all’uso della proprietà Visible, è possibile far apparire o meno i form con le istruzioni <NomeForm.Show> (per far apparire) e <NomeForm.Hide> (per far scomparire) Es: FrmPrimi.Show ‘ fa apparire il form su cui ho elencato i primi piatti Mostrare più di un form alla volta. Lo posso fare e posso anche stabilire la posizione dei form sullo schermo. Per fare questo utilizzerò la finestra disposizione form in basso a destra, che mostra il punto in cui appaiono i diversi form quando viene lanciato il programma. Come cambiare la proprietà di un oggetto su un altro form La sintassi di Visual Basic che conosciamo (NomeControllo.NomeProprietà=Valore) vale solo per gli oggetti all’interno dello stesso form. Se l’oggetto si trova sull’altro form, la sintassi cambia, perché deve specificare il nome del form su cui si trova il controllo. Diventerà: NomeForm.NomeControllo.NomeProprietà=Valore Per capire meglio questa cosa, pensate di essere a casa vostra. Se chiamate “Marco!” o “Papà!”, risponderanno il Marco o il Papà della vostra famiglia. Non c’è bisogno di altro. Se invece siete a scuola, Marco può non bastare, e ci vuole il cognome. Pensate al nome del form come al cognome dei controli Per cui, se sono sul Frm1 e voglio cambiare una didascalia del Frm2 non basterà dire Lbl1.Caption= “ciao” ma bisognerà specificare: Frm2.Lbl1.Caption = “ciao” Visual Basic 12 Il problema del ristorante Stiamo preparando il programma per il cassiere di un ristorante, che deve calcolare, tramite computer, il totale delle consumazioni di ogni tavolo. Nel programma avremo: - Un form per i primi, uno per i secondi, uno per i contorni e uno per il totale - Appariranno sempre due schermate contemporaneamente. La schermata di sinistra sarà quella dei piatti (primi, secondi, contorni...) e cambierà ogni volta, la schermata di destra sarà quella del totale. Operazioni dell’utente: L’utente immetterà il numero di piatti serviti. Man mano che li immette (es 2 spaghetti ...) sull’etichetta di destra apparirà la cifra totale per gli spaghetti (proprietà TextChange.....).Al termine cliccherà su “Totale primi” e sull’etichetta a destra del pulsante apparirà il totale dei primi. Premendo il pulsante “Vai al successivo”, sparirà il form dei primi, apparirà il form dei secondi e sul form totale si vedrà il totale parziale raggiunto fino ad ora.... (totale = totale + ....). (Ricordate che quest’istruzione viene data da un altro form e quindi ....) Come appare il programma dopo aver inserito i primi, aver cliccato sul pulsante “Totale primi” ma non aver ancora premuto il pulsante “vai al successivo” Inseriamo un’immagine Per inserire un’immagine sul form, possiamo ricorrere al controllo Image (è quello con il sole e la montagna ). Tracciamo sul form il punto in cui vogliamo sistemarlo e, nella proprietà Picture, clicchiamo su (nessuna) e poi sul tasto con i tre puntini per andare a cercare l’immagine nella cartella. (in questo caso abbiamo preso 3 immagini) Potete personalizzare meglio il vostro progetto ricorrendo ai colori dello sfondo, al tipo di caratteri, ecc. ecc. Lasciamo alla vostra creatività. Il controllo Image Visual Basic 13 Creare zone sensibili e messaggi Un’immagine sullo sfondo del form Creiamo un form e carichiamo sul suo sfondo una immagine, utilizzando la proprietà Picture. Cliccando sul valore “Nessuna” e poi sul tasto con i tre puntini , si aprirà una casella di dialogo che ci consente di cercare il file di immagine nel disco. L’immagine apparirà sullo sfondo. Il controllo Image Utilizzando il controllo “Image”, che è quello con il sole e la montagna, all’interno della cornice creeremo delle zone trasparenti sullo sfondo del form Il controllo immagine crea una cornice tratteggiata che si vede solo in fase di progettazione. Nel nostro caso, se non ci fosse sullo sfondo l’immagine, apparirebbe un contorno di questo tipo: Inseriamo messaggi che compaiono con un “ding!” Creiamo tre controlli immagine trasparenti, uno su Cappuccetto Rosso, uno su Batman e uno sulla donna che bacia la rana. All’evento “cllick sull’immagine” potremo associare l’apparire di una casella che contiene un messaggio La funzione si chiama MsgBox e, nella sua versione più semplice, ha questa sintassi MsgBox “frase da inserire” Infine inseriremo il codice associandolo a ciascuno dei controlli “Image” per fare in modo che, cliccando ognuna delle tre aree appaiano tre diversi messaggi, come in questo esempio: Private Sub Image1_Click() MsgBox "questa è cappuccetto rosso" End Sub Visual Basic 14 I menu Grazie al comodo editor presente in VB possiamo aggiungere al nostro programma dei professionalissimi menu per accedere alle varie funzioni del programma in maniera più comoda. Per fare ciò basta cliccare sul terzo pulsante della barra strumenti, o scegliere “Editor di menu” dal menu “Strumenti”. Nell’editor di menu bisognerà dare un nome e una caption ai vari menu (Le “&” servono per decidere quale lettera verrà sottolineata: Scrivendo &File sul programma apparirà File, scrivendo Can&cella apparirà Cancella) Le quattro frecce servono per spostare il menu prima o dopo (premendo su e giù) o per creare o togliere un sottomenu (destra e sinistra). Prepariamo ora un pimpante programmino come quello qui illustrato (...) Ci saranno due caselle di testo, e dei menu che permetteranno di uscire o di scambiare il testo delle due caselle. Come appare dall’editor sopra, il menu “File” ha solo il sottomenu “Esci”,mentre il menu “Modifica” ha i sottomenu “Cancella le textbox” e “Altro”. Il sottomenu “Altro” ha come sottomenu “Scambia i due testi”. A questo punto apriremo la finestra del codice di ogni comando di menu semplicemente selezionandolo come dovessimo usarlo. Inseriremo quindi questo codice: Private Sub Esci_Click() End End Sub Private Sub Cancella_Click() Text1.Text = “” Text2.Text = “” End Sub Private Sub Scambia_Click() a$ = Text1.Text Text1.Text = Text2.Text Text2.Text = a$ End Sub Provate a divertirvi immensamente usando il fantastico programma che avete appena creato. By Agostino Carandente Visual Basic 15 Visual Basic Salvare e caricare file L’agendina segreta Per salvare e caricare dati da file, si utilizza la stessa sintassi che abbiamo imparato per il QBasic. OPEN “nomefile” for INPUT (OUTPUT/APPEND) AS # X Questo semplice esercizio vuole creare una piccola agendina che permette di scrivere brevi commenti su amici, salvarli, dando un nome al file, e caricarli a piacere. Prepariamo una interfaccia grafica come questa Ci saranno tre caselle di testo. Nella prima (che chiameremo “txttesto”), inseriremo gli appunti sull’amico. Per poter avere la barra di scorrimento e poter far andare a capo automaticamente il testo, dovremo impostare la proprietà “ScrollBars” su “2 - Vertical” e la proprietà “MultiLine” su “True” Al tasto “Salva”, che avremo chiamato cmdsalva, associeremo il salvataggio del testo inserito in txttesto, con il nome di file inserito nella seconda casella di testo, chiamata txtsalva Private Sub cmdsalva_Click() s$ = txtsalva.Text Open s$ For Output As #1 a$ = txttesto.Text Print #1, a$ Close #1 End Sub Come avrete notato, il nome del file è inserito in una variabile, s$ che viene letta dalla casella di testo e viene utilizzata per il salvataggio. Al tasto Carica, che avremo chiamato cmdcarica, associeremo il caricamento del file. Per evitare che venga caricato solo il testo fino al primo separatore di campo (il primo “a capo”) dovremo creare un ciclo Private Sub cmdcarica_Click() c$ = txtcarica.Text Open c$ For Input As #1 txttesto.Text = "" Do Line Input #1, a$ txttesto.Text = txttesto.Text + a$ + vbCr + vbLf Loop Until EOF(1) Close #1 End Sub Il testo nella casella, come vedete, si arricchisce man mano (txttesto.Text = txttesto.Text + a$ ...) fino alla fine del file (EOF (1)), inserendo anche gli “a capo” (vbCr e vbLf) [Carriage Return e Line Feed]. L’istruzione non può essere semplicemente Input # ma deve essere Line Input #. Provate a creare il programma, a scrivere appunti su vostri amici e memorizzarli con il loro nome. Poi provate a caricarli dopo aver vuotato la casella di testo. Visual Basic 16