Visual basic base Lezione 13. Ancora su ListBox e cicli

Documenti analoghi
Visual basic base Lezione 10. Le istruzioni condizionali

Visual basic base Lezione 11. Le istruzioni condizionali: un esempio pratico

Visual basic base Lezione 03. Gli eventi

Excel VBA Lezione 17. Generare numeri casuali

È giunto il momento di imparare a rappresentare visivamente i nostri dati: un buon grafico alle volte è più eloquente di pagine e pagine di dati.

MINIMANUALE VBA PER CREARE MACRO NEI FOGLI EXCEL

Excel 2007 avanzato Lezione 08

Algoritmo per l ordinamento di un array

Gestioni di messaggi di posta elettronica tramite regole*

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA Principali Comandi

Esercitazione. Excel: le macro. C.1 Registrazione di macro

4. I moduli in Access 2000/2003

Office 2007 Lezione 10. Confronto fra versioni

Il software Epi Info

Inoltrare un messaggio.

MODULO 4: LE STRUTTURE ITERATIVE: FOR, WHILE E DO LOOP UNTIL

Automatizzare le attività con le macro di Visual Basic

Usare i forum. Il forum: la struttura del forum Rispondere a un messaggio e aggiungere un nuovo argomento di discussione Sottoscrivere un forum

Marco Canu Excel Advanced: Note Operative Tabelle Pivot Excel 2013 Sella & Mosca Agg. 06/05/2017

La ricerca dicotomica

Insert > Object > Chart

Avviate Specifi dall icona presente sul vostro Desktop.

Guida al primo utilizzo di EasyArchiviazione INTERFACCIA INIZIALE

14Ex-Cap11.qxd :20 Pagina Le macro

Scorciatoie. Mike McBride Jost Schenck Traduzione del documento: Samuele Kaplun Traduzione e revisione del documento: Luigi Toscano

Portale di gestione Version 7.5

Grafici. 1 Generazione di grafici a partire da un foglio elettronico

Programmazione con il linguaggio LibreOffice Basic

28/02/2014 Copyright V. Moriggia

Modulo 3 DATI E OPERATORI. 1. Assegnare i dati da tastiera 2. Variabili e tipi di dati 3. Le stringhe 4. Un po di logica

Microsoft Excel VI parte: Frequenze & Grafici

Come creare una pianificazione che genera una spedizione in Contactsend

CORSO DI PROGRAMMAZIONE

La stampa unione in Word 2007

Guida introduttiva. Introduzione a Impress Presentazioni con OpenOffice.org

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Come installare un nuovo account di posta elettronica in Outlook 2010

Modelli in Outlook XP

Modifica Pagina Web. Pulsante LogOut: cliccare per uscire dall'ambiente di amministrazione

3. Le routine evento in Access 2000/2003

Gestione posta del Distretto 2060

OPERAZIONI PER INSIEMI DI IMPIANTI

Access 2007 Colonna di ricerca

guida dell'utente modulo: [ idocmail ] LA GESTIONE DEI FILTRI e delle REGOLE in idocmail

Introduzione a Visual Basic Lezione 2 Cicli e anomalie

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto

Sesta parte: Come creare una lista di distribuzione e come gestirla dalla rubrica.

Installare Norton Ghost 12 (Attenzione su Windows Vista funziona salvo alcune restrizioni) Inserire il CD ROM del programma nel lettore

Applicazioni grafiche

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Word Formattazione del testo. Samuele Mazzolini

Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli. Formule iterative

Tutorial Calcolatrice

Microsoft Outlook Di Nunziante Esposito. `*************` Quinta parte: Come gestire la rubrica (contatti). `***********`

Protezione dei documenti di Microsoft Office 2007 per utenti e aziende

Preparati per il compito in classe Modulo 5

Configurazione degli Avvisi di Sistema. Mike McBride Traduzione del documento: Samuele Kaplun Traduzione e revisione del documento: Luigi Toscano

Grafica foto e internet con Macromedia Fireworks 8

Viene richiesto di MIN CARD(S,E) = 1 UPDATE DELETE MAX CARD(S,E) = 3 INSERT UPDATE

VISUAL BASIC FOR APPLICATION

Riunioni virtuali con Windows Vista

Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori

Scritto da Domenica 08 Agosto :43 - Ultimo aggiornamento Mercoledì 21 Marzo :55

Icone. Mike McBride Jost Schenck Anne-Marie Mahfouf Traduzione italiana: Pino Toscano

Manuale di Nero DriveSpeed

Avviate Specifi dall icona presente sul vostro Desktop.

Elenchi numerati. Il procedimento per gli elenchi numerati è simile: o l icona o la finestra del menu formato

LabVIEW (Laboratory Virtual Instrument Engineering Workbench)

Esercizi per il corso di Architettura dei Calcolatori. Anno accademico 2008/09. Si prevede l utilizzo dell emulatore Eniac ( presentato a lezione )

Manuale di Kanagram. Danny Allen Traduzione italiana: Pino Toscano

INDICE. 1. Procedura d esame. 2. Tipi di domande. Inizio esame Ambiente d esame Fine esame. Check box Option box Collegamenti Ordinamenti Simulazioni

Configurazione Posta Elettronica istituzionale con

Avviate Specifi dall icona presente sul vostro Desktop.

Lettura da tastiera e scrittura su monitor

9In questa sezione. Ordinare e filtrare i dati. Dopo aver aggiunto dati ai fogli di lavoro, potresti voler

Formattare il testo con gli stili

CORSO DI FORMAZIONE DOCENTI DELLE SCUOLE PUBBLICHE A GESTIONE PRIVATA ECDL, LA PATENTE EUROPEA PER L USO DEL COMPUTER GUIDA SINTETICA

Documentazione di Powerful Form Generator

Fortran in pillole : prima parte

OpenOffice Impress. Lezione 2. Tips & Tricks

Lavorare col programma di scrittura Blocco Note

Documenti, Fogli e Presentazioni Google: Con divisione e collaborazione

EXCEL: FORMATTAZIONE E FORMULE

Manuale Stampe Registro elettronico SOGI

Fondamenti di Informatica

Letture contatori. Selezionare dal menù Caricamenti la voce Letture Contatori

Opzioni avanzate. Stampa di pagine di separazione. Stampante laser a colori Phaser 7750

SEE Electrical Expert: FAQ COME MODIFICARE I DATI ALL INTERNO DEL CARTIGLIO DEL MODELLO

Excel & VBA. Excel e Visual Basic for Application

Utilizzo delle Maschere in Microsoft Access

Creare maschere personalizzate con controlli e macro

CREARE UN GRAFICO CON EXCEL 2007

ARCHITETTURA FISICA DEL SISTEMA

Guida alla configurazione di Microsoft Outlook 2013 o 2016

Aprire il programma Word. Salvare nella cartella creata

Wi-Fi Unina - Procedura guidata per Windows 7

GUIDA COMPILAZIONE MODELLI MS WORD

Wi-Fi Unina - Procedura guidata per Windows 7

Il blog di Emanuele Mattei in ambito Database

Transcript:

Ancora su ListBox e Cicli Ancora su ListBox e cicli Oggi torniamo sulle ListBox e i cicli. Per prima cosa vogliamo mostrare come gestire le ListBox in cui vogliamo permettere una selezione multipla. Per prima cosa, lavorando con il progetto di ieri o una sua copia, selezionate la ListBox e, nella relativa finestra delle proprietà, identificate la proprietà SelectionMode (Figura 1). Figura 1 Per impostazione predefinita il valore di questa proprietà è One. In questo caso è permessa la selezione di un solo elemento. Altri valori possibili sono: None: non è possibile nessuna sezione MultiSimple e MultiExtended permettono entrambi la selezione di più valori, ma le modalità di selezione sono diverse o MultiSimple basta fare clic sui singoli elementi da selezionare. Per deselezionare un elemento selezionato, basta fare nuovamente clic su di esso. o MultiExtended per selezionare i diversi elementi occorre tenere premuto CTRL. Alessandra Salvaggio - Merlin Wizard DMC 2010 Tutti i diritti riservati 1

Scegliete uno dei valori che permettono la selezione multipla (MultiSimple o MultiExtended). Fatto questo dobbiamo correggere il codice che mostra la selezione effettuata. La proprietà SelectedItem non è più sufficiente, infatti memorizza solo l'ultimo valore selezionato. Piuttosto dobbiamo ricorrere al metodo GetSelected. Se passiamo come argomento a questo metodo un numero che indica la posizione di un elemento nella ListBox, ci viene restituito True se l'elemento è stato selezionato, altrimenti False. Correggete, dunque, la routine che gestisce il clic sul pulsante come segue Private Sub cmdmostragustiscelti_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles cmdmostragustiscelti.click Dim strgustiscelti As String Dim intcounter As Integer strgustiscelti = "" For intcounter = 0 To lstgusti.items.count - 1 If lstgusti.getselected(intcounter) Then strgustiscelti = strgustiscelti & vbcrlf & lstgusti.items(intcounter) Next MsgBox("Hai scelto un gelato al gusto " & strgustiscelti) End Sub Per prima cosa abbiamo dichiarato due variabili, una di testo (che ci servirà per memorizzare i valori selezionati, l'altra da usare come indice per il ciclo For che segue). In questo caso abbiamo usato un ciclo diverso da quello visto ieri. Questa volta si tratta di For Next Questo tipo di ciclo viene eseguito fin che è valida la condizione posta appena dopo la parola For. In questo caso la condizione viene eseguita da quando la variabile intcounter vale zero fino a quando assume il valore lstgusti.items.count 1. La proprietà Count restituisce il numero degli elementi contenuti in una ListBox. Occorre sottrarre una unità perché la variabile parte da zero e non da 1. Come fa la variabile intcount a raggiungere il valore lstgusti.items.count 1? La variabile usata come indice del ciclo viene automaticamente incrementata di una unità ad ogni ciclo (Next). In questo modo possiamo andare a controllare, per tutti i valori della listbox se sono selezionati. Di questo controllo si occupa l'istruzione condizionale (If lstgusti.getselected(intcounter)). In pratica, ad ogni ciclo intcounter ha un valore diverso (sempre incrementato di una unità) quindi possiamo controllare uno per uno i valori della lista e vedere se sono selezionati. Se sono selezionati (cioè si verifica la condizione), il testo del valore selezionato Alessandra Salvaggio - Merlin Wizard DMC 2010 Tutti i diritti riservati 2

(lstgusti.items(intcounter)) viene concatenato al valore della proprietà strgustiscelti preceduto da un ritorno a capo. Alla fine del ciclo tutti i gusti selezionati sono inseriti nella proprietà strgustiscelti preceduti da un ritorno a capo. Poi il valore della proprietà strgustiscelti viene mostrato attraverso una finestra MsgBox (Figura 2). Figura 2 Se volessimo anche contare i gusti selezionati, basterebbe creare una variabile in cui memorizzare il numero dei gusto selezionati e incrementarla ogni volta che si trova un gusto selezionato, così Private Sub cmdmostragustiscelti_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles cmdmostragustiscelti.click Dim strgustiscelti As String Dim intcounter As Integer Dim intgustiselezionati As Integer strgustiscelti = "" For intcounter = 0 To lstgusti.items.count - 1 If lstgusti.getselected(intcounter) Then strgustiscelti = strgustiscelti & vbcrlf & lstgusti.items(intcounter) intgustiselezionati = intgustiselezionati + 1 Next MsgBox("Hai scelto un gelato con " & intgustiselezionati & " gusti: " _ & strgustiscelti) End Sub Immaginiamo adesso di volere mettere un limite al numero di gusti che si possono selezionare. Alessandra Salvaggio - Merlin Wizard DMC 2010 Tutti i diritti riservati 3

Questo limite verrà stabilito in base alla option Button che viene selezionata (Figura 3). Ne metteremo tre (optpiccolo, optmedio e optgrande). A seconda della casella selezionata, i gusti possibili saranno 2, 3 o 4. Figura 3 Una volta che avete modificato il form, occorrerà modificare il codice del pulsante cmdmostragustiscelti come segue Private Sub cmdmostragustiscelti_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles cmdmostragustiscelti.click Dim intmaxgustipossibili As Integer Dim strtiposcelto As String Dim strgustiscelti As String Dim intcounter As Integer Dim intgustiselezionati As Integer strgustiscelti = "" strtiposcelto = "" If optpiccolo.checked = True Then intmaxgustipossibili = 2 strtiposcelto = "Piccolo" ElseIf optmedio.checked = True Then intmaxgustipossibili = 3 strtiposcelto = "Medio" ElseIf optgrande.checked = True Then intmaxgustipossibili = 4 strtiposcelto = "Grande" For intcounter = 0 To lstgusti.items.count - 1 If lstgusti.getselected(intcounter) Then strgustiscelti = strgustiscelti & vbcrlf & lstgusti.items(intcounter) intgustiselezionati = intgustiselezionati + 1 Next Alessandra Salvaggio - Merlin Wizard DMC 2010 Tutti i diritti riservati 4

If intgustiselezionati > intmaxgustipossibili Then MsgBox("hai scelto troppi gusti" & vbcrlf & "Con il tipo " & _ strtiposcelto & " puoi scegliere al massimo " & _ intmaxgustipossibili & " gusti") Else MsgBox("Hai scelto un gelato con " & intgustiselezionati & " gusti: " & _ strgustiscelti) End Sub Innanzi tutto, abbiamo creato altre due variabili Dim intmaxgustipossibili As Integer Dim strtiposcelto As String che utilizzeremo per memorizzare il numero massimo di gusti possibili e il tipo di gelato scelto(piccolo, Medio o Grande). Assegniamo un valore a queste variabili con una istruzione if che va a verificare la proprietà Checked delle varie optionbutton. Se questa proprietà valore True, infatti, significa che la proprietà è selezionata. Alla fine del ciclo For, che non abbiamo cambiato rispetto a prima, con una nuova istruzione If controlliamo se i numero dei gusti selezionati è superiore al numero dei gusti consentiti. In questo caso mostriamo un messaggio che avvisa l'utente (Figura 4). Figura 4 In caso contrario, mostriamo il solito messaggio che elenca i gusti selezionati. Il codice funziona abbastanza, ma dobbiamo sistemare alcune cose. Innanzi tutto se l'utente non seleziona nessuno dei tipi di gelato (cioè non fa clic su nessun optionbuttan), il numero dei gusti possibili è 0 e dunque i gusti scelti sono comunque sempre troppi. Alessandra Salvaggio - Merlin Wizard DMC 2010 Tutti i diritti riservati 5

Non c'è nemmeno un controllo sul fatto che l'utente scelga effettivamente dei gusti. Un altro problema è costituito dal fatto che, se viene mostrato il messaggio che indica che si sono scelti troppi gusti e l'utente fa clic sulla MsgBox, questa si chiude, ma i gusti selezionati rimangono selezionati. Forse sarebbe meglio deselezionarli in modo che l'utente possa ricominciare da capo la sua selezione. Di tutto questo ci occuperemo domani. Alessandra Salvaggio - Merlin Wizard DMC 2010 Tutti i diritti riservati 6