Visual Basic.NET: un nuovo linguaggio di programmazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Visual Basic.NET: un nuovo linguaggio di programmazione"

Transcript

1 Visual Basic.NET: un nuovo linguaggio di programmazione Visual Basic.NET è uno dei linguaggi che fa parte della suite di sviluppo Visual Studio.NET: con essa Microsoft vuole segnare una svolta nel mondo della programmazione. E pare che le prerogative ci siano tutte: di questa famiglia di prodotti fa parte anche C#, il nuovo linguaggio che, secondo Microsoft, riesce a coniugare la semplicità di Visual Basic con la potenza propria del C++. La trattazione delle novità architetturali introdotte da Microsoft con Visual Studio.NET, come il Framework.NET, esula dagli obiettivi di questo corso, che si propone invece di analizzare nello specifico Visual Basic.NET: esso introduce talmente tanti cambiamenti rispetto alle versioni precedenti che da molti, e non a torto, è considerato un nuovo linguaggio di programmazione piuttosto che un semplice aggiornamento. Ora finalmente Visual Basic è un linguaggio di programmazione orientato agli oggetti: ereditarietà, polimorfismo e overloading non sono più prerogative dei programmatori Java e C++. I tipi di dato sono stati modificati, per renderli conformi alle definizioni usate negli altri linguaggi; ad esempio, il tipo di dato Long è stato sostituito da Integer (il vecchio Integer ora è diventato Short). Anche per quanto riguarda la gestione degli errori, VB si è ispirato a Java e C++, introducendo il costrutto Try Catch Finally. Un'altra importante novità è il supporto nativo per la creazione e la gestione dei thread. La casella degli strumenti di VB, inoltre, è stata ampliata includendo numerosi nuovi controlli utili, tra cui uno che permette di inserire un'icona nella System Tray, vicino all'orologio. I controlli per visualizzare le finestre di dialogo comuni e gli elementi dell'interfaccia di Windows, come la Toolbar, la Statusbar e la Listview, fanno ora parte dei componenti standard, cioè sono utilizzabili senza dover ricorrere a controlli OCX aggiuntivi. La nuova versione di Visual Basic consente anche di creare applicazioni console, cioè applicazioni eseguibili dalla riga di comando di MS-DOS. Come conseguenza di tutte queste innovazioni (e di molte altre che verranno analizzate in seguito), i progetti realizzati con le versioni precedenti di VB sono incompatibili con VB.NET, cioè non possono essere aperti con quest'ultimo se non utilizzando una procedura di conversione che, però, nella maggior parte dei casi richiede anche degli interventi manuali. Anche il formato dei file, infatti, è stato modificato: ora tutti i file che contengono il codice sorgente hanno estensione.vb. Per tale motivo non è consigliabile cercare di aggiornare i propri programmi a VB.NET; al contrario, è conveniente utilizzare questo linguaggio per la creazione dei nuovi software. In questo corso, rivolto a chi ha già una minima conoscenza di Visual Basic, verranno analizzate ed esemplificate le principali novità di Visual Basic.NET, soprattutto rispetto alle versioni precedenti; non verranno invece trattate le nozioni di base, come il concetto di tipo di dato, la differenza tra funzioni e procedure, le strutture iterative, ecc. che hanno lo stesso significato che avevano nelle precedenti versioni di Visual Basic. Per maggiori informazioni su questi argomenti si rimanda pertanto al corso su Visual Basic. I cambiamenti nei tipi di dato e nelle dichiarazioni Uno dei cambiamenti più evidenti in Visual Basic.NET, rispetto alle versioni precedenti, riguarda i tipi di dato. Tale modifica si è resa necessaria per rendere i tipi di dato di VB.NET formalmente uguali a quelli utilizzati in C# e in C++ (gli altri due linguaggi "principi" di Visual Studio.NET). Il tipo di dato Long è stato sostituito da Integer, che quindi ora è usato per la rappresentazione di numeri interi a 32 bit; il vecchio Integer di VB6 e delle versioni precedenti, usato per i numeri a 16 bit, è diventato Short. In VB.NET il tipo Long serve per rappresentare i numeri a 64 bit. Comunque, per dichiarare questi tipi di dato, è possibile utilizzare anche i nomi con cui sono identificati all'interno del framework: invece di Short di può usare Int16, invece di Integer Int32 e al posto di Long Int64. Riassumendo, ad esempio: Visual Basic 6 Dim I As Integer Dim L As Long Dim I As Short oppure Dim I As Int16 Dim L As Integer oppure Dim L As Int32 Visual Basic.NET

2 Relativamente alle espressioni booleane, bisogna evidenziare una importante novità. Utilizzando l'operatore Or tra due espressioni logiche: ad esempio A > 0 Or B = 5, esse vengono sempre controllate entrambe, anche se, in realtà, nel caso in cui A > 0 sia vera, non sarebbe necessario fare il controllo sulla B, dal momento che il risultato di tutta l'espressione sarà comunque True. Per sopperire a tale mancanza, è stato introdotto un nuovo operatore, OrElse: utilizzando quest'ultimo, A > 0 OrElse B = 5, se la prima condizione è vera la seconda non viene valutata. Analogamente, per quanto riguarda l'and, l'operatore AndAlso evita il controllo sulla seconda condizione se la prima è falsa, poiché il risultato finale sarà sempre False. Le stringhe a lunghezza fis sa non sono più supportate nel linguaggio. Non è quindi più possibile scrivere una dichiarazione come la seguente: Dim S As String * 10 La nuova versione del linguaggio introduce delle novità anche per quanto riguarda l'area di validità delle variabili: ora le variabili sono locali rispetto alla porzione di codice in cui vengono definite. Se, ad esempio, si dichiara una variabile all'interno di un ciclo For, essa non sarà più utilizzabile una volta usciti dal ciclo stesso. Si verifica quindi la seguente situazione: Dim I As Short For I = 0 To 10 Dim N As Integer... Next I MsgBox("Il valore di N è: " & N & ".") 'Errato: la variabile N non è più utilizzabile. Il tipo Currency è stato eliminato; al suo posto è possibile usare il nuovo tipo Decimal per i calcoli monetari e per calcoli a virgola fissa in cui la precisione riveste un'importanza particolare. Il tipo di dati Variant non esiste più: al suo posto è necessario usare il tipo Object, che comunque conserva tutte le caratteristiche del Variant, quindi può essere utilizzato per memorizzare qualsiasi tipo di dato primitivo, nonché Empty, Null, Nothing, oppure come puntatore ad un oggetto. Anche la gestione degli array è cambiata: ora gli array possono essere solo a base 0; non è quindi più possibile specificarne il limite inferiore. Un effetto collaterale di questa modifica è che l'istruzione Option Base 1 non esiste più. I tipi definiti dall'utente ora non si creano più con il costrutto Type; al suo posto è stata introdotta la parola chiave Structure. Ogni elemento all'interno della struttura deve essere dichiarato con Dim, Event, Friend, Private, o Public (ritorneremo su queste parole chiave più avanti, quando parleremo delle classi in VB.NET). Ad esempio: Visual Basic 6 Public Type IMPIEGATO Nome As String Matricola As String End Type Visual Basic.NET Public Structure IMPIEGATO Dim Nome As String Dim Matricola As String End Structure Una novità significativa introdotta dalle Structure di VB.NET è la possibilità di definire Sub, Function e Property all'interno di una struttura. Riprendendo l'esempio sopra riportato, è possibile aggiungere una Sub alla struttura IMPIEGATO che visualizzi una finestra contente le informazioni contenute nella struttura stessa: Public Structure IMPIEGATO Dim Nome As String Dim Matricola As String Sub Informazioni() 'Visualizza una MessageBox che contiene le informazioni contenute nella struttura. MsgBox("Nome dell'impiegato: " & Nome & vbcrlf & "Matricola: " & Matricola, MsgBoxStyle.Information)

3 End Structure Un utilizzo di questa struttura è il seguente: Dim I As IMPIEGATO With I.Nome = "Marco Minerva".Matricola = "232440".Informazioni() 'Richiama la Sub definita nella struttura. End With Altre novità importanti sono state introdotte da VB.NET relativamente alla dichiarazione di costanti, variabili, procedure e funzioni. Innanzi tutto, è finalmente possibile inizializzare una variabile nella sua dichiarazione. Ad esempio, sono valide le dichiarazioni seguenti: Dim Punti As Short = 10 Dim Nome As String = "Pippo" Nelle precedenti versioni di Visual Basic, se non diversamente specificato, i parametri di una funzione o di una procedura venivano passati per riferimento; in pratica, la parola chiave ByRef era predefinita. In VB.NET, invece, per default gli argomenti sono passati ad una funzione per valore (ByVal ); utilizzando l'editor di Visual Studio.NET, se nella dichiarazione di una Sub o di una Function non si specifica altrimenti, davanti ai nomi degli argomenti verrà automaticamente aggiunto ByVal. Infine, se un parametro di una funzione è dichiarato come Optional, è obbligatorio specificare il valore che tale parametro assumerà nel caso in cui non venga specificato quando si richiama la funzione stessa. Ad esempio: Visual Basic 6 Private Sub DoSomething(frm As Form, Optional I As Integer) Visual Basic.NET Private Sub DoSomething(ByVal frm As Form, Optional ByVal I As Short = -1) Un'ultima nota riguarda il modo di restituire un valore di una Function. Nelle precedenti versioni di Visual Basic, per restituire un valore era necessario scrivere <nome funzione> = valore. In VB.NET, oltre a questo metodo, è stato aggiunta la parola chiave Return, analoga a quanto già esistente in C e in Java. Queste due funzioni sono quindi equivalenti: Private Function AreaTriangolo(ByVal Base As Double, ByVal Altezza As Double) As Double AreaTriangolo = (Base * Altezza) / 2 End Function Private Function AreaTriangolo(ByVal Base As Double, ByVal Altezza As Double) As Double Return (Base * Altezza) / 2 End Function L'unica differenza è che, eseguendo l'istruzione Return, si uscirà automaticamente della funzione. In altre parole, l'istruzione Return dell'esempio precedente equivale a: AreaTriangolo = (Base * Altezza) / 2 Exit Function Utilizzo di classi in VB.NET Alla base di ogni linguaggio di programmazione orientato agli oggetti c'è il concetto di classe. Chi ha già usato le versioni precedenti di Visual Basic assocerà immediatamente il concetto di classe a quello di modulo di classe. In effetti, le classi di VB.NET mantengono tutte le caratteristiche dei moduli di classe, ma ne aggiungono numerose altre (come verrà evidenziato meglio nelle prossime Lezioni). In prima approssimazione, una classe è una collezione di variabili, metodi e proprietà; è possibile creare una classe usando il costrutto Class:

4 Class Test Dim Nome As string 'Altre variabili. Public Sub VisualizzaNome() '... End Class Una classe è anche un tipo, quindi può essere assegnata ad una variabile: Dim Prova As New Test() 'La variabile Prova contiene un'istanza della classe Test. E' da notare l'uso della parola chiave New, necessaria perché la variabile che stiamo definendo si riferisce ad un oggetto (come in Visual Basic 6, infatti, le istanze degli oggetti sono create con New). Fatto questo, è possibile utilizzare la classe utilizzando la comune sintassi di Visual Basic. Ad esempio: Prova.VisualizzaNome() L'evento Iniziatialize, generato quando si crea un'istanza della classe, non esiste più: al suo posto è possibile definire un costruttore della classe, cioè un metodo che viene automaticamente richiamato quando si crea un'istanza della classe stessa; una delle caratteristiche più importanti del costruttore è che esso consente di specificare le proprietà iniziali della classe (in questo senso è più versatile dell'evento Initialize). Il costruttore è una particolare Sub il cui nome deve obbligatoriamente essere New. Riprendendo l'esempio precedente, vediamo come creare un costruttore per la classe Test: Class Test Dim Nome As string 'Altre variabili. Sub New(ByVal strnome As String) 'Imposta le proprietà iniziali. Nome = strnome Public Sub VisualizzaNome() '... End Class Come possiamo vedere, la routine New prende come argomento la variabile strnome e la assegna alla sua variabile interna Nome. E' possibile definire un oggetto di tipo Test utilizzando il suo costruttore: Dim Prova As New Test("Marco") Mentre le Sub e le Function sono rimaste sostanzialmente immutate, la creazione di proprietà di una classe è diversa rispetto alle versioni precedenti. In VB6 si usavano due metodi, Property Set e Property Let, rispettivamente per assegnare e recuperare il valore di una proprietà. In VB.NET, invece, è stato tutto riunito in un unico metodo, che include sia il codice per recuperare sia quello per impostare il valore di una proprietà; ad esempio: Public Property NomeUtente() As String Get Return Nome End Get Set(ByVal Value As String) Nome = Value End Set End Property Come si vede, questa proprietà è composta da due parti: il blocco Get, delimitato da Get End Get, e il blocco Set (Set End Set). A parte queste differenze sintattiche, il comportamento dei due blocchi è quello che ci si aspetta: con Get si restituisce il valore della proprietà, mentre con Set si specifica un valore per essa. L'utilizzo di una proprietà così creata rimane lo stesso. Nella definizione di una routine, oltre a Public o Private, in VB.NET è possibile usare, tra le altre, la nuova parola chiave Protected ; per maggiori informazioni sulle altre parole chiave si consiglia di consultare la Guida in linea di Visual Basic.NET. Definendo una routine di una classe come Public, essa sarà visibile da tutti le istanze di quella classe; se, invece, si usa la parola chiave Private, tale routine non sarà utilizzabile all'esterno della classe. Ad esempio:

5 Public Class Test '... '... Public Sub VisualizzaData() '... Private Function Formatta() As String '... End Function End Class Dim Prova As New Test() Prova.VisualizzaData() 'Corretto. Prova.Formatta() 'Errato: non è possibile accedere alla funzione Formatta, perché è Private. Infine, dichiarando una routine della classe Test come Protected, essa sarà visibile a tutte le classi che ereditano da Test (questo concetto verrà chiarito meglio nelle prossime Lezioni, quando si affronteranno i concetti di ereditarietà, polimorfismo e overloading); questa routine non potrà però essere utilizzata dalle istanze della classe. In pratica, Protected equivale a Private, con la differenza che il metodo è visibile anche alle classi che ereditano da quella principale. Più classi possono essere raggruppate in un unico Namespace. Ad esempio: Namespace Test Class Test1 '... End Class Class Test2 '... End Class End Namespace Con questo costrutto, per dichiarare un oggetto di tipo Test1 è necessario scrivere, ad esempio: Dim Prova1 As New Test.Test1() Analogamente, per oggetti di tipo Test2: Dim Prova2 As New Test.Test2() Fatto questo, è possibile accedere ai metodi ed alle proprietà delle classi Test1 e Test2 nel modo consueto. I namespace sono sempre Public, mentre i componenti all'interno possono essere Public o Friend (impostazioni predefinita). E' possibile definire un namespace dentro un altro, ad esempio: Namespace N1 Namespace N2 Class Test1 '... End Class Class Test2 '... End Class End Namespace End Namespace Dim Prova1 As New N1.N2.Test1() Dim Prova2 As New N1.N2.Test2() Tutte le classi che compongono la piattaforma.net sono organizzate in namespace. Ad esempio, la classe Form, da cui ereditano tutti i Windows form (argomento della Lezione 8) è raggiungibile nel namespace Windows.System.Forms.Form. A questo punto si hanno tutti gli strumenti necessari per analizzare le caratteristiche di VB.NET che ne fanno un linguaggio di programmazione orientato agli oggetti: nelle prossime Lezioni parleremo di ereditarietà, polimorfismo ed overloading.

6 Ereditarietà Abbiamo detto più volte che Visual Basic.NET è un linguaggio di programmazione orientato agli oggetti. Avendo bene in mente il concetto di classe, analizziamo le caratteristiche fondamentali di questo paradigma di programmazione: ereditarietà, polimorfismo ed overloading. Si definisce ereditarietà la possibilità per una classe (detta classe derivata) di derivare da un'altra (la classe base), in modo tale che il tipo derivato possa utilizzare le variabili, i metodi, ecc. del tipo base. La parola chiave utilizzata per creare una relazione di eredità è Inherits; questa istruzione deve obbligatoriamente essere sulla prima riga di codice dopo la definizione della classe. Si consideri l'esempio seguente: Public Class Persona Protected snome As String Private itelefono As Integer '... Public Property Nome() As String Get Return snome End Get Set(ByVal Value As String) snome = Value End Set End Property End Class Public Class Impiegato Inherits Persona Private smatricola As String '... Public Property Matricola() As String Get Return smatricola End Get Set(ByVal Value As String) smatricola = Value End Set End Property End Class In questo stralcio di codice la classe Impiegato eredita dalla classe Persona: questo significa che nella classe Impiegato è possibile utilizzare tutto ciò che in Persona è stato definito come Public, Protected o Friend, sia esso una variabile, una Sub, una Function o una Property. Ad esempio, all'interno di Impiegato è possibile utilizzare sia la variabile snome sia la proprietà Nome, mentre la variabile itelefono non è visibile. Provando a dichiarare oggetti di tipo Persona e Impiegato, si ottiene quanto segue: Dim Imp As New Impiegato() Imp.Matricola = "389321" 'Corretto: Matricola è una property della classe impiegato. Imp.Nome = "Marco" 'Corretto: Nome è una property che la classe Impiegato eredita da Persona. Dim Pers As New Persona() Pers.Nome() = "Marco" 'Corretto: Matricola è una property della classe Persona. Pers.Matricola = "389321" 'Errato: la property Matricola non è visibile alla classe Persona. Se ora commentia mo la riga Inherits Persona nella classe Impiegato, otterremo un messaggio di errore relativo all'istruzione Imp.Nome = "Marco", dal momento che abbiamo eliminato l'ereditarietà. Polimorfismo l termina polimorfismo indica la possibilità di definire all'interno di più classi metodi e proprietà con lo stesso nome, in modo che, ad esempio, una classe derivata possa ridefinire un metodo della classe base con lo stesso nome. Vediamo subito un esempio di quanto detto:

7 Public Class ProdottoBase Private Const diva As Decimal = 0.2 '... Public Overridable Function IVA(ByVal Prezzo As Decimal) As Decimal 'Calcola l'iva sul prezzo specificato. Return (Prezzo * diva) End Function End Class Public Class AltroProdotto Inherits ProdottoBase Private Const diva As Decimal = 0.18 Private Const Tassa As Decimal = 0.1 'Tassa sul prodotto. '... Public Overrides Function IVA(ByVal Prezzo As Decimal) As Decimal 'Calcola l'iva sul prezzo specificato e aggiunge la tassa sul prodotto. Return (Prezzo * diva) + (Prezzo * Tassa) End Function End Class Notiamo che la Function IVA è definita sia nella classe ProdottoBase sia nella classe AltroProdotto, che eredita da ProdottoBase. Il comportamento della funzione, tuttavia, è diverso, dal momento che in AltroProdotto all'iva viene aggiunta una tassa. A seconda che si dichiari un oggetto di tipo ProdottoBase o di tipo AltroProdotto, verrà richiamata la funzione IVA corrispondente. Per fare questo abbiamo usato il polimorfismo; la funzione IVA nella classe base è stata dichiarata usando la parola chiave Overridable: con essa si indica a Visual Basic che è possibile avere un'altra definizione per la stessa funzione in una classe derivata. In AltroProdotto, infatti, IVA è stata definita specificando Overrides: in tal modo si dice che tale funzione sovrascrive un metodo con lo stesso nome che è stato definito nella classe base. C'è anche un altro modo per sfruttare il polimorfismo, ovvero usando la parola chiave Shadows che, letteralmente, nasconde una definizione della classe base con lo stesso nome. L'esempio sopra riportato, usando Shadows, diventa: Public Class ProdottoBase Public Function IVA(ByVal Prezzo As Decimal) As Decimal ' End Function End Class Public Class AltroProdotto Inherits ProdottoBase Public Shadows Function IVA(ByVal Prezzo As Decimal) As Decimal ' End Function End Class Come si vede, nella classe base la parola chiave Overridable è sparita, mentre in AltroProdotto la Function IVA è preceduta da Shadows. E' importante notare che, usando la coppia Overridable e Overrides, il metodo che sovrascrive una routine della classe base deve avere non solo lo stesso nome, ma anche lo stesso numero di argomenti e dello stesso tipo. Invece, usando Shadows, è possibile ridefinire un metodo modificandone il tipo, il numero di argomenti, ecc; con Shadows si può addirittura nascondere una variabile della classe base con un intero metodo nella classe derivata. Questa rapida panoramica sul polimorfismo non può coprire tutti gli aspetti della tematica, per approfondire i quali si rimanda alla Guida in linea. I concetti forniti sono comunque più che sufficienti per utilizzare con successo il polimorfismo nei proprio programmi. Strettamente collegato con il polimorfismo è l'overloadi ng, altra importante caratteristica dei linguaggi di programmazione orientati agli oggetti, che sarà discussa nella prossima Lezione.

8 Overloading Overloading L'overloading, letteralmente sovraccaricamento, è la possibilità di definire più versioni di una procedura, utilizzando lo stesso nome ma un numero e/o un tipo diverso di argomenti: in fase di esecuzione, sulla base degli argomenti effettivamente passati alla routine, verrà richiamata la procedura corretta; nella Guida in linea di Visual Basic sono specificati con precisione i passi che il compilatore esegue per risolvere l'overloading, cioè per determinare qual è la routine corretta da richiamare. Cerchiamo con un esempio di capire come funziona l'overloading: Public Class Test '... Public Sub Prova(ByVal Nome As String) MsgBox("Il nome specificato è: " & Nome & ".") Public Sub Prova(ByVal Numero As Integer) MsgBox("Il numero specificato è: " & Numero & ".") End Class Le due definizioni della Sub Prova differiscono per il tipo dell'argomento: String nel primo caso, Integer nel secondo. Se ora creiamo un'istanza della classe e proviamo a richiamare la routine Prova, otteniamo: Dim T As New Test() T.Prova("Marco") 'Visualizza il messaggio "Il nome specificato è: Marco." T.Prova(104) 'Visualizza il messaggio "Il numero specificato è: 104." Per indicare che una routine sfrutta l'overloading, ovvero che sono presenti più definizioni per la stessa, si dovrebbe specificare la parola chiave Overloads, nel modo seguente: Public Overloads Sub Prova(ByVal Nome As String) Public Overloads Sub Prova(ByVal Numero As Integer) Tuttavia, il parametro Overloads è predefinito, quindi anche omettendolo (come abbiamo fatto nella classe di esempio sopra riportata), Vis ual Basic sarà in grado di gestire correttamente l'overloading. Un utilizzo classico dell'overloading è nella definizione di un costruttore per una classe (abbiamo parlato del costruttore quando abbiamo introdotto il concetto di classe, nella Lezione 3). Supponiamo di avere una classe Giocatore, che, tra le altre cose, contiene il nome del giocatore: si vorrebbe dare la possibilità di definire il nome del giocatore nel momento in cui si crea un'istanza della classe; se il nome non viene specificato, dovrebbe essere impostato su "Anonimo". E' possibile realizzare quanto detto con l'overloading del costruttore: Public Class Giocatore Private NomeGiocatore As String Sub New() NomeGiocatore = "Anonimo" Sub New(ByVal snome As String) NomeGiocatore = snome '... End Class Supponiamo inoltre di avere una Property Nome che restituisce il nome del giocatore. Stando così le cose, creando un'istanza della classe otterremo, ad esempio: Dim G As New Giocatore() 'Non si specifica il nome del giocatore: verrà richiamato il costruttore "New()". MsgBox(G.Nome) 'Visualizza "Anonimo". Dim G2 As New Giocatore("Marco") 'Si specifica il nome del giocatore: verrà richiamato il costruttore '"New(ByVal snome As String)". MsgBox(G2.Nome) 'Visualizza "Marco". Notiamo che, nel caso di overloading del costruttore, non si deve mai utilizzare la parola chiave Overloads, altrimenti si

9 ottiene un messaggio di errore. Ora che abbiamo analizzato le principali novità di Visual Basic.NET, è finalmente possibile cominciare ad utilizzare nella pratica questo linguaggio: nella prossima Lezione verrà introdotto brevemente il nuovo ambiente di sviluppo di Visual Studio. Il nuovo ambiente di sviluppo Sebbene sia possibile creare applicazioni VB.NET utilizzando un qualsiasi editor di testo e il compilatore da riga di comando che Microsoft distribuisce gratuitamente sul proprio sito Internet, Visual Studio.NET offre una serie di strumenti che permettono di incrementare molto la produttività: consente di realizzare applicazioni in modo grafico, semplicemente trascinando e posizionando sul form gli elementi che si vogliono usare, dispone di tecnologie come il completamento automatico per velocizzare la scrittura del codice, ecc. Il nuovo ambiente di sviluppo di Microsoft, denominato Microsoft Development Environment, presenta cambiamenti significativi rispetto alle versioni precedenti di Visual Studio: ora è un ambiente integrato che racchiude gli editor per tutti i linguaggi di programmazione supportati dalla piattaforma.net. E' possibile realizzare applicazioni utilizzando più linguaggi all'interno della stessa soluzione (vedremo più avanti cosa si intende per "soluzione"). I diversi linguaggi di programmazione condividono anche la stessa organizzazione dei file sorgenti: essa risulterà familiare a chi ha già usato le precedenti versioni di Visual Studio, mentre potrebbe inizialmente disorientare coloro che hanno programmato solo con Visual Basic; in realtà è possibile trovare alcuni parallelismi tra l'organizzazione dei file di VB 6 e quella di Visual Studio.NET. Come già accennato nella prima lezione, i file sorgente di VB.NET hanno tutti estensione.vb, indipendentemente dal fatto che siano form, moduli o moduli di classi. I sorgenti di una stessa applicazione sono raggruppati in progetti, proprio come nelle precedenti versioni. Infine, più progetti possono essere inseriti all'interno della stessa soluzione, concetto che si avvicina abbastanza al gruppo di progetti di VB 6; la differenza sta nel fatto che nella medesima soluzione è possibile includere progetti realizzati con diversi linguaggi di programmazione. Avviando per la prima volta Visual Studio.NET, verranno visualizzate nella parte centrale della finestra una serie di opzioni utili per personalizzare l'ambiente di sviluppo; esse saranno comunque accessibili anche in futuro all'interno della finestra Opti ons (Opzioni), raggiungibile con un clic sul menu Tools (Strumenti). Dopo aver effettuato le personalizzazioni del caso, facendo clic sul pulsante New Project (Nuovo progetto), verrà visualizzata la finestra di dialogo omonima in cui, sulla sinistra, è visibile una lista ad albero con una voce principale per ogni tipo di progetto che è possibile realizzare con Visual Studio.NET. Selezionando Visual Basic projects (Progetti Visual Basic) sulla destra comparirà l'elenco dei tipi di applicazioni Visual Basic: Windows Application (Applicazione Windows) corrispondente all'exe Standard delle versioni precedenti. In questa stessa finestra è anche possibile specificare il nome dell'applicazione e la posizione in cui salvarla. Accettiamo le impostazioni di default con un clic sul pulsante OK; verrà creata un'applicazione per Windows composta da un Windows form: con questo termine si indica l'evoluzione del classico form di Visual Basic (la Windows form sarà argomento della prossima Lezione). La struttura dei file che compongono la soluzione dovrebbe risultare simile a quella raffigurata nella figura seguente: La finestra mostrata è il Solution Explorer, che funziona in modo analogo alla Gestione progetti delle precedenti versioni di Visual Basic.

10 Facendo doppio clic sul nome della form (Form1.vb) sarà visualizzata la finestra per l'immissione del codice sorgente; in alternativa al doppio clic è possibile premere il tasto F7. L'editor del codice di Visual Basic.NET presenta innovazioni significative rispetto alle versioni precedenti, tutte rivolte all'aumento della produttività dello sviluppatore. Tra le nuove funzioni si segnalano in particolare l'indentazione automatica del codice durante la digitazione e la "chiusura automatica" dei costrutti, per cui, ad esemp io, se si scrive un condizione If e si preme il tasto Invio, l'editor aggiungerà la clausola End If e posizionerà il cursore nella posizione corretta per la scrittura del codice facente parte dell'if stesso. Altre novità importanti sono relative all'organizzazione del codice sorgente: ora le varie parti del codice possono essere collassate ed espanse facendo clic rispettivamente sul simbolo - (meno) e + (più) che viene automaticamente visualizzato a destra delle dichiarazione di un metodo, di un insieme di righe di commento, ecc. Inoltre, attraverso il nuovo costrutto #Region... #End Region è possibile organizzare logicamente porzioni di codice che svolgono operazioni correlate. Ad esempio, all'interno di una classe: #Region " Matematica " Private Function Somma(ByVal A As Double, ByVal B As Double) As Double Return A + B End Function Private Function Sottrazione(ByVal A As Double, ByVal B As Double) As Double Return A - B End Function #End Region Scrivendo questo codice, accanto alla riga #Region " Matematica " comparirà il segno - (meno); se ora proviamo a fare clic su tale simbolo, tutta la sezione di codice compresa in questa regione verrà collassata nell'unica riga " Matematica ". Le novità di Visual Studio.NET non si fermano qui: è anche possibile personalizzare l'ambiente di sviluppo tramite macro scritte con Visual Basic for Applications, utilizzando un editor analogo a quello disponibile in Office. La Lista dei task, inoltre, oltre a visualizzare gli errori presenti nel programma, consente di definire delle annotazioni all'interno del codice in modo da evidenziare, ad esempio, i punti da correggere, quelli da rivedere, le modifiche effettuate, ecc. Facendo doppio clic sull'annotazione visualizzata in questa finestra, verrà automaticamente selezionata la riga di codice corrispondente. La Windows form parte prima Visual Basic.NET introduce un nuovo oggetto, la Windows form, che prende il posto del form delle versioni precedenti; i cambiamenti riguardano in particolare le funzionalità, le nuove caratteristiche e i nuovi metodi supportati. Le Windows form sono il componente fondamentale della piattaforma Microsoft.NET, rispondendo a quelli che sono i requisiti del paradigma della programmazione orientata agli oggetti. Esse consentono di sfruttare in maniera estremamente semplice tutte le caratteristiche di Windows 2000 e XP. Per utilizzare le Windows form è necessario creare una Windows Application (Applicazione Windows), come abbiamo visto. Per aggiungere nuove form al progetto, fare clic con il tasto destro del mouse sul nome del progetto all'interno del Solution Explorer e scegliere Add (Aggiungi), quindi selezionare Add Windows form (Aggiungi Windows form). La Windows form è concettualmente molto diversa dalla form di Visual Basic 6. Innanzi tutto nel codice di una Windows form possiamo notare la Sub New, che come abbiamo detto definisce il costruttore della classe: una Windows form, infatti, è prima di tutto una classe, quindi per essa valgono tutte le considerazioni fatte in precedenza. Da notare che tale Sub non è direttamente visibile nel codice, ma è contenuta all'interno della regione Windows form designer generated code (Codice generato dal Windows form designer). Sotto la definizione della form, Public Class Form1, compare l'istruzione Inherits System.Windows.Forms.Form: si tratta della classe base da cui ereditano tutte le Windows form. Essa fa parte della base class library, la libreria classi base di.net. Come si può vedere da tale istruzione, la classe Form è contenuta nel namespace System.Windows.Forms. Altra novità rispetto alle versioni precedenti di Visual Basic è la routine InitializeComponent, che contiene la definizione e le proprietà di tutti gli elementi dell'interfaccia della form: mentre prima tali informa zioni erano contenute nell'intestazione del file.frm e non erano direttamente modificabili da Visual Basic, ora sono chiaramente visibili aprendo il codice della Windows form all'interno di Visual Studio.NET. La routine New può essere usata per replicare le funzionalità dell'evento Form_Initialize, scrivendo il proprio codice dopo la chiamata a InitializeComponent. Facendo doppio clic sulla form, verrà aperto l'editor del codice all'interno della routine Form1_Load, il cui significato è lo stesso che aveva in VB 6. Dopo la lista degli argomenti dell'evento, di cui parleremo tra breve, si può notare un nuovo

11 costrutto: Handles MyBase.Load. Con questa istruzione si indica a Visual Basic che la routine appena dichiarata gestisce l'evento Load del form; MyBase è una parola chiave che permette di riferire la classe in cui ci si trova attualmente (abbiamo infatti detto che la Windows form è una classe). La conseguenza di questa novità è che i nomi degli eventi in VB.NET non sono più vincolati: è possibile creare Sub con qualsiasi nome, a patto naturalmente che prevedano la corretta lista degli argomenti, e poi associarli a determinati eventi con il costrutto Handles oggetto.evento. Ad esempio, l'evento Load del form potrebbe essere gestito da una Sub Avvio così definita: Private Sub Avvio(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load MsgBox("Hello World!") Dopo aver scritto questo codice, eseguiamo il programma, premendo come di consueto il tasto F5: se non ci sono stati errori di digitazione, verrà visualizzata la seguente finestra: E' importante notare una cosa: a causa di un bug di Visual Studio.NET, potrebbe succedere che, premendo il tasto F5, il programma venga compilato ma non eseguito. In questo caso è sufficiente premere il tasto, quindi il tasto per avviare correttamente il programma. Vediamo ora le differenze negli argomenti inviati ad un evento. Innanzi tutto, in VB.NET tutti gli eventi prevedono degli argomenti, a differenza di quanto avveniva nelle versioni precedenti di Visual Basic, in cui eventi del tipo Form_Click e lo stesso Form_Load non avevano alcun argomento. Il primo argomento è sempre di tipo System.Object e permette di identificare l'oggetto che ha generato l'evento: questa informazione è utile, ad esempio, perché con la parola chiave Handles è possibile associare più oggetti alla stessa routine. Ad esempio, inseriamo due pulsanti sulla form, quindi premiamo il tasto F7 per visualizzare il codice del form e scriviamo: Private Sub Clic(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click, Button2.Click If sender.equals(button1) Then MsgBox("E' stato fatto clic sul pulsante Button1.") ElseIf sender.equals(button2) Then MsgBox("E' stato fatto clic sul pulsante Button2.") End If La lista degli argomenti richiesti da un certo evento è disponibile nella Guida in linea di Visual Basic.NET. Dopo la parola chiave Handles sono stati specificati due eventi, separati da una virgola; in generale, è possibile specificarne un numero arbitrario, a patto che richiedano gli stessi argomenti. Poiché la Sub Clic viene generata indifferentemente quando si fa clic su Button1 o su Button2, è necessario usare l'oggetto sender per sapere quale dei due pulsanti è stato in realtà premuto; per fare questo, si usa il metodo Equals dell'oggetto, che prende come argomento un altro oggetto e restituisce True se i due oggetti sono uguali. Il secondo argomento, nel caso dell'evento Load, è di tipo EventArgs, anche se a seconda del tipo di evento può essere diverso; ad esempio, nel caso degli eventi KeyDown, KeyUp, è di tipo System.Windows.Forms.KeyEventArgs. Esso contiene informazioni di vario genere, dipendenti dal particolare tipo di evento a cui si riferisce. Per fare un esempio, proviamo a intercettare l'evento KeyPress della form; Innanzi tutto posizioniamoci sull'evento relativo. All'interno della finestra del codice, fare clic sulla ComboBox in alto a sinistra e selezionare (base class events): tale categoria raggruppa tutti gli eventi della classe base; fatto questo, nel ComboBox in alto a destra comparirà la scritta (Declarations): fare clic su quest'ultima e scorrere l'elenco fino a selezionare l'evento KeyPress. All'interno dell'editor verrà automaticamente aggiunta la seguente Sub per gestire l'evento: Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress Supponiamo di voler stampare un messaggio diverso a seconda che si digiti una consonante o una vocale. Il codice è: Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress Select Case e.keychar Case "A", "E", "I", "O", "U", "a", "e", "i", "o", "u" MsgBox("E' stata digitata una vocale.")

12 Case Else MsgBox("E' stata digitata una consonante.") End Select L'oggetto e, di tipo KeyPressEventArgs, contiene informazioni sul carattere premuto; in particolare, la proprietà KeyChar restituisce il carattere che è stato digitato. Quanto detto relativamente agli eventi è valido per la form, ma più in generale per tutti i controlli di Visual Basic.NET. Nella prossima Lezione continueremo l'analisi delle principali novità introdotte dalla Windows form. La Windows form parte seconda Continuiamo la nostra breve analisi delle nuove caratteristiche della Windows form di VB.NET. Una delle cose più importanti da notare è che la proprietà Caption è stata rinominata in. Più in generale, le proprietà Caption di tutti i controlli sono state sostituite dalla proprietà ; a parte il nome diverso, comunque, le due proprietà sono assolutamente analoghe. Abbiamo detto che una Windows form è una classe: è quindi possibile creare oggetti di tipo form e lavorare con essi come con qualunque altro oggetto. In particolare, quando si vuole aprire una form sopra un altro, è necessario prima dichiarare un oggetto che abbia come tipo la form da visualizzare. Cerchiamo di spiegare meglio questo concetto con un esempio. Dopo aver creato una nuova soluzione aggiungiamo un secondo form al progetto corrente, oltre a quello che viene creato di default (e che ha nome Form1). Per fare questo, fare clic con il tasto destro del mouse sul nome del progetto all'interno del Solution Explorer e scegliere Add (Aggiungi), quindi selezionare Add Windows form (Aggiungi Windows form). Confermare le impostazioni della finestra di dialogo Add New Item (Aggiungi nuovo elemento) con un clic sul pulsante Open (Apri). Il nome del nuovo form è Form2. Ora aggiungiamo un pulsante sul Form1: l'oggetto CommandButton è stato rinominato in Button; impostiamone la proprietà su "Apri secondo form". Facciamo quindi doppio clic sul pulsante per generare la routine che gestisce l'evento clic e scriviamo il codice seguente: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim frm As New Form2() 'Visualizza il Form2. frm.showdialog() La prima dichiarazione definisce un nuovo oggetto frm di tipo Form2 e, tramite la parola chiave New, ne crea una nuova istanza. L'istruzione successiva richiama il metodo ShowDialog di frm: esso corrisponde, nelle precedenti versioni di Visual Basic, al metodo Show con il parametro vbmodal, cioè visualizza il Form2 e blocca l'esecuzione di Form1 finché Form2 non viene chiuso. Invece, se vi vuole visualizzare il Form2 senza fermare Form1, è necessario richiamare il metodo Show di frm. L'evento QueryUnload è stato rinominato in Closing. Mentre in VB6, per annullare la chiusura della form, era necessario impostare su True la variabile Cancel che faceva parte degli argomenti di QueryUnload, per ottenere lo stesso effetto in VB.NET si deve agire sulla proprietà e.cancel, come potete osservare dall'esempio seguente: Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing 'Annulla la chiusura del form. e.cancel = True Per chiudere una form è necessario richiamare il metodo Close della form stessa. Ad esempio, per fare in modo che premendo il pulsante Button1 la finestra venga chiusa, si deve scrivere il codice seguente: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() La Windows form introduce numerose nuove proprietà, consentendo di realizzare facilmente operazioni che prima erano possibili sono utilizzando le API di Windows, come impostare le dimensioni massima e minima della finestra (per determinare le quali sono disponibili rispettivamente le proprietà MaximumSize e MinimunSize). Non essendo possibile analizzarle tutte, ci limiteremo ad illustrare le più importanti e quelle che hanno subito cambiamenti rispetto alla versione precedenti di Visual Basic. Innanzi tutto, le proprietà AcceptButton e CancelButton consentono di impostare il pulsante il cui codice si vuole venga eseguito, rispettivamente, quando si premono i

13 tasti Invio oppure Esc. In pratica, queste due proprietà sostituiscono le precedenti Accept e Cancel del controllo CommandButton. Per impostare tali proprietà, fare clic sulla freccia posta sulla destra di AcceptButton oppure CancelButton nella finestra delle Proprietà: verrà visualizzata una lista da cui è possibile selezionare il pulsante che si vuole associare. La proprietà BorderStyle è stata rinominata in FormBorderStyle, ma a parte il cambiamento di nome non ha subito altre modifiche. La proprietà Menu consente di impostare un menu per il form. Anche il menu e i comandi di menu, infatti, in VB.NET sono trattati come oggetti. Questa proprietà viene esposta perché è possibile definire più oggetti di tipo Menu nell'applicazione, visualizzando di volta in volta quello opportuno, ad esempio in risposta a determinate azioni dell'utente. I menu in VB.NET saranno trattati nella Lezione 13. Opacity consente di imp ostare la percentuale di trasparenza della form. La proprietà StartUpPosition è stata rinominata in StartPosition; la proprietà CenterOwner ora si chiama CenterParent. TransparentKey permette di definire un colore che apparirà trasparente quando verrà disegnato sulla form. Ci sono poi altre nuove proprietà supportate dalla form e dai controlli standard. Analizziamo anche in questo caso le più significative. La proprietà BackgroundImage consente di impostare un'immagine di sfondo. Se il file selezionato ha dimensioni inferiori a quelle del form, verrà automaticamente affiancato fino a coprire l'intera finestra. La proprietà Cursor sostituisce la proprietà MousePointer. Per impostare un cursore è necessario utilizzare la classe Cursors, come mostrato nell'esempio seguente: Me.Cursor = Cursors.WaitCursor 'Imposta la clessidra. Me.Cursor = Cursors.Default 'Ripristina il puntatore predefinito. Una proprietà completamente nuova è ContextMenu, con cui è possibile associare un menu contestuale alla form, cioè un menu che viene automaticamente richiamato quando si fa clic sulla form con il tasto destro del mouse. Ritorneremo su questo argomento quando parleremo della nuova gestione dei menu in VB.NET, nella Lezione 13. Ora che abbiamo preso familiarità con la Windows form, possiamo analizzare le novità dei controlli standard di VB.NET, che saranno trattate a partire dalla prossima Lezione. Box Non possiamo descrivere in questa sede tutti i controlli di Visual Basic.NET; i soli controlli standard, infatti, sono almeno 45, contro i 20 di Visual Basic 6. Di conseguenza, ci limiteremo ad analizzare i nuovi oggetti introdotti da VB.NET e, brevemente, quelli che presentano cambiamenti significati rispetto alle versioni precedenti. Per ogni controllo analizzato, cominceremo con l'esporre le nuove proprietà e i nuovi metodi di cui dispone; potrebbe sembrare un approccio noioso, ma dato che la maggior parte delle proprietà e dei metodi hanno cambiato nome da VB 6 a VB.NET, questo è l'unico modo per evitare di non ritrovare più quello che serve quando si lavora con il nuovo ambiente di sviluppo. Uno dei controlli maggiormente potenziati è la Box. La prima cosa da far notare è che è stato finalmente superato il limite dei caratteri circa visualizzabili: ora è possibile, teoricamente, inserire fino a 2 GB di informazioni in una singola casella di testo. Una delle proprietà più interessanti, peraltro comune a tutti i controlli, è la proprietà Anchor, che consente di adattare il controllo alle dimensioni della finestra. Per impostarla, fare clic sulla freccia visualizzata a destra di tale proprietà: comparirà una piccola finestra in cui selezionare, con un clic del mouse, i bordi della finestra a cui si vuole ancorare il controllo. L'impostazione predefinita è Top, Left, cioè il controllo ancorato al bordo sinistro in alto: in pratica l'oggetto non viene adattato alle dimensioni della finestra, ma resta fisso nella sua posizione. Proviamo ad inserire una Box sulla form, in una posizione qualsiasi, e ad impostare la sua proprietà Anchor su Top, Left, Right. Se ora proviamo a ridimensionare il form, anche in fase di progettazione, noteremo che la casella di testo di allunga o si riduce in accordo alle dimensioni della finestra. Analogamente, se posizioniamo la Box nella parte bassa del form e impostiamo Anchor su Bottom, Left, essa rimarrà sempre alla stessa distanza dal bordo inferiore della finestra, qualunque dimensione essa abbia. Passando alle proprietà specifiche della Box, AcceptsReturn e AcceptsTab consentono di stabilire se il controllo deve accettare, rispettivamente, i caratteri Invio e Tab. Ad esempio, la prima proprietà è utile quando si ha un controllo multilinea e si vuole fare in modo che, premendo il tasto Invio, venga inserita una nuova linea di testo; se, invece, AcceptsReturn è False (impostazione predefinita), premendo Invio verrà attivato il pulsante di default della form. AcceptsTab deve essere impostata su True se si vuole dare la possibilità di inserire caratteri di tabulazione nella Box, altrimenti la pressione del tasto Tab sposterà lo stato attivo sul controllo successivo. Altra proprietà importante è Lines, che consente di definire le righe di testo della casella, nel caso in cui la proprietà MultiLine sia impostata su True. Facendo clic sul pulsante con i tre puntini in corrispondenza della proprietà Lines, verrà visualizzato la finestra di dialogo String Collection Editor, in cui è possibile digitare le righe che si vogliono visualizzare, separate da Invio.

14 Per quanto riguarda i metodi, citiamo qui solo i più interessanti, rimandando alla consultazione della Guida in linea per l'elenco completo. Il metodo Append aggiunge il testo specificato alla fine del contenuto nella Box. I metodi Copy, Cut e Paste, rispettivamente, permettono di copiare, tagliare ed incollare il testo: le operazioni con gli Appunti di Windows, che prima si realizzavano tramite l'oggetto Clipboard, ora sono accessibili come metodi della Box. Il metodo Focus, comune a tutti i controlli, consente di spostare lo stato attivo sull'oggetto su cui viene richiamato. Il metodo Undo, infine, annulla l'ultima operazione e, di fatto, equivale alla pressione della combinazione di tasti CTRL+Z. Vediamo ora quali sono i principali eventi del controllo Box e come si gestiscono. L'evento Change è stato rinominato in Changed. Ma gli eventi su cui vale la pena spendere qualche parola sono KeyDown, KeyUp e KeyPress: analizziamoli ricordando che le considerazioni che verranno fatte sono valide per tutti i controlli che possono generare gli eventi KeyDown, KeyUp e KeyPress. Per quanto riguarda i primi due, nelle precedenti versioni di Visual Basic essi avevano come parametri KeyCode e Shift, che permettevano di sapere quale carattere era stato premuto e, controllando il valore di Shift, se in combinazione con ALT, CTRL o SHIFT; inoltre, scrivendo all'interno dell'evento KeyCode = 0, era possibile annullare la digitazione. Tutte queste informazioni, in VB.NET, sono contenute nel parametro e, che è di tipo System.Windows.Forms.KeyEventArgs: Private Sub Box1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Box1.KeyUp In particolare, per quanto riguarda gli eventi KeyUp e KeyDown, l'oggetto e espone le proprietà KeyCode, Alt, Control e Shift, utili per sapere quale carattere è stato premuto e se in combinazione con i tasti ALT, CTRL o SHIFT. Considerate l'esempio seguente: Private Sub Box1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Box1.KeyUp If e.keycode = Keys.F And e.shift = True Then MsgBox("Premuta la combinazione SHIFT+F.") End If Keys è un'enumerazione di tutti i caratteri della tastiera e può quindi essere utilizzato per sapere quale carattere è stato premuto: in questo esempio si controlla se e.keycode è uguale a Keys.F, cioè se è stato premuto il carattere F. e.shift = True, invece, è usato per sapere se insieme al tasto F è stato premuto anche SHIFT. Il parametro e dell'evento KeyPress, invece, espone tra le altre le proprietà KeyChar e Handled; la prima contiene la rappresentazione in formato stringa del carattere premuto, mentre l'altra consente di dire a Visual Basic che l'evento KeyPress è gestito, cioè che non si vuole visualizzare il carattere premuto nella Box perché sono state fatte altre elaborazioni: in pratica, equivale a porre KeyAscii = 0 nell'evento KeyPress delle precedenti versioni di Visual Basic. E' arrivato il momento di concretizzare quanto abbiamo detto finora con un esempio pratico. Realizziamo un'ipotetica finestra per il login di un'applicazione: per essere riconosciuto come valido, un utente deve digitare nome utente e password corretti (nel nostro esempio saranno rispettivamente utente e pass); vogliamo però prevedere anche un funzione di emergenza, in modo tale che sia possibile entrare anche se ci si dimentica la password. Nel nostro caso faremo una cosa molto semplice: la procedura di emergenza consiste nel digitare il nome pippo e premere la combinazione di tasti SHIFT+E. Iniziamo quindi a realizzare l'esempio, inserendo i controlli nella form in modo da ottenere una finestra simile a quella riprodotta a lato. Nella tabella qui sotto sono riportati i nomi dei controlli utilizzati con i valori delle proprietà da modificare: Nome controllo (tipo) Proprietà Valore Label1 (Label) AutoSize True Nome utente: Box1 (Box) <Vuoto> Label2 (Box) Box2 (Box) Button1 (Button) Autosize PasswordChar Enable True Password: * ><vuoto> False OK Form1 (Form) AcceptButton Button1

15 FormBorderStyle MaximizeBox MinimizeBox FivedSingle False False Login E' il momento di scrivere il codice. Innanzi tutto, vogliamo che il pulsante OK venga attivato solo quando sono stati immessi sia il nome utente sia la password. Questo comportamento si ottiene con il codice seguente: Private Sub Box1_Changed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Box1.Changed 'La proprietà "Length" è usata per recuperare la lunghezza del testo digitato. If Box1.Length > 0 And Box2.Length > 0 Then Button1.Enabled = True Else Button1.Enabled = False End If Private Sub Box2_Changed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Box2.Changed 'La proprietà "Length" è usata per recuperare la lunghezza del testo digitato. If Box1.Length > 0 And Box2.Length > 0 Then Button1.Enabled = True Else Button1.Enabled = False End If La proprietà Length restituisce il numero di caratteri contenuti nella casella di testo su cui viene invocata, e corrisponde alla funzione Len(testo) delle versioni precedenti di Visual Basic. La funzione di controllo del login è molto semplice: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Box1. = "utente" AndAlso Box2. = "pass" Then Me.Close() Else MsgBox("La password digitata non è valida.", MsgBoxStyle.Exclamation) Box1.Focus() End If Il significato del nuovo operatore AndAlso è stato spiegato nella lezione 2. A questo punto l'esempio è già operativo: avendo impostato la proprietà AcceptButton della form su Button1, è possibile attivare la routine Button1_Click semplicemente premendo il pulsante Invio (naturalmente quando il pulsante è attivo). Ma noi abbiamo deciso di prevedere anche una funzione di emergenza: Private Sub Box1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Box1.KeyDown If Box1. = "pippo" AndAlso e.shift = True AndAlso e.keycode = Keys.E Then MsgBox("E' stata usata la procedura di emergenza.", MsgBoxStyle.Information) Me.Close() End If Questa routine semplicemente controlla se, quando il contenuto di Box1 è pippo, viene premuta la combinazione SHIFT+E, nel qual caso visualizza un messaggio per informare l'utente che ha utilizzato la combinazione di emergenza. E' possibile scaricare il codice completo dell'esempio facendo clic qui. Nella prossima Lezione parleremo dei controlli PictureBox, Panel e GroupBox: il primo ha subito numerosi cambiamenti rispetto alle versioni precedenti, mentre il secondo è una novità di Visual Basic. NET; il controllo GroupBox, infine, sostituisce il vecchio Frame. I controlli PictureBox, Panel e GroupBox l controllo Image in Visual Basic.NET non esiste più: ora per visualizzare un'immagine all'interno di una form è possibile

16 utilizzare solo il controllo PictureBox. Anch'esso ha subito alcuni cambiamenti significativi. Innanzi tutto, la proprietà Picture, utilizzata per impostare l'immagine da visualizzare nel controllo, è stata rinominata in Image; per quanto riguarda i formati, è stato aggiunto il supporto ai file PNG ed alle GIF animate. La proprietà AutoSize è stata sostituita da SizeMode, che rispetto alla prima offre alcune possibilità in più: Normal è l'impostazione predefinita; StretchImage adatta le dimensioni dell'immagine perché possa essere interamente visualizzata all'interno del controllo; AutoSize ridimensiona la PictureBox sulla base della grandezza dell'immagine; CenterImage visualizza l'immagine centrata nella PictureBox. Per impostare la proprietà Image non è più disponibile il metodo LoadPicture; essa deve essere impostata su un oggetto di tipo System.Drawing.Bitmap: allo scopo è possibile utilizzare il metodo FromFile della classe appena citata. Ad esempio, l'istruzione: PictureBox1.Image = System.Drawing.Bitmap.FromFile("C:\Immagini\Cascate.bmp") Visualizza nella PictureBox l'immagine C:\Immagini\Cascate.bmp. Per eliminare l'immagine, è sufficiente porre la proprietà Image uguale a Nothing. Il controllo Panel è molto semplice da utilizzare. Si tratta di un controllo contenitore, cioè consente di definire un'area al cui interno è possibile inserire altri oggetti, che verranno logicamente considerati insieme, come facenti parte di un unico gruppo: ad esempio, nascondendo un controllo Panel, verranno automaticamente nascosti anche tutti i controlli in esso contenuti. Nelle precedenti versioni di Visual Basic, per raggruppare insieme alcuni oggetti era necessario inserirli all'interno di una PictureBox, che quindi aveva una doppia valenza (visualizzatore di immagini e contenitore). Per inserire oggetti in un controllo Panel è sufficiente selezionarli e trascinarli all'interno del controllo stesso: non è più indispensabile crearli direttamente nel contenitore, come accadeva con la PictureBox; analogamente, se si vuole portare un oggetto all'esterno del Panel, basta selezionarlo e spostarlo al di fuori di esso. Se si elimina un controllo Panel, verranno automaticamente eliminati anche tutti gli oggetti al suo interno. Le considerazioni fatte fin qui relativamente al Panel si applicano anche al GroupBox, controllo che prende il posto del vecchio Frame. Anch'esso è un controllo contenitore: la differenza rispetto al Panel è che il GroupBox definisce un'area delimitata e visibile in fase di esecuzione, mentre i bordi del controllo Panel sono invisibili a runtime. Realizziamo ora un piccolo esempio per impratichirci con i controlli appena analizzati. Oltre a Panel e PictureBox, utilizzeremo anche la RadioButton (nuovo nome dell'optionbutton) e la CheckBox. L'applicazione che andremo a creare è molto semplice: una PictureBox di cui si può impostare la proprietà SizeMode attraverso una serie di RadioButton; una CheckBox, inoltre, consente di stabilire se si vuole visualizzare o meno l'immagine. L'interfaccia che vogliamo realizzare è visibile a lato. Le proprietà da impostare sono le seguenti: Panel1 (Label) Nome controllo (tipo) Proprietà Valore RadioButton 1 (RadioButton) RadioButton 2 (RadioButton) RadioButton 3 (RadioButton) RadioButton 4 (RadioButton) CheckBox 1 (CheckBox) Checked Tag Tag Tag Tag Checked True 0 Normal 1 StretchImage 2 Autosize 3 CenterImage True Visualizza PictureBox 1 (PictureBox) SizeMode Normal Infine, impostiamo la proprietà Image della PictureBox su un'immagine di dimensioni minori di quelle della casella, cosicché sia possibile notare gli effetti della modifica della proprietà SizeMode. Cominciamo dalle cose più facili, cioè il codice associato al controllo CheckBox1. Vogliamo che, attivando o disattivando la casella di controllo, la PictureBox venga visualizzata oppure nascosta: Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged 'Visualizza o nasconde la PictureBox.

17 PictureBox1.Visible = CheckBox1.Checked L'evento CheckedChanged viene generato quando si modifica la selezione di una CheckBox, sia direttamente, con un clic sul controllo, sia via codice, impostando la proprietà Checked. Ora dobbiamo scrivere il codice per modificare la proprietà SizeMode della PictureBox a seconda della RadioButton che viene premuta. Il modo più semplice per farlo consiste nello scrivere quattro routine, una per controllo, ciascuna delle quali imposta SizeMode su un valore diverso. Vediamo qui, invece, una soluzione più sofisticata ed efficiente, che sfrutta una sola routine e l'oggetto sender: Private Sub Selection(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButton1.Click, RadioButton2.Click, RadioButton3.Click, RadioButton4.Click PictureBox1.SizeMode = CInt(CType(sender, RadioButton).Tag) Cerchiamo di spiegare bene il significato di queste righe di codice. Innanzi tutto, dopo la parola chiave Handles sono stati specificati quattro eventi, corrispondenti agli eventi Click di ciascuna RadioButton: in tal modo si dice a Visual Basic di eseguire la routine Selection ogni volta che si preme il pulsante del mouse su una RadioButton. All'interno della routine, l'oggetto sender è usato per recuperare il particolare controllo che ha generato l'evento; sender è di tipo Object, da cui sono derivati tutti i tipi di Visual Basic.NET. Noi però sappiamo che in questo caso l'oggetto passato alla funzione è una RadioButton, quindi usiamo la funzione CType per convertirlo e poter utilizzare i metodi e le proprietà tipiche di una RadioButton. In generale, la sintassi della funzione CType è la seguente: CType(espressione, tipo) Dove espressione rappresenta quello che si vuole convertire (ad esempio un oggetto o una variabile), mentre tipo è il tipo di dato che vogliamo ottenere con la conversione. Tornando la nostro esempio, dopo aver convertito l'oggetto sender in RadioButton ne leggiamo la proprietà Tag, la trasformiamo in intero con CInt e la passiamo alla proprietà SizeMode della PictureBox1. E' da notare che, se non avessimo utilizzato la funzione CType, il codice avrebbe funzionato ugualmente, poiché VB avrebbe tentato una conversione implicita dell'oggetto sender. Utilizzando, invece, la funzione CType si forza una conversione esplicita: dove possibile, è sempre preferibile usare le conversioni esplicite piuttosto che quelle implicite, innanzi tutto perché rendono più chiaro il codice, poi perché consentono a Visual Basic di determinare univocamente il tipo di dati di un particolare oggetto. Il programma di esempio che abbiamo realizzato in questa Lezione può essere scaricato facendo clic qui. La prossima Lezione sarà dedicata ad una panoramica sui controlli ListBox, CheckedListBox e ComboBox: pur non essendo una novità, Visual Basic. NET ha introdotto numerosi cambiamenti relativamente al loro utilizzo. I controlli ListBox, CheckedListBox e ComboBox controlli ListBox, CheckedListBox e ComboBox erano già presenti in Visual Basic 6, anche se i primi due erano di fatto un unico oggetto: per visualizzare la caselle di spunta in una ListBox di VB 6 era necessario impostare la sua proprietà Style su 1 - CheckBox. In VB.NET, invece, ListBox e CheckedListBox sono due controlli separati, pur se con molti elementi in comune. Cominciamo quindi ad analizzare le proprietà che li accomu nano. La proprietà Items (disponibile anche nella ComboBox) consente di aggiungere o rimuovere elementi alla lista in modo molto più facile rispetto alle precedenti versioni di Visual Basic: premendo il pulsante con i tre puntini a destra di tale proprietà, verrà visualizzato l'item Collection Editor in cui è possibile digitare gli elementi, uno per riga. MultiColumn deve essere impostato su True se si vuole che gli elementi della ListBox o della CheckedListBox vengano visualizzati in colonne affiancate; in questo caso, la proprietà ColumnWidth consente di definire la larghezza delle colonne. La proprietà SelectionMode sostituisce ed estende la proprietà MultiSelect. Per quanto riguarda le proprietà della ComboBox, la proprietà Style è stata rinominata in DropDownStyle. DropDownWidth consente di definire la larghezza, in pixel, dell'elenco a discesa. E' possibile anche impostare il numero di elementi da visualizzare in tale elenco, agendo sulla proprietà MaxDropDownItems. Passando ai metodi, è interessante notare come questi controlli siano stati notevolmente potenziati, con l'aggiunta di funzionalità che prima erano disponibili solo utilizzando le API di Windows. Nel seguito faremo riferimento alla ListBox, ricordando però che le considerazioni che verranno fatte, salvo diversa indicazione, sono valide per tutti e tre i controlli oggetto di questa Lezione. Per lavorare con gli elementi di una ListBox è necessario utilizzare i metodi della collezione Items del controllo. Ad esempio, per aggiungere un elemento ad una ListBox di nome ListBox1 è necessario scrivere: ListBox1.Items.Add("Nuovo elemento") Per rimuovere una voce sono disponibili i metodi Remove e RemoveAt: il primo consente di rimuovere l'oggetto specificato,

18 in qualunque posizione si trovi, mentre il secondo cancella l'elemento nella posizione specificata. Ad esempio, ListBox1.Items.Remove ("Testing") rimuove l'elemento di nome Testing dalla ListBox, mentre ListBox1.Items.RemoveAt(5) elimina la sesta voce dell'elenco (ricordiamo che si inizia a contare da 0). E' da notare che se, nel primo caso, l'elemento Testing non esiste, non viene comunicato alcun messaggio, mentre se, nel secondo caso, la lista ha meno di sei elementi, si genera un errore. Altro metodo importante della collezione Items è Contains, che restituisce True se l'elemento specificato come argomento è presente nella lista, False altrimenti. Per recuperare l'elemento attualmente selezionato nella ListBox si può usare la proprietà SelectedItem; l'indice corrispondente è conservato in SelectedIndex. Se si vogliono scorrere gli elementi selezionati è possibile usare le collezioni che gli oggetti ListBox, CheckedListBox e ComboBox mettono a disposizione; il seguente esempio mostra come conoscere gli elementi attualmente selezionati in una CheckedListBox: Dim Elemento As String For Each Elemento In CheckedListBox1.CheckedItems MsgBox("Elemento selezionato: " & Elemento) Next Se, invece di conoscere gli elementi, fossimo stati interessati a recuperare gli indici selezionati, sarebbe stato sufficiente scorrere la collezione CheckedListBox1.CheckedIndices. Per quanto riguarda gli eventi, ricordiamo qui soltanto SelectedIndexChanged, comune a tutti e tre i controlli, che viene generato quando si seleziona un elemento nella lista, ovvero quando si modifica la proprietà SelectedIndex del controllo. Passiamo alla consueta realizzazione di un esempio per chiarire i concetti fin qui esposti. Vogliamo creare un'applicazione che consenta di selezionare alcuni articoli da un elenco per inserirli, ad esempio, in un ordine da stampare o inviare via posta elettronica. L'interfaccia è molto ricca di controlli, come si può vedere dall'immagine a lato: Nome controllo (tipo) Proprietà Valore Panel1 (Label) ListBox 1 (ListBox) AutoSize true Elementi disponibili: Button 1 (Button) Aggiungi>> Button 2 (Button) <<Rimuovi Label 2 (Label) CheckedListBox1 (CheckedListBox) Label 4 (Label) Label 5 (Label) ComboBox 1 (ComboBox) Label 6 (Label) AutoSize CheckOnClick AutoSize AutoSize DropDownStyle Items AutoSize true Elementi Selezionati: True True <vuoto> True Tipo pagamento DropDownList Contanti/Carta Credito True <vuoto> Button 2 (Button3/) Calcola La prima cosa da fare è riempire la ListBox1 all'avvio del programma, attraverso il seguente codice: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim I As Short For I = 1 To 10 ListBox1.Items.Add(I) Next ComboBox1.SelectedIndex = 0 In questa routine viene anche selezionato il primo elemento della ComboBox, attraverso l'istruzione ComboBox1.SelectedIndex = 0. Adesso vogliamo che quando il puntatore del mouse si sposta su un elemento della ListBox1, l'etichetta sottostante, Label3,

19 visualizzi il nome dell'elemento stesso. Per fare questo usiamo il metodo IndexFromPoint e l'evento MouseMove: Private Sub ListBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseMove Dim Indice As Short = ListBox1.IndexFromPoint(e.X, e.y) If Indice >= 0 Then Label3. = "Elemento corrente: " & ListBox1.Items(Indice) End If Il metodo IndexFromPoint restituisce l'indice dell'elemento che si trova nella posizione del mouse specificata; in questo caso usiamo due proprietà dell'oggetto e, X e Y, per conoscere le coordinate del cursore. Se l'indice è valido, cioè è un numero maggiore o uguale a 0, visualizziamo il valore dell'elemento corrispondente leggendo l'oggetto Items di posizione Indice. Per aggiungere o rimuovere elementi da una o dall'altra lista il codice da usare è il seguente: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If ListBox1.SelectedIndex >= 0 Then 'Se è stato selezionato un elemento, lo aggiunge alla CheckedListBox1. CheckedListBox1.Items.Add(ListBox1.SelectedItem, True) 'Rimuove l'elemento dalla ListBox1. ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) End If Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If CheckedListBox1.SelectedIndex >= 0 Then 'Se è stato selezionato un elemento, lo rimette nella ListBox1. ListBox1.Items.Add(CheckedListBox1.SelectedItem) 'Rimuove l'elemento dalla CheckedListBox1. CheckedListBox1.Items.RemoveAt(CheckedListBox1.SelectedIndex) End If Come si vede, le due routine sono speculari. L'unica istruzione su cui spendere qualche parola è CheckedListBox1.Items.Add(ListBox1.SelectedItem, True). Il metodo Items.Add della CheckedListBox è polimorfico: se viene specificato il secondo parametro e lo si pone uguale a True, la casella di spunta corrispondente all'elemento appena inserito verrà automaticamente selezionata. Sempre a riguardo dalla CheckedListBox, notiamo che, impostando la proprietà CheckOnClick su True, la casella di spunta corrispondente all'elemento su cui si fa clic verrà automaticamente selezionata o deselezionata. L'ultima cosa che dobbiamo fare è scrivere il codice per fare in modo che, nella Label5, venga visualizzato il tipo di pagamento selezionato, utilizzando l'evento SelectedIndexChanged di cui abbiamo già parlato: Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Label5. = "Tipo di pagamento selezionato: " & ComboBox1.SelectedItem Il codice da eseguire alla pressione del pulsante Calcola, in quanto non direttamente collegato con l'esempio, è lasciato come esercizio. L'esempio che abbiamo realizzato può essere scaricato facendo clic qui. In questa Lezione abbiamo introdotto tre dei controlli più utilizzati. La prossima Lezione sarà incentrata sul menu, uno dei componenti fondamentali di un'applicazione Windows; come vedremo, la gestione dei menu in VB.NET è radicalmente diversa rispetto a quella delle versioni precedenti. Menu e Tooltip in VB.NET La gestione dei menu in Visual Basic.NET è radicalmente diversa rispetto a quella delle versioni precedenti. L'amato-odiato Editor di menu ha fatto il suo tempo: ora per inserire un menu in un'applicazione VB.NET si deve utilizzare l'oggetto MainMenu, disponibile nella casella degli strumenti standard. Aggiungendo il controllo MainMenu in una form, comparirà un'area nella parte bassa della finestra in cui verrà inserita l'icona relativa. Si tratta di una novità di VB.NET: i controlli non visibili in fase di esecuzione, ad esempio il Timer, non vengono più visualizzati nella form, ma in una zona separata, così da evitare appesantimenti inutili. Dopo aver inserito il MainMenu, sotto la barra del titolo della form apparirà la barra dei menu, come si può vedere nell'immagine a lato. Ecco un'altro cambiamento rispetto alle versioni precedenti di Visual Basic: per definire i comandi dei

20 menu ora basta scriverli all'interno del menu stesso in fase di progettazione. Ad esempio, proviamo a fare clic sulla comando Type Here (scrivi qui) nella barra dei menu e a scrivere File: questo è sufficiente per creare un menu di nome File. Appariranno ora nuove voci nella barra dei menu, tutte contrassegnate da Type Here: al posto di ognuna di esse è possibile inserire un comando di menu. Come nelle versioni precedenti di Visual Basic, per inserire una barra di separazione nel menu basta creare una nuova voce e impostare la sua etichetta su - (segno meno); in alternativa, è anche possibile fare clic con il tasto destro del mouse all'interno del menu e selezionare Insert Separator (Inserisci separatore). Per spostare un comando da una posizione ad un'altra basta trascinare l'elemento del menu nella posizione desiderata. Facendo clic su un comando, nella finestra delle Proprietà compariranno le proprietà della voce di menu. Checked consente di visualizzare un segno di spunta a sinistra del nome del menu; RadioCheck, novità di VB.NET, deve essere impostato su True se si vuole che al posto del segno di spunta venga visualizzato un radio button (può essere usato, ad esempio, per indicare la scelta corrente in un insieme di opzioni). Shortcut consente di definire una scorciatoia da tastiera per il comando; è possibile decidere se visualizzare o meno tale combinazione di tasti agendo sulla proprietà ShowShortcut. Per scrivere il codice da eseguire quando si seleziona un comando dal menu, fare doppio clic sul comando stesso: si aprirà l'editor del codice all'interno della routine che gestisce l'evento Click sulla voce di menu. Altro evento importante è Select, che viene generato quando il puntatore del mouse di sposta su una voce del menu. L'altro tipo di menu disponibile in VB.NET è il menu contestuale: nelle applicazioni per Windows esso viene visualizzato quando si fa clic con il tasto destro del mouse su di un controllo. Nelle precedenti versioni di Visual Basic, per mostrare questo tipo di menu era necessario aggiungerlo alla barra dei menu standard, quindi richiamarlo con il metodo PopupMenu ad esempio all'interno dell'evento MouseUp, in modo da intercettare la pressione del tasto destro del mouse. In VB.NET il metodo PopupMenu non esiste più: per associare un menu contestuale ad un controllo è necessario creare un oggetto di tipo ContextMenu. Anch'esso, al pari del MainMenu, una volta inserito nella form viene visualizzato nella parte bassa della finestra di progettazione; anche la fase di creazione delle voci di menu e di impostazioni delle proprietà è la medesima. Se in una form sono presenti sia un MainMenu sia uno o più ContextMenu, facendo clic sull'uno o sull'altro il corrispondente layout dei menu verrà visualizzato sotto la barra del titolo, anche se, in fase di esecuzione, la barra dei menu sarà quella impostata nel MainMenu. Dopo aver creato un menu contestuale, è necessario associarlo ad uno o più controlli. Per fare questo si deve selezionare il controllo a cui si vuole collegare il menu e impostare la sua proprietà ContextMenu sul nome del menu contestuale interessato. Fatto questo, ogni volta che si farà clic con il tasto destro del mouse sul controllo verrà visualizzato il menu contestuale; non è più necessario scrivere nemmeno una riga di codice per ottenere questo effetto. L'evento Popup del ContextMenu viene generato prima della visualizzazione del menu contestuale. Può essere utilizzato, ad esempio, nel caso di un menu associato a più controlli, per adattare i comandi in base all'oggetto su cui è stato fatto il clic. Supponiamo di avere un ContextMenu associato ai controlli Button1 e Button2 con un unico comando, MenuItem1. Consideriamo il codice seguente: Private Sub ContextMenu1_Popup(ByVal sender As Object, ByVal e As System.EventArgs) Handles ContextMenu1.Popup If ContextMenu1.SourceControl Is Button1 Then MenuItem1. = "Nascondi pulsante" ElseIf ContextMenu1.SourceControl Is Button2 Then MenuItem1. = "Esci dal programma" End If Esso fa in modo che, premendo il pulsante destro del mouse su Button1, il comando del menu contestuale sia "Nascondi pulsante", mentre, facendo clic sul Button2, diventi " Esci dal programma". Per fare questo si è usata la proprietà SourceControl dell'oggetto ContextMenu, che specifica il controllo su cui è stato eseguito il clic destro. Anche gli elementi del ContextMenu dispongono dell'evento Click che viene generato quando l'utente seleziona un comando di menu con il tasto sinistro del mouse. Passiamo ora al controllo ToolTip, utilizzato per visualizzare un breve messaggio descrittivo quando si posiziona il mouse su un oggetto per alcuni istanti. Anch'esso è una novità di Visual Basic.NET: nelle precedenti versioni di VB, infatti, per assegnare un tooltip era sufficiente impostare la proprietà ToolTip. In VB.NET, per definire un tooltip è necessario inserire prima nella form un oggetto di tipo ToolTip; anch'esso, come il MainMenu e il ContextMenu, si posiziona nella parte bassa della finestra di progettazione. Inserito il ToolTip, tra le proprietà dei controlli della form ne apparirà una nuova, Tooltip on : il messaggio specificato in questa proprietà verrà utilizzato come tooltip. La decisione di aggiungere un controllo a parte per visualizzare i tooltip è dovuta al fatto che, così facendo, è possibile impostarne alcune proprietà, come il ritardo di visualizzazione, che prima non erano disponibili. In particolare, InitialDelay consente di specificare l'intervallo di

Scuola Specializzazione Istruzione Superiore. Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti

Scuola Specializzazione Istruzione Superiore. Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti Scuola Specializzazione Istruzione Superiore Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti Michele Batocchi ITC Vittorio Emanuele II Perugia A.S. 2007/2008 Introduzione

Dettagli

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore Cicli in Visual Basic for Application Le strutture del programma che ripetono l'esecuzione di una o più istruzioni sono chiamate Cicli. Alcune strutture per i cicli sono costruite in modo da venire eseguite

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

WINDOWS - Comandi rapidi da tastiera più utilizzati.

WINDOWS - Comandi rapidi da tastiera più utilizzati. WINDOWS - Comandi rapidi da tastiera più utilizzati. La prima colonna indica il tasto da premere singolarmente e poi rilasciare. La seconda e terza colonna rappresenta la combinazione dei i tasti da premere

Dettagli

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org.

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Nuovo documento Anteprima di stampa Annulla Galleria Apri Controllo ortografico Ripristina Sorgente dati Salva Controllo

Dettagli

Form Designer Guida utente DOC-FD-UG-IT-01/01/12

Form Designer Guida utente DOC-FD-UG-IT-01/01/12 Form Designer Guida utente DOC-FD-UG-IT-01/01/12 Le informazioni contenute in questo manuale di documentazione non sono contrattuali e possono essere modificate senza preavviso. La fornitura del software

Dettagli

AMBIENTE DEV PASCAL. Dev-Pascal 1.9.2. Finestra di apertura

AMBIENTE DEV PASCAL. Dev-Pascal 1.9.2. Finestra di apertura Dev-Pascal 1.9.2 1 Dev-Pascal è un ambiente di sviluppo integrato per la programmazione in linguaggio Pascal sotto Windows prodotto dalla Bloodshed con licenza GNU e liberamente scaricabile al link http://www.bloodshed.net/dev/devpas192.exe

Dettagli

OPERAZIONI SUL FILE SYSTEM OPERAZIONI SUL FILE SYSTEM

OPERAZIONI SUL FILE SYSTEM OPERAZIONI SUL FILE SYSTEM SPOSTARE un file o una sottodirectory da una directory ad un altra COPIARE un file o una directory da una directory all altra RINOMINARE un file o una directory CANCELLARE un file o una directory CREARE

Dettagli

Lezione su Informatica di Base

Lezione su Informatica di Base Lezione su Informatica di Base Esplora Risorse, Gestione Cartelle, Alcuni tasti di scelta Rapida Domenico Capano D.C. Viterbo: Lunedì 21 Novembre 2005 Indice Una nota su questa lezione...4 Introduzione:

Dettagli

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento.

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. Excel: le funzioni Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. DEFINIZIONE: Le funzioni sono dei procedimenti

Dettagli

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email.

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email. La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net di Emanuele Mattei (emanuele.mattei[at]email.it) Introduzione In questa serie di articoli, vedremo come utilizzare

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

MINI GUIDA SINTETICA per l uso della lavagna interattiva multimediale

MINI GUIDA SINTETICA per l uso della lavagna interattiva multimediale MINI GUIDA SINTETICA per l uso della lavagna interattiva multimediale InterWrite SchoolBoard è un software per lavagna elettronica di facile utilizzo. Può essere adoperata anche da studenti diversamente

Dettagli

MEGA Process. Manuale introduttivo

MEGA Process. Manuale introduttivo MEGA Process Manuale introduttivo MEGA 2009 SP4 1ª edizione (giugno 2010) Le informazioni contenute nel presente documento possono essere modificate senza preavviso e non costituiscono in alcun modo un

Dettagli

MANUALE UTENTE DEL SOFTWARE DI GESTIONE DEGLI ART. SDVR040A/SDVR080A/SDVR160A

MANUALE UTENTE DEL SOFTWARE DI GESTIONE DEGLI ART. SDVR040A/SDVR080A/SDVR160A MANUALE UTENTE DEL SOFTWARE DI GESTIONE DEGLI ART. SDVR040A/SDVR080A/SDVR160A Leggere attentamente questo manuale prima dell utilizzo e conservarlo per consultazioni future Via Don Arrigoni, 5 24020 Rovetta

Dettagli

IMPOSTARE UNA MASCHERA CHE SI APRE AUTOMATICAMENTE

IMPOSTARE UNA MASCHERA CHE SI APRE AUTOMATICAMENTE IMPOSTARE UNA MASCHERA CHE SI APRE AUTOMATICAMENTE Access permette di specificare una maschera che deve essere visualizzata automaticamente all'apertura di un file. Vediamo come creare una maschera di

Dettagli

UNIVERSITA DEGLI STUDI DI TORINO WORD

UNIVERSITA DEGLI STUDI DI TORINO WORD WORD SOMMARIO 1. Muoversi nel testo... 1 2. Taglia, copia e incolla... 2 3. Aprire, salvare e chiudere... 3 4. Trovare e sostituire... 4 5. Visualizzare in modi diversi... 6 6. Formattare e incolonnare...

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Boot Camp Guida di installazione e configurazione

Boot Camp Guida di installazione e configurazione Boot Camp Guida di installazione e configurazione Indice 3 Introduzione 4 Panoramica dell'installazione 4 Passo 1: Verificare la presenza di aggiornamenti 4 Passo 2: Per preparare il Mac per Windows 4

Dettagli

INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02

INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02 INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02 Download Si può scaricare gratuitamente la versione per il proprio sistema operativo (Windows, MacOS, Linux) dal sito: http://www.codeblocks.org

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

FUNZIONI AVANZATE DI EXCEL

FUNZIONI AVANZATE DI EXCEL FUNZIONI AVANZATE DI EXCEL Inserire una funzione dalla barra dei menu Clicca sulla scheda "Formule" e clicca su "Fx" (Inserisci Funzione). Dalla finestra di dialogo "Inserisci Funzione" clicca sulla categoria

Dettagli

WORD (livello avanzato): Struttura di un Documento Complesso. Struttura di un Documento Complesso

WORD (livello avanzato): Struttura di un Documento Complesso. Struttura di un Documento Complesso Parte 5 Adv WORD (livello avanzato): Struttura di un Documento Complesso 1 di 30 Struttura di un Documento Complesso La realizzazione di un libro, di un documento tecnico o scientifico complesso, presenta

Dettagli

Funzioni di base. Manualino OE6. Outlook Express 6

Funzioni di base. Manualino OE6. Outlook Express 6 Manualino OE6 Microsoft Outlook Express 6 Outlook Express 6 è un programma, incluso nel browser di Microsoft Internet Explorer, che ci permette di inviare e ricevere messaggi di posta elettronica. È gratuito,

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

Database Manager Guida utente DMAN-IT-01/09/10

Database Manager Guida utente DMAN-IT-01/09/10 Database Manager Guida utente DMAN-IT-01/09/10 Le informazioni contenute in questo manuale di documentazione non sono contrattuali e possono essere modificate senza preavviso. La fornitura del software

Dettagli

P a s q u a l e t t i V e r o n i c a

P a s q u a l e t t i V e r o n i c a PHP: OOP Pasqualetti Veronica Oggetti Possiamo pensare ad un oggetto come ad un tipo di dato più complesso e personalizzato, non esistente fra i tipi tradizionali di PHP, ma creato da noi. 2 Gli oggetti

Dettagli

3. nella pagina che verrà visualizzata digitare l indirizzo e-mail che si vuole consultare e la relativa password (come da comunicazione)

3. nella pagina che verrà visualizzata digitare l indirizzo e-mail che si vuole consultare e la relativa password (come da comunicazione) CONFIGURAZIONE DELLA CASELLA DI POSTA ELETTRONICA La consultazione della casella di posta elettronica predisposta all interno del dominio patronatosias.it può essere effettuata attraverso l utilizzo dei

Dettagli

I Grafici. La creazione di un grafico

I Grafici. La creazione di un grafico I Grafici I grafici servono per illustrare meglio un concetto o per visualizzare una situazione di fatto e pertanto la scelta del tipo di grafico assume notevole importanza. Creare grafici con Excel è

Dettagli

CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA

CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA CATTURARE LO SCHERMO INTERO O LA FINESTRA ATTIVA Supponiamo di voler eseguire una istantanea del nostro desktop, quella che in gergo si chiama Screenshot (da screen, schermo, e shot, scatto fotografico).

Dettagli

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma

Dev C++ Prerequisiti. Note di utilizzo. Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma Dev C++ Note di utilizzo 1 Prerequisiti Utilizzo di Windows Effettuare il download da Internet Compilazione di un programma 2 1 Introduzione Lo scopo di queste note è quello di diffondere la conoscenza

Dettagli

Uso della Guida Informazioni sulle funzioni della Guida incorporate Uso della Guida Uso della finestra Come fare per Uso di altre funzioni di supporto

Uso della Guida Informazioni sulle funzioni della Guida incorporate Uso della Guida Uso della finestra Come fare per Uso di altre funzioni di supporto Uso della Guida Informazioni sulle funzioni della Guida incorporate Uso della Guida Uso della finestra Come fare per Uso di altre funzioni di supporto Informazioni sulle funzioni della Guida incorporate

Dettagli

Client di Posta Elettronica PECMailer

Client di Posta Elettronica PECMailer Client di Posta Elettronica PECMailer PECMailer è un semplice ma completo client di posta elettronica, ovvero un programma che consente di gestire la composizione, la trasmissione, la ricezione e l'organizzazione

Dettagli

GUIDA RAPIDA emagister-agora Edizione BASIC

GUIDA RAPIDA emagister-agora Edizione BASIC GUIDA RAPIDA emagister-agora Edizione BASIC Introduzione a emagister-agora Interfaccia di emagister-agora Configurazione dell offerta didattica Richieste d informazioni Gestione delle richieste d informazioni

Dettagli

Ultimo aggiornamento.: 18/02/2006 Pagina 1 di 25

Ultimo aggiornamento.: 18/02/2006 Pagina 1 di 25 Introduzione al programma POWERPOINT Ultimo aggiornamento.: 18/02/2006 Pagina 1 di 25 Introduzione al programma POWERPOINT 1 1 Introduzione al programma 3 2 La prima volta con Powerpoint 3 3 Visualizzazione

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

Dipartimento di Sistemi e Informatica Università degli Studi di Firenze. Dev-C++ Ing. Michele Banci 27/03/2007 1

Dipartimento di Sistemi e Informatica Università degli Studi di Firenze. Dev-C++ Ing. Michele Banci 27/03/2007 1 Dipartimento di Sistemi e Informatica Università degli Studi di Firenze Dev-C++ Ing. Michele Banci 27/03/2007 1 Utilizzare Dev-C++ Tutti i programmi che seranno realizzati richiedono progetti separati

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1 Il gestionale come l'avete sempre sognato... Pag. 1 Le funzionalità di X-Cross La sofisticata tecnologia di CrossModel, oltre a permettere di lavorare in Internet come nel proprio ufficio e ad avere una

Dettagli

Corso di Alfabetizzazione Informatica

Corso di Alfabetizzazione Informatica Corso di Alfabetizzazione Informatica Scopo di questo corso, vuole essere quello di fornire ad ognuno dei partecipanti, indipendentemente dalle loro precedenti conoscenze informatiche, l apprendimento

Dettagli

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli

Comunicazione scuola famiglia

Comunicazione scuola famiglia Manuale d'uso Comunicazione scuola famiglia INFOZETA Centro di ricerca e sviluppo di soluzioni informatiche per la scuola Copyright InfoZeta 2013. 1 Prima di iniziare l utilizzo del software raccomandiamo

Dettagli

Strumenti 3D per SMART Notebook 11.1. Manuale dell'utente

Strumenti 3D per SMART Notebook 11.1. Manuale dell'utente Strumenti 3D per SMART Notebook 11.1 Manuale dell'utente Registrazione del prodotto Se si registra il prodotto SMART, si verrà informati delle nuove funzionalità e aggiornamenti software disponibili. Registrazione

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

Nitro Reader 3 Guida per l' utente

Nitro Reader 3 Guida per l' utente Nitro Reader 3 Guida per l' utente In questa Guida per l'utente Benvenuti in Nitro Reader 3 1 Come usare questa guida 1 Trovare rapidamente le informazioni giuste 1 Per eseguire una ricerca basata su parole

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

Gestione Nuova Casella email

Gestione Nuova Casella email Gestione Nuova Casella email Per accedere alla vecchia casella questo l indirizzo web: http://62.149.157.9/ Potrà essere utile accedere alla vecchia gestione per esportare la rubrica e reimportala come

Dettagli

Boot Camp Guida all installazione e alla configurazione

Boot Camp Guida all installazione e alla configurazione Boot Camp Guida all installazione e alla configurazione Indice 4 Introduzione 5 Cosa ti occorre 6 Panoramica dell installazione 6 Passo 1: verifica la presenza di aggiornamenti. 6 Passo 2: apri Assistente

Dettagli

GUIDA ALL USO CORRETTO DI MICROSOFT OFFICE WORD 2007 PER LA REALIZZAZIONE E LA FORMATTAZIONE DI DOCUMENTI PROFESSIONALI

GUIDA ALL USO CORRETTO DI MICROSOFT OFFICE WORD 2007 PER LA REALIZZAZIONE E LA FORMATTAZIONE DI DOCUMENTI PROFESSIONALI GUIDA ALL USO CORRETTO DI MICROSOFT OFFICE WORD 2007 PER LA REALIZZAZIONE E LA FORMATTAZIONE DI DOCUMENTI PROFESSIONALI Francesca Plebani Settembre 2009 Sommario 1. INTRODUZIONE... 3 2. WORD E L ASPETTO

Dettagli

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa di Ilaria Lorenzo e Alessandra Palma Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa Code::Blocks

Dettagli

Manuale Utente. S e m p l i c e m e n t e D a t i M i g l i o r i!

Manuale Utente. S e m p l i c e m e n t e D a t i M i g l i o r i! Manuale Utente S e m p l i c e m e n t e D a t i M i g l i o r i! INDICE INDICE... 3 INTRODUZIONE... 3 Riguardo questo manuale...3 Informazioni su VOLT 3 Destinatari 3 Software Richiesto 3 Novità su Volt...3

Dettagli

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

con software libero Modulo 4 Spreadsheets (Fogli elettronici) Pag. 1

con software libero Modulo 4 Spreadsheets (Fogli elettronici) Pag. 1 con software libero Modulo 4 Spreadsheets (Fogli elettronici) Pag. 1 Indice generale GUIDA A CALC 3.5... 3 1 Utilizzo dell'applicazione... 3 1.1 LAVORARE CON IL FOGLIO ELETTRONICO...3 1.2 MIGLIORARE LA

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Per realizzare un programma in VB

Per realizzare un programma in VB Per realizzare un programma in VB E necessario eseguire nell ordine i seguenti passi: 1) Dato un problema, disegnare la tabella delle variabili 2) Determinare l algoritmo risolutivo con la pseudocodifica

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

8. L'USO DEL PROGRAMMA DI POSTA ELETTRONICA INSIEME ALLA GESTIONE PROFESSIONALE DI DOCUMENTI IN FORMATO E-MAIL

8. L'USO DEL PROGRAMMA DI POSTA ELETTRONICA INSIEME ALLA GESTIONE PROFESSIONALE DI DOCUMENTI IN FORMATO E-MAIL This project funded by Leonardo da Vinci has been carried out with the support of the European Community. The content of this project does not necessarily reflect the position of the European Community

Dettagli

I.Stat Guida utente Versione 1.7 Dicembre 2010

I.Stat Guida utente Versione 1.7 Dicembre 2010 I.Stat Guida utente Versione 1.7 Dicembre 2010 1 Sommario INTRODUZIONE 3 I concetti principali di I.Stat 4 Organizzazione dei dati 4 Ricerca 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della lingua 7 Individuazione

Dettagli

l Editor vi vi (visual editor) è stato scritto per essere utilizzabile con qualsiasi tipo di terminale.

l Editor vi vi (visual editor) è stato scritto per essere utilizzabile con qualsiasi tipo di terminale. l Editor vi Negli ambienti Unix esistono molti editor di testo diversi; tuttavia vi è l unico che siamo sicuri di trovare in qualsiasi variante di Unix. vi (visual editor) è stato scritto per essere utilizzabile

Dettagli

Non tutto, ma un po di tutto

Non tutto, ma un po di tutto ALFREDO MANGIA Non tutto, ma un po di tutto Nozioni fondamentali per conoscere e usare un foglio di calcolo. Corso di alfabetizzazione all informatica Settembre 2004 SCUOLA MEDIA GARIBALDI Genzano di Roma

Dettagli

Guida introduttiva. Installazione di Rosetta Stone

Guida introduttiva. Installazione di Rosetta Stone A Installazione di Rosetta Stone Windows: Inserire il CD-ROM dell'applicazione Rosetta Stone. Selezionare la lingua dell'interfaccia utente. 4 5 Seguire i suggerimenti per continuare l'installazione. Selezionare

Dettagli

DynDevice ECM. La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali

DynDevice ECM. La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali DynDevice ECM La Suite di applicazioni web per velocizzare, standardizzare e ottimizzare il flusso delle informazioni aziendali Presentazione DynDevice ECM Cos è DynDevice ICMS Le soluzioni di DynDevice

Dettagli

Codici sorgenti di esempio per l'invio di email da pagine WEB per gli spazi hosting ospitati presso ITESYS SRL.

Codici sorgenti di esempio per l'invio di email da pagine WEB per gli spazi hosting ospitati presso ITESYS SRL. Data: 8 Ottobre 2013 Release: 1.0-15 Feb 2013 - Release: 2.0 - Aggiunta procedura per inviare email da Windows con php Release: 2.1-20 Mar 2013 Release: 2.2-8 Ottobre 2013 - Aggiunta procedura per inviare

Dettagli

Traduzione di TeamLab in altre lingue

Traduzione di TeamLab in altre lingue Lingue disponibili TeamLab è disponibile nelle seguenti lingue nel mese di gennaio 2012: Traduzioni complete Lingue tradotte parzialmente Inglese Tedesco Francese Spagnolo Russo Lettone Italiano Cinese

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

MANUALE Gest-L VERSIONE 3.2.3

MANUALE Gest-L VERSIONE 3.2.3 MANUALE Gest-L VERSIONE 3.2.3 Installazione GEST-L 4 Versione per Mac - Download da www.system-i.it 4 Versione per Mac - Download da Mac App Store 4 Versione per Windows 4 Prima apertura del programma

Dettagli

FileMaker Pro 10. Esercitazioni

FileMaker Pro 10. Esercitazioni FileMaker Pro 10 Esercitazioni 2007-2009 FileMaker, Inc., tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker, il logo della cartella dei file, Bento

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati

Dettagli

MANUALE GESTIONE DELLE UTENZE - PORTALE ARGO (VERS. 2.1.0)

MANUALE GESTIONE DELLE UTENZE - PORTALE ARGO (VERS. 2.1.0) Indice generale PREMESSA... 2 ACCESSO... 2 GESTIONE DELLE UTENZE... 3 DATI DELLA SCUOLA... 6 UTENTI...7 LISTA UTENTI... 8 CREA NUOVO UTENTE...8 ABILITAZIONI UTENTE...9 ORARI D'ACCESSO... 11 DETTAGLIO UTENTE...

Dettagli

GFI Product Manual. Manuale per il client fax

GFI Product Manual. Manuale per il client fax GFI Product Manual Manuale per il client fax http://www.gfi.com info@gfi.com Le informazioni contenute nel presente documento sono soggette a modifiche senza preavviso. Le società, i nomi e i dati utilizzati

Dettagli

Dipartimento del Tesoro

Dipartimento del Tesoro Dipartimento del Tesoro POWER POINT AVANZATO Indice 1 PROGETTAZIONE DELL ASPETTO...3 1.2 VISUALIZZARE GLI SCHEMI...4 1.3 CONTROLLARE L ASPETTO DELLE DIAPOSITIVE CON GLI SCHEMI...5 1.4 SALVARE UN MODELLO...6

Dettagli

PCC - Pixia Centro Comunicazioni GUIDA PER L UTILIZZO

PCC - Pixia Centro Comunicazioni GUIDA PER L UTILIZZO PCC - Pixia Centro Comunicazioni GUIDA PER L UTILIZZO Informazioni generali Il programma permette l'invio di SMS, usufruendo di un servizio, a pagamento, disponibile via internet. Gli SMS possono essere

Dettagli

Testi della Guida introduttiva a cura di Martin Ley. Revisione e controllo qualità: Cristina Bachmann, Heiko Bischoff, Marion Bröer, Sabine Pfeifer,

Testi della Guida introduttiva a cura di Martin Ley. Revisione e controllo qualità: Cristina Bachmann, Heiko Bischoff, Marion Bröer, Sabine Pfeifer, Guida Introduttiva Testi della Guida introduttiva a cura di Martin Ley. Revisione e controllo qualità: Cristina Bachmann, Heiko Bischoff, Marion Bröer, Sabine Pfeifer, Heike Schilling. Data di rilascio:

Dettagli

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java] Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

StarOffice TM 7 Office Suite

StarOffice TM 7 Office Suite StarOffice TM 7 Office Suite A Sun TM ONE Software Offering Manuale di programmazione in Basic Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. 650-960-1300 Part No. 817-3918-10

Dettagli

Appunti sugli Elaboratori di Testo. Introduzione. D. Gubiani. 19 Luglio 2005

Appunti sugli Elaboratori di Testo. Introduzione. D. Gubiani. 19 Luglio 2005 Appunti sugli Elaboratori di Testo D. Gubiani Università degli Studi G.D Annunzio di Chieti-Pescara 19 Luglio 2005 1 Cos è un elaboratore di testo? 2 3 Cos è un elaboratore di testo? Cos è un elaboratore

Dettagli

TeamViewer 7 Manuale Controllo remoto

TeamViewer 7 Manuale Controllo remoto TeamViewer 7 Manuale Controllo remoto TeamViewer GmbH Kuhnbergstraße 16 D-73037 Göppingen teamviewer.com Indice 1 Informazioni su TeamViewer... 5 1.1 Informazioni sul software... 5 1.2 Informazioni sul

Dettagli

Il compilatore Dev-C++

Il compilatore Dev-C++ Il compilatore Dev-C++ A cura del dott. Marco Cesati 1 Il compilatore Dev-C++ Compilatore per Windows: http://www.bloodshed.net/devcpp.html Installazione Configurazione Utilizzazione 2 1 Requisiti di sistema

Dettagli

Corso SOL Gestione catalogo libro moderno 21-22 settembre 2009

Corso SOL Gestione catalogo libro moderno 21-22 settembre 2009 Corso SOL Gestione catalogo libro moderno 21-22 settembre 2009 Introduzione generale Autenticazione dell operatore https://sebina1.unife.it/sebinatest Al primo accesso ai servizi di Back Office, utilizzando

Dettagli

Guida all'installazione di SLPct. Manuale utente. Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it

Guida all'installazione di SLPct. Manuale utente. Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it Guida all'installazione di SLPct Manuale utente Evoluzioni Software www.evoluzionisoftware.it info@evoluzionisoftware.it Premessa Il redattore di atti giuridici esterno SLpct è stato implementato da Regione

Dettagli

Editor vi. Editor vi

Editor vi. Editor vi Editor vi vi 1 Editor vi Il vi è l editor di testo standard per UNIX, è presente in tutte le versioni base e funziona con qualsiasi terminale a caratteri Permette di visualizzare una schermata alla volta

Dettagli

IL LINGUAGGIO C++ Configurazione di Dev-C++

IL LINGUAGGIO C++ Configurazione di Dev-C++ IL LINGUAGGIO C++ Note sull'uso di DevC++ Requisiti di sistema per Dev-C++ - Sistema operativo Microsoft Windows 95, 98, Millenium Edition, NT 4, 2000 o XP - RAM: 8 Mb (consigliati almeno 32 Mb) - CPU:

Dettagli

MANUALE DOS INTRODUZIONE

MANUALE DOS INTRODUZIONE MANUALE DOS INTRODUZIONE Il DOS è il vecchio sistema operativo, che fino a qualche anno fa era il più diffuso sui PC, prima dell avvento di Windows 95 e successori. Le caratteristiche principali di questo

Dettagli

Installare e configurare Easy Peasy (Ubuntu Eee) su Asus Eee PC mini howto

Installare e configurare Easy Peasy (Ubuntu Eee) su Asus Eee PC mini howto Installare e configurare Easy Peasy (Ubuntu Eee) su Asus Eee PC mini howto Augusto Scatolini (webmaster@comunecampagnano.it) Ver. 1.0 (marzo 2009) ultimo aggiornamento aprile 2009 Easy Peasy è una distribuzione

Dettagli

MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO

MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO MATRICE DELLE FUNZIONI DI DRAGON NATURALLYSPEAKING 12 CONFRONTO TRA EDIZIONI DEL PRODOTTO Precisione del riconoscimento Velocità di riconoscimento Configurazione del sistema Correzione Regolazione della

Dettagli

INFORMATIVA FINANZIARIA

INFORMATIVA FINANZIARIA Capitolo 10 INFORMATIVA FINANZIARIA In questa sezione sono riportate le quotazioni e le informazioni relative ai titoli inseriti nella SELEZIONE PERSONALE attiva.tramite la funzione RICERCA TITOLI è possibile

Dettagli

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT Introduzione Un file batch è un file di testo di tipo ASCII che contiene una sequenza di comandi DOS. I file batch devono avere estensione.bat I comandi DOS all interno dei programmi batch sono eseguiti

Dettagli

La Valutazione Euristica

La Valutazione Euristica 1/38 E un metodo ispettivo di tipo discount effettuato da esperti di usabilità. Consiste nel valutare se una serie di principi di buona progettazione sono stati applicati correttamente. Si basa sull uso

Dettagli

Guida rapida. Cos è GeoGebra? Notizie in pillole

Guida rapida. Cos è GeoGebra? Notizie in pillole Guida rapida Cos è GeoGebra? Un pacchetto completo di software di matematica dinamica Dedicato all apprendimento e all insegnamento a qualsiasi livello scolastico Riunisce geometria, algebra, tabelle,

Dettagli

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1 Tutorial Configuration Managment Configurare il servizio EC2 su AWS Pagina 1 Sommario 1. INTRODUZIONE... 3 2. PROGRAMMI NECESSARI... 4 3. PANNELLO DI CONTROLLO... 5 4. CONFIGURARE E LANCIARE UN ISTANZA...

Dettagli

Che Cos'e'? Introduzione

Che Cos'e'? Introduzione Level 3 Che Cos'e'? Introduzione Un oggetto casuale e' disegnato sulla lavagna in modo distorto. Devi indovinare che cos'e' facendo click sull'immagine corretta sotto la lavagna. Piu' veloce sarai piu'

Dettagli

Laboratorio Database. Docente Prof. Giuseppe Landolfi

Laboratorio Database. Docente Prof. Giuseppe Landolfi Laboratorio Database Docente Prof. Giuseppe Landolfi Manuale Laboratorio Database Scritto dal Prof.Giuseppe Landolfi per S.M.S Pietramelara Access 2000 Introduzione Che cos'è un Database Il modo migliore

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Guida alla WebMail Horde

Guida alla WebMail Horde Guida alla WebMail Horde La funzione principale di un sistema Webmail è quella di gestire la propria posta elettronica senza dover utilizzare un programma client installato sul computer. Il vantaggio è

Dettagli

Guida pratica di base

Guida pratica di base Adolfo Catelli Guida pratica di base Windows XP Professional Dicembre 2008 Sommario Accedere a Windows XP 4 Avviare Windows XP 4 Uscire da Windows XP 5 L interfaccia utente di Windows XP 6 Il desktop di

Dettagli