"
Crearsi una Agenda Appuntamenti: seconda parte. - dal 04/09/04 pagina vista: volte Attenzione: ricordo la necessità di scaricare l'.ocx necessario al MonthView (vedi articolo "parte prima"). Abbiamo visto nella prima parte, la struttura delle istruzioni e loro posizionamento sfruttando opportunamente gli eventi:
La nostra Agenda però non è completa: manca infatti la possibilità di cancellare un appuntamento già registrato. In questa seconda parte ci occuperemo di come aggiungere le opportune modifiche per completare l'opera. Quando selezioniamo una data nel MonthView, se vengono trovati appuntamenti registrati, si popolano le due ListBox. Solo in questo modo vedremo tutti gli apppuntamenti presenti per quella data, ed è appunto selezionando l 'orario corrispondente all'appuntamento che vogliamo eliminare, che potremo agire, eliminandola, sulla riga che contiene la data, l'orario, e la descrizione dell'appuntamento scelto. Per questo passaggio possiamo usare due sistemi basati entrambi su un Click sull'orario da eliminare, presente nella ListBox1: usare una variabile dimensionata come tipo di dati "CDate", che ci serva per la ricerca dei dati correlati alla data e all'orario sul foglio di lavoro, oppure usare una TextBox che, al Click sull'orario da eliminare, si renda uguale all'orario stesso. Questa TextBox poi la renderemo invisibile in esecuzione, impostando la sua proprietà Visible a False. Quindi l'istruzione sarà:
Abbiamo poi bisogno per la nostra modifica, di un secondo CommandButton che ci consenta di rintracciare, leggendo la data che sarà nella TextBox1 e l'orario che sarà nella TextBox4, la riga che corrisponde a questi due valori, e la cancelli. Dobbiamo usare questa procedura perchè non è possibile risalire alla riga da cancellare, leggendo il numero indice corrispondente all'orario selezionato nella ListBox. La ListBox la carichiamo sfruttando AddItem, e il numero indice dei dati nella lista non corrisponderà mai al numero indice riga del foglio, riga dal quale un valore è stato caricato. Dovremo quindi ripetere un ciclo di ricerca, che è del tutto simile al ciclo utilizzato quando selezioniamo un giorno nel MonthView. Dovremo poi ripetre un aggiornamento dei valori nelle ListBox per eliminare anche qui l'orario scelto, e dovremo quindi rimuovere tutti i dati presenti per svolgere un nuovo ciclo di AddItem. E qui impariamo una tecnica diversa per sfruttare istruzioni ripetitive: quando all'interno di routines troviamo blocchi di istruzioni che si ripetono anche in altre routines, conviene creare delle macro composte solo dalle istruzioni che si ripetono, e all'interno delle routines richiamare il nome delle macro anzichè riscrivere gli stessi blocchi di istruzioni. Vediamo quindi quali sono questi blocchi e come li useremo:
sostituiremo quindi tutto questo blocco di istruzioni nelle due routine su citate, chiamando semplicemente il nome di questa macro sopra (poi vediamo come).
Tutte queste macro le inseriremo nello stesso modulo UserForm, senza necessità di creare un modulo standard. Ora vediamo come cambiano le routines rispetto agli esempi riportati nella prima parte:
Le altre routine non pertinenti richiami alle macro restano invariate. Ora vediamo la routine associata al Click del CommandButton2, quello che serve per elininare un appuntamento. La routine inizia con due controlli: se si preme il pulsante e non è selezionanto il giorno (textbox1) o l'orario (textbox4), si avvisa col relativo messaggio e si esce dalla routine. Una volta che le tue texbox contengono dati, li si assegna a due variabili (data e ora) dichiarandi il "tipo di dati" (CDate). Si prende con la variabile "riga" il numero di righe (di dati, quindi) presenti nella colonna A. Poi si inizia un ciclo che cerchi in "zona" la data uguale alla variabile "data" e nella cella a sinistra (Offset(0, 1)) l'orario "ora". Trovata la coppia di valori, si pone una domanda per confermare la cancellazione dell'appuntamento. In caso si confermi, si elimina l'intera riga, poi si richiamano de due macro "Rimuovi" (che pulisce anche le due ListBox) e "CaricaDati" (che ripopola le due ListBox). Poi si pulisce la textbox4.
L'immagine della Form con la modifica del CommandButton2 (Cancella Appuntamento) nel momento in cui si è premuto per cancellare un appuntamento:
File consultabile e scaricabile : AppuntamentiD.zip 23 Kb
Buon lavoro. prelevato sul sito www.ennius.altervista.org |