mercoledì 23 luglio 2008

FT buone vacanze


Eccomi qua, questi sono i fuori tema, che adoro scrivere :-)))) e già, è arrivato il magico momento, quello di prepare la borsa (quella che usavo per giocare a calcio :-))) ) ed immegermi nelle meritate vacanze.


Tempo qualche giorno, di sistemare il tutto e via, si parte per il mare Calabrese, non vedo l'ora di buttarmi in acqua, dopo l'afa ed il caldo romano, tra computer, spostamenti stressanti ed altro, è arrivato il momento di staccare la spina.


Già, per un pò di tempo, fuori dalla tecnologia, niente pc, cellulari, televisori, dvd ed altro, a solo contatto con la natura. Be veramente qualcosa di tecnologico mi porta, cosa? ma la mia digitale, per importale, bei momenti (almeno spero ;-) ).


Oggi come oggi, sento fortemente il desiderio, di starmene al mare, disteso sulla sabbia, nuotare in mezzo al mare, la corsa mattutina, le abbuffate di cibo a base di pesce, dolci, ed il vedere il mare sorseggiando il chinotto.


Costume e telo sono già pronti, manca ciambella, racchettoni e materassino, e via...


La mia attività di blogger, informatore ;-)) riprenderà a settembre, con nuovi articoli, trucchi, esempi di codice, recensioni e notizie, quindi ... arriverdi a settembre e buone vacanze a tutti.


E come una vecchia canzone .... mare mare ma che voglia di arrivare (anche se io dicevo un altra parola :-))) ) oppure tutti al mare a mostra le ... :-)))


Divertitevi e sopratutto godetevi il piacere della vita, che la sua bellezza sta anche nel vedere un una barca a vela all'orizzonte ;-).




martedì 22 luglio 2008

Recensione libro: Visual Basic 2008 Spiegato a mia nonna




Scheda del libro:




























Autore:
DE GHETTO MARIO
Prezzo:Euro 39,00
Caratteristiche
576 pag - 15x21 bn
ISBN

9788882336721
anno di edizione2008
numero dell'edizione1
Argomento:Informatica
Collanadigital lifestyle pro


In occasione dell'uscita del nuovo ambiente di sviluppo Microsoft Visual Studio 2008 la casa editrice FAG http://www.fag.it/ha pubblicato quasi in contemporanea all'uscita di questo software, un manuale riguardante l'utilizzo del linguaggio di programmazione Visual Basic 2008. Il libro a differenze di molti altri manuali riguardante l'argomento informatica, della stessa casa editrice, presenta alcune caratteristiche insolite, come lo stile dei caratteri ed il modo di rivolgersi al lettore con un tono più simpatico ed amichevole, a differenza di molti altri manuali tecnici. L'autore del libro Mario De Ghetto, da diversi anni scrivere articoli e libri, inoltre partecipa attivamente alla comunità italiana file:///C:/Documents%20and%20Settings/Emanuele%20Mattei/Desktop/Per%20altri%20siti/Recensione%20libro%20programmare%20Visual%20BAsic%202008%20spiegato%20a%20nonna/www.visual-basic.itla più grande comunità nonchè la prima comunità italiana riguardante la programmazione Visual Basic. Il suo blog http://deghetto.wordpress.com/ è in continuo aggiornamento, dove si trovano trucchi e suggerimenti sulla programmazione .Net. Nel libro non è incluso nessun cd-Rom o Dvd, i sorgenti del libro si possono scaricare dal seguente sito http://www.fag.it/booksite/672-1.htm


Ma vediamo in dettaglio i vari capitoli che compongono questo libro.


Il primo capitolo, è un introduzione alla programmazione, il lettore in questo capitolo comprende il significato della programmazione, un capitolo molto utile a coloro che non hanno mai programmato e che si stanno avvicinando per la prima volta.


Nel secondo capitolo, si passa alla tecnologia .Net, in questo capitolo, viene illustrata l'architettura della tecnologia .Net, un argomento molto importante, che è la base della programmazione .Net e di Visual Basic 2008. Nel capitolo viene illustrato l'utilizzo e le funzionalità del framework, informazioni basilari sui linguaggi e sull'ambiente di sviluppo.


Con il terzo capitolo si passa all'ambiente di sviluppo, ossia a Visual Studio 2008, in questo capitolo, si vedranno le varie voci di menu, le varie finestre messe a disposizione dal nuovo IDE, la finestra per la creazione di un nuovo progetto, alcune voci del menu modifica, la finestra visualizzatore oggetti, alcune proprietà dei vari controlli, alcune funzionalità messi a disposizione dal designer di Visual studio ed altro ancora. In questo capitolo, vedremo il primo esempio di codice e la relativa compilazione.


Il quarto capitolo, introduce il lettore alla programmazione vera e propria, infatti in questo capitolo, ci si addentra al linguaggio di programmazione Visual Basic 2008. Il capitolo pone le basi per iniziare a programmare, viene spiegato l'utilizzo dei tipi di dati, la creazione delle variabili in diversi tipi. La visibilità dei dati, la nomenclatura delle variabili, ossia il nome da assegnargli, gli operatori di assegnazione e matematici, gli operatori su stringa, gli operatori da utilizzare nelle condizioni logiche. Il capitolo inoltre illustra anche la conversione dei tipi di dato, in modo da convertire un dato da un tipo ad un altro.


Il capitolo fornisce la base, per iniziare a scrivere i primi programmi.


Il capitolo successivo, ossia il quinto è tutto dedicato alle matrici, argomento molto importante. Nel capitolo dopo aver illustro la creazione di matrici, con diversi tipi di dato, illustra anche alcune tecniche sul loro utilizzo, in particolare nei vari cicli. Continuando nel capitolo, vengono illustrati anche alcuni metodi da utilizzare con le matrici, per esempio il metodo sort della classe array, che permette l'ordinamento degli elementi ed altre tecniche di ordinamento. Altri metodi quali rank, getlength, getlowerboud e getupperbound, exists, find, findlast, findall, copy, e setvalue, tutti metodi che possono tornare utile nell'utilizzo delle matrici. I vari esempi di codice, aiutano il lettore a comprendere il capitolo.


Con il sesto capitolo, si passa alla sintassi del linguaggio, in questo capitolo, verranno illustrati i fondamenti del linguaggio Visual Basic. Dopo un introduzione al linguaggio si passa alla spiegazione dei commenti, spazio dei nomi, l'autore illustra l'utilizzo dei moduli, una particolarità di questo linguaggio. Continuando in questo capitolo, illustra in modo molto generico le classi, le proprietà, le funzioni, e sub, argomenti che verranno approfonditi nel capitolo successivo. Dopo questo breve accenno, illustra le istruzioni condizionali, terminata questa parte vengono illustrati i vari cicli.


L'argomento è affrontato molto bene, illustrando le varie tipologie di cicli quali for, do loop, do while, do until loop, do loop while, while end while, for each, la clausola continue nei cicli. Nella parte conclusiva del capitolo viene illustrato la parola chiave end e stop.


Terminata la parte dedicata al linguaggio, nel capitolo settimo, si passa alla programmazione ad oggetti, dopo un introduzione alla programmazione orientata agli oggetti, viene illustrato la creazione di una classe. Continuando in questo capitolo, viene illustrato come creare un costruttore nella classe. Il capitolo è molto ampio, affrontando in maniera esauriente la creazione di classi, altri argomenti trattati nel capitolo la parte relativa ai distruttori, la creazione di classi statici, la creazione di metodi condivisi, l'utilizzo della tecnica di overloading dei metodi, ossia la creazione di metodi con lo stesso nome, ma con argomenti diversi, le proprietà, l'ereditarietà, l'utilizzo della parola chiave overrides, interfacce e tanto altro ancora. Insomma un capitolo che aiuterà il lettore, a comprendere una parte molto difficile della programmazione con il linguaggio Visual Basic.


Con il capitolo ottavo, viene illustrato l'utilizzo dell'ambiente di sviluppo, le varie finestre che ci possono tornare utile, come la finestra delle proprietà, il posizionamento dei controlli, le varie voci dei menu.


Inoltre a livello di programmazione, si vedrà come rilevare le dimensioni dello schermo, utilizzare l'oggetto me, per la gestione della form, aggiunta di risorse, le fom di tipo mdi, i nuovi progetti che si possono fare con Visual Studio 2008, quelli relativi a WPF.


Il nono capitolo, è molto interessante, perchè illustra i vari controlli standard che possiamo utilizzare nelle nostre windows application. Le prime pagine del capitolo, guidano il lettore ad informazioni generiche sui controlli, come alcune proprietà comuni, la casella degli strumenti, come gestire l'allineamento dei controlli, grazie all'aiuto di alcune funzionalità messi a disposizione dall'ambiente di sviluppo.


Continuando questa parte, vengono illustrati gli strumenti e le funzionalità che offre Visual Studio 2008, nell'aiutare il programmatore nel posizionamento dei controlli e nella personalizzazione delle form.


Terminata la parte relativa alla gestione dei controlli su una form, vengono illustrati i vari controlli, come il controllo checkedlistbox, in cui si trovano esempi di codice sul suo utilizzo, il controllo combobox, il controllo per la gestione delle date ossia il DataTimePicker, il controllo label, linklabel, listbox e tanti altri controlli. Alcuni controlli sono illustrati con esempi di codice, per mostrare al lettore il suo utilizzo, mentre altri controlli, viene data solo una spiegazione, illustrando le proprietà e metodi più utilizzate per quel controllo. La parte conclusiva del capitolo, fornisce una breve spiegazione sui controlli Windows Presentation Foundation (WPF).


Il decimo capitolo, riguarda le finestre di dialogo, menu ed altre classi interessanti che possiamo utilizzare nelle nostre applicazioni. Viene illustrato l'utilizzo della classe openFileDialog, una classe del framework, per la gestione della finestra di dialogo per i file. Di questa classe, viene illustrata il suo utilizzo e le proprietà e metodi che possiamo utilizzare. Dopo aver visto questa classe, l'autore del libro, prosegue con un altra classe, quella relativa alla finestra di dialogo per il salvataggio dei file, ossia la classe SaveFileDialog. Anche in questo caso, viene illustrato un esempio di codice e le varie proprietà e metodi che si possono utilizzare. Prosegue il capitolo, con la classe FolderBrowserDialog, una classe per la gestione delle cartelle. Le successive classi, riguardano altre finestre, quali la finestra di dialog per la gestione dei caratteri, ossia la classe fontdialog, quella relativa ai colori (ColorDialog) quella relativa alla stampa (pagesetupDialog) , all'anteprima di stampa (printPreviewDialog) , e le classi relativa alla stampa di un determinato testo. Terminata la parte relativa alle finestre di dialogo e stampe, si passa ai menu, illustrando le funzionalità della classe menustrip e statusstrip.


L'undicesimo capitolo, riguarda una parte molto importante per la programmazione. In questo capitolo, il lettore viene guidato, nella gestione degli errori, oltre agli strumenti messi a disposizione dall'ambiente di sviluppo, quale l'opzioni di correzione dell'errore, la descrizione dell'errore, in fase di scrittura, anche il gestore degli errori quale il try cath.


Nelle prime pagine del capitolo, vengono forniti informazioni sugli errori, e come l'ambiente di sviluppo Visual Studio 2008, ci può aiutare durante la fase di scrittura nel codice, continuando nel capitolo, si passa al gestore degli errori, utilizzando le parole chiavi Try, catch e finally. Continuando con le parole chiavi del VB.Net, viene descritta un altra parola chiave, quale il throw, il quale ci permette di sollevare un eccezione. Terminata la parte relativa al codice, l'autore del libro, illustra anche alcune tecniche e strumenti per effettuare il debug, concludendo il capitolo su questo argomento.


Nel capitolo successivo, si passa alla gestione delle stringe, ossia del testo. nel capitolo sono illustrati alcuni metodi della classe string, da utilizzare per gestire il testo. Metodi quali equals, Compare, replace, StartsWith, endswith, tolower, toupper, trimend, trimstart e trim, isnullorempy, la proprietà lenght ed altro ancora.


Inoltre, nella parte conclusiva del capitolo, viene illustrato come scrivere e leggere file di testo.


Il capitolo tredicesimo, viene illustrata la classe My, una classe già presente dalla versione del framework 2.0. Vedremo l'utilizzo di questa classe, per la gestione dell'audio, della clipboard, per la gestione dei form tramite openforms, e tante altre funzionalità, messa a disposizione da questa classe.


Il capitolo conclusivo, ossia il quattordicesimo, riguarda una nuova tecnologia, introdotta con il framework 3.5. In particolare, nel capitolo vengono fornite le basi, della tecnologia Linq. L'utilizzo di linq in vari situazioni anche nella gestione dei file xml.


L'appendice A, riguarda l'installazione dell'ambiente di sviluppo Visual Studio 2008, il capitolo ha un vasto numero di immagini, per far comprendere in modo veloce e piacevole, l'installazione del software.


Oltre all'installazione di Visual Studio 2008 professional, anche per la versione express e per la guida MSDN.


Con l'appendice B e C, vengono riportate le tabelle relative ai tipi di dati.


Mentre con l'appendice D, una tabella riepilogativa, relativa ai caratteri segnaposto per la proprietà mask di un controllo maskedtextbox.


Di seguito si riportano i titoli dei capitoli


1) Perchè devi conoscere la programmazione


2) Caratteristiche e novità


3) Ambiente di Sviluppo


4) Tipi di dati e operatori


5) Matrici


6) Il linguaggio


7) Pronti al salto? oop


8) La programmazione visuale


9) Chi controlla i controlli?


10) Dialoghi, menu e altre meraviglie


11) Errare humanum est


12) Allacciamoci le stringhe!


13) My dire My


14) Linq


Appendice A


Appendice B


Appendice C


Appendice D



Conclusioni:
Un manuale molto interessante ed utile, per coloro che non hanno mai programmato, e che si stanno avvicinando a questo nuovo mondo. Inoltre un valido strumento, per coloro che sono interessati a migrare dal linguaggio Visual Basic 6 al nuovo linguaggio Visual Basic 2008. Il libro è orientato alla creazione di applicazioni per windows, quindi la programmazione web, o di altra tipologia, non viene riportata, un libro base da utilizzare per acquisire la conoscenza della programmazione con il linguaggio Visual Basic 2008, molto indicato per coloro che sono a digiuno di questo lato dell'informatica.

lunedì 21 luglio 2008

Download gratuito di musica

Altra segnalazione riguardante la possibilità di scaricare gratuitamente dalla rete della musica.
Da questo sito http://www.downlovers.it/ previa registrazione gratuita, è possibile scaricare quei bravi, i cui autori hanno dato disponibilità nel effettuare il download dei brani musicali.
Un altro sito, al servizio dei navigatori ;-)

domenica 20 luglio 2008

Manuali gratuiti in ambito informatico

Il mio amico Antonio, mi ha segnalato alcuni manuali gratuiti, che riporto qui di seguito.
che dirvi... buona lettura :-)))
Come avere il Computer VELOCE e GRATIS
http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=28&Itemid=1
Come avere il Computer SICURO e GRATIS
http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=128&Itemid=64
Gestire Windows XP": Trucchi – Consigli – Notizie - Particolarità – Problemi – Altro
http://www.istitutomajorana.it/index.php?option=com_content&task=view&id=239&Itemid=102
Guide a programmi gratuiti per Windows
http://www.istitutomajorana.it/index.php?option=com_content&task=category&sectionid=4&id=29&Itemid=65
Linux per tutti - Ubuntu facile - Manuale
http://www.istitutomajorana.it/index.php?ption=com_content&task=view&id=358&Itemid=33

La paginazione del controllo DatagridView(VB.Net e C#)

Per il sito http://www.iprogrammatori.it/articoli/programmazione/pagina-datagridview-con-vbnet.asp ho scritto un articolo riguardante la possibilità di rendere il controllo Datagridview con la paginazione, in ambiente Windows Application.






Figura 1
In questo articolo, vedremo come effettuare la paginazione di un datagridview, tramite i pulsanti ci si può spostare al record precedente, successivo, primo ed ultimo.
In una form, inseriamo un controllo datagridview, tre label, due caselle di testo e cinque pulsanti, la form deve avere un aspetto simile alla figura 1.
La casella di testo, relativa al record per la pagina, avrà il compito di visualizzare il numero dei record nel datagridview, mentre la casella di testo denominata posizione, indicherà la posizione in cui ci si trova.
Il database utilizzato è Microsoft Access, ma questa tecnica si può utilizzare con qualsiasi database, il database utilizzato è quello di Esempio di Microsoft, ossia Northwind.mdb e quindi utilizzeremo le classi del namespace system.data.oledb.
Stesura del codice
Dopo aver completato la parte grafica della form, non ci resta che scrivere il relativo codice.
Si creano delle nseriamo delle variabili a livello di classe, le quali ci permettono di avere le informazioni relativi al record attuale, al totale dei record, alla pagina corrente ed un datatable, con i relativi cati.
Di seguito si riporta il codice di tale operazione:


VB.Net


'Variabili locali per la gestione della paginazione


Private PaginaCorrente As Integer


Private dttDati As DataTable


Private TotalePagine As Integer


Private RecordAttuale As Integer



C#


//Variabili locali per la gestione della paginazione


private Int32 PaginaCorrente;


private DataTable dttDati;


private Int32 TotalePagine;


private Int32 RecordAttuale;


Fatto ciò, si crea una funzione, che permetta il caricamento dei dati nel controllo DatagridView.
Di seguito si riporta tale funzione.
La funzione CaricaDati, verrà richiamata non solo dal pulsante Carica, ma anche dagli altri pulsanti di spostamento.
Qui di seguito si riporta il frammento del codice relativo al pulsante carica.


VB.Net


''' <summary>


''' Funzione per il carimento dei dati


''' </summary>


''' <remarks></remarks>


Private Sub CaricaDati()



Dim conta As Integer


Dim RecordInziale As Integer


Dim RecordFinale As Integer


'DataTable temporaneo


Dim dttTemp As DataTable


'Record per pagina


Dim RecordPerPagina As Integer


'Totale record


Dim TotaleRecord As Integer


RecordPerPagina = CType(TxtRecordPerPagina.Text, Integer)


'rilevo il totale dei record


TotaleRecord = dttDati.Rows.Count


'Copio i dati in un dataTable temporaneo


dttTemp = dttDati.Clone


'rilevo il record finale


If PaginaCorrente = TotalePagine Then


RecordFinale = TotaleRecord


Else


RecordFinale = RecordPerPagina * PaginaCorrente


End If


'rilevo il recordo iniziale


RecordInziale = RecordAttuale


'importo (copio) i record che dovrò visualizzare dal range composto dal record iniziale al record finale


For conta = RecordInziale To RecordFinale - 1


dttTemp.ImportRow(dttDati.Rows(conta))


RecordAttuale = RecordAttuale + 1


Next


'carico la griglia e visualizzare la posizione


DtgDati.DataSource = dttTemp


txtPosizione.Text = "Pagina " & PaginaCorrente.ToString() & "/" & TotalePagine.ToString()


End Sub


C#


/// <summary>


/// Funzione per il carimento dei dati


/// </summary>


private void CaricaDati()


{


Int32 RecordInziale;


Int32 RecordFinale;


//DataTable temporaneo


DataTable dttTemp;


//Record per pagina


Int32 RecordPerPagina;


//Totale record


Int32 TotaleRecord;


RecordPerPagina = Convert.ToInt32(TxtRecordPerPagina.Text);


//rilevo il totale dei record


TotaleRecord = dttDati.Rows.Count;


//Copio i dati in un dataTable temporaneo


dttTemp = dttDati.Clone();


//rilevo il record finale


if (PaginaCorrente == TotalePagine)


RecordFinale = TotaleRecord;


else


RecordFinale = RecordPerPagina * PaginaCorrente;


//rilevo il recordo iniziale


RecordInziale = RecordAttuale;


//importo (copio) i record che dovrò visualizzare dal range composto dal record iniziale al record finale


for (int conta = RecordInziale; conta < RecordFinale; conta++)


{


dttTemp.ImportRow(dttDati.Rows[conta]);


RecordAttuale = RecordAttuale + 1;


}


//carico la griglia e visualizzare la posizione


DtgDati.DataSource = dttTemp;


txtPosizione.Text = "Pagina " + PaginaCorrente.ToString() + "/" + TotalePagine.ToString();


}

Il pulsante carica, avrà il compito di caricare per la prima volta il datagridview e valorizzare le variabili.

VB.Net


Private Sub BtnCarica_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCarica.Click


'connessione


Dim conDati As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\Northwind.mdb")



'oggetto per la query


Dim daDati As New OleDbDataAdapter("select * from customers", conDati)


Dim dtsDati As New DataSet()


'Carico il dataset


daDati.Fill(dtsDati, "customers")


'Gestione delle pagine


dttDati = dtsDati.Tables("customers")


TotalePagine = dttDati.Rows.Count / CType(TxtRecordPerPagina.Text, Integer)


If (dttDati.Rows.Count Mod CType(TxtRecordPerPagina.Text, Integer)) > 0 Then


TotalePagine = TotalePagine + 1


End If


'Imposto le variabile per la paginazione


PaginaCorrente = 1


RecordAttuale = 0


'Carico i dati


CaricaDati()



End Sub


C#


private void BtnCarica_Click(object sender, EventArgs e)


{


//connessione


OleDbConnection conDati = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\Northwind.mdb");


//oggetto per la query


OleDbDataAdapter daDati = new OleDbDataAdapter("select * from customers", conDati);


DataSet dtsDati = new DataSet();



//Carico il dataset


daDati.Fill(dtsDati, "customers");


//Gestione delle agpine


dttDati = dtsDati.Tables["customers"];


TotalePagine = dttDati.Rows.Count / Convert.ToInt32(TxtRecordPerPagina.Text);


if (dttDati.Rows.Count % Convert.ToInt32(TxtRecordPerPagina.Text) > 0)


TotalePagine = TotalePagine + 1;


//Imposto le variabile per la paginazione


PaginaCorrente = 1;


RecordAttuale = 0;


//Carico i dati


CaricaDati();


}


Ora non ci resta che impostare il codice dei vari pulsanti.
Di seguito si riporta il codice per quanto concerne il pulsante che ci riporta ai primi record, il pulsante primo, avrà il compito di portarci alla prima pagina della nostra paginazione.


Terminata questa operazione, vediamo il codice per il pulsante ultimo, ossia per la fine dei record


VB.Net


Private Sub btnPrimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrimo.Click


PaginaCorrente = 1


RecordAttuale = 0


CaricaDati()


End Sub


C#


private void btnPrimo_Click(object sender, EventArgs e)


{


PaginaCorrente = 1;


RecordAttuale = 0;


CaricaDati();


}


Terminata questa operazione, vediamo il codice per il pulsante ultimo, ossia per la visualizzazione degli ultimi record, della nostra paginazione.


VB.Net


Private Sub btnUltimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUltimo.Click


PaginaCorrente = TotalePagine


RecordAttuale = dttDati.Rows.Count - 1


CaricaDati()


End Sub


C#


private void btnUltimo_Click(object sender, EventArgs e)


{


PaginaCorrente = TotalePagine;


RecordAttuale = dttDati.Rows.Count - 1;


CaricaDati();


}


Ora non ci resta che valorizzare i pulsanti precedente e successivo, questi pulsanti hanno il compito di spostarci alla "pagina" precedente o successiva.
Di seguito si riporta il codice per il pulsante precedente.


VB.Net


Private Sub btnPrecedente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrecedente.Click


PaginaCorrente -= 1


If PaginaCorrente < 1 Then


PaginaCorrente = 1


Return


End If


RecordAttuale = CType(TxtRecordPerPagina.Text, Integer) * (PaginaCorrente - 1)


CaricaDati()


End Sub


C#


private void btnPrecedente_Click(object sender, EventArgs e)


{


PaginaCorrente -= 1;


if (PaginaCorrente < 1)


{


PaginaCorrente = 1;


return;


}


RecordAttuale = Convert.ToInt32(TxtRecordPerPagina.Text) * (PaginaCorrente - 1);


CaricaDati();


}


Mentre qui di seguito viene riportato il frammento di codice per il pulsante successivo:


VB.Net


Private Sub BtnSuccessivo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSuccessivo.Click


If TotalePagine = 0 Then


MessageBox.Show("Impostare la dimensione della pagina e verificare i dati")


Return


End If


PaginaCorrente += 1


If PaginaCorrente > TotalePagine Then


PaginaCorrente = TotalePagine


If RecordAttuale = dttDati.Rows.Count Then


Return


End If


End If


CaricaDati()


End Sub


C#


private void BtnSuccessivo_Click(object sender, EventArgs e)


{


if (TotalePagine == 0)


{


MessageBox.Show("Impostare la dimensione della pagina e verificare i dati");


return;


}


PaginaCorrente += 1;


if (PaginaCorrente > TotalePagine)


{


PaginaCorrente = TotalePagine;


if (RecordAttuale == dttDati.Rows.Count)


return;


}


CaricaDati();


}


Conclusioni:
Ora non ci resta che testare l'applicazioni, dopo aver verificato la correttezza del codice ed aver posizionato il database access di esempio, in C:\ (modificare la stringa relativa alla proprietà connectionstring per impstare un altro percorso) avviate il programma.


Vedremo la griglia vuota, tramite il pulsante carica (ricrordarsi di impostare la casella di testo con il numero degli elementi da visualizzare) vedremo la griglia valorizzata e tramite i pulsanti, ci spostiamo tra i vari record.
Tramite la parola download è possibile scaricare il file di esempio:


Download

sabato 19 luglio 2008

Recensione libro: WORD 2007 MACRO E VBA



Scheda del libro:

























Autore:Alessandra Salvaggio
Prezzo:Euro 18,00
Caratteristiche224 pag - 15x21 bn
ISBN9788882336127
anno di edizione2007
numero dell'edizione2
Argomento:Tecnologie
Collanadigital lifestyle pro


Per coloro che utilizzano Word 2007, a livello avanzato, ossia tramite il linguaggio Visual Basic Application (VBA) possono trovare utile il libro Word 2007 Macro e VBA http://www.fag.it/scheda.aspx?ID=21747 edito della casa editrice FAG http://www.fag.it/ . Il libro, composto da ben 25 capitoli suddiviso in 6 parti, ha lo scopo di fornire al lettore nozioni nonché tecniche per utilizzare Word a livello di programmazione, tramite appunto il suo interno linguaggio di programmazione quale VBA, di cui le Macro si basano.


L'autore del libro, Alessandra Selvaggio, ha pubblicato diversi libri riguardante il pacchetto Microsoft Office 2007 e versioni precedenti, con questo libro illustra varie tecniche di utilizzo di Word, diversamente dal suo utilizzo a livello utente, ma fornendo nozioni di base per utilizzarlo in modo da creare delle proprie procedure e funzionalità aggiuntive. Nel libro non è incluso nessun CD-Rom o dvd, i sorgenti degli esempi utilizzati nei vari capitoli si possono scaricare dal seguente sito www.fag.it/booksite/612-7.htm .


Ma vediamo in dettaglio i vari capitoli che compongono questo libro.


Il capitolo 0 è un capitolo introduttivo alla programmazione Visual Basic Application (VBA), dopo un introduzione su tale linguaggio, vengono illustrati i vari aspetti dell'editor VBA.


Nel capitolo primo viene affrontato il metodo InsertAfter per inserire del testo nel documento, inoltre una panoramica sull'editor VBA, in questo capitolo prende inizio la prima parte del libro.


Con il capitolo 2, ci si addentra al codice VBA, in questo capitolo si parla sempre della gestione del testo in particolare dello spostamento del testo tramite i metodi moveRight, MoveLeft, e la parola chiave With.


Il terzo capitolo riguarda la personalizzazione del nostro documento, in particolare come creare un comando da inserire nel menu di Word, il capitolo è molto ricco di immagini, in questo modo il lettore avrà modo di comprendere le operazione da compiere per personalizzare il programma Microsoft Word 2007.


Il quarto capitolo, riguarda la formattazione del testo, in particolare si esamina l'oggetto font, con le varie proprietà (name, size, bold, color, underline) gli oggetti ParagraphFormat.


Il capitolo quinto viene illustrato la memorizzazione della formattazione e la possibilità di applicare alcune opzioni riguardante l'editor VBA.


Il capitolo successivo, ossia il sesto, l'autore del libro, illustra come utilizzare le form nel programma Microsoft Word 2007, un importante oggetto che permette di implementare notevolmente il documento su cui si sta lavorando. Oltre all'utilizzo della form, viene illustrato anche l'utilizzo del controllo di opzione e controlli riguardante i pulsanti. L'utilizzo dei metodi show e unload della form.


Con il capitolo settimo, vegnono fornite nozioni sull'utilizzo di un messaggio a video, tramite l'oggetto Msgbox, l'utilizzo di alcuni eventi della form e le istruzioni condizionali.


Il capitolo ottava, riguarda l'utilizzo di un controllo, in particolare della casella di controllo.


Con il capitolo 9, si passa alla seconda parte del libro, in questo capitolo vedremo come impostare alcune opzioni di Microsoft Word, per richiamare un form all'apertura di un nuovo documento. Inoltre si vedranno alcune personalizzazioni.


Il decimo capitolo, si passa all'utilizzo dell'oggetto Isnumeric, per verificare che l'inserimento di un dato sia numerico, gli operatori di condizioni quali and or e diverso.


Il capitolo 11 viene illustrato un altro utile controllo, la casella combinata, ossia un controllo che al suo interno contiene diversi valori. Si vedrà come utilizzare il metodo AddItem di tale controllo per aggiungere nuovi elementi da codice. Inoltre vedremo come gestire l'ordine di tabulazione dei controlli in una form.


Nel dodicesimo capitolo, si vede come utilizzare l'oggetto msgbox, per interagire con l'utente, le varie impostazioni che si possono utilizzare in questo oggetto, inoltre le istruzioni condizionali annidate.


La parte terza del libro, inizia con il tredicesimo capitolo, in questo capitolo, si vedrà come utilizzare più form, utilizzare l'editor VBA per impostare le dimensioni dei controlli, la dichiarazione di variabili pubbliche , l'uso della parola chiave UCASE e LCase per rendere il testo minuscolo e maiuscolo, il metodo hide della form e il concatenamento delle parole.


Il capitolo 14, riguarda la gestione delle date, in particolare l'utilizzo della parola chiave Isdate, per verificare che un determinato valore sia data o no, e la funzione cdate, per convertire una determinata stringa in data, la funzione FormatDateTime.


Con il quindicesimo capitolo, viene illustrato come cancellare alcune parti di testo, l'uso dei metodi SetRang e TypeBackspace, e gli oggetti Range e Paragraphs. In questo capitolo si conclude la terza parte del libro.


Con il sedicesimo capitolo, si passa alla quarta parte del libro, in questo capitolo viene descritto come utilizzare le immagini in un documento word, ed impostare le varie proprietà di tale oggetto. Impostare alcune parametri al foglio, il capitolo è molto ricco di esempio di codice.


Il capitolo 17, viene illustrato come utilizzare le finestre di dialogo, tramite l'oggetto dialogs.


Con il diciottesimo capitolo, vedremo come cambiare l'orientamento del foglio di Microsoft Word, per gestire l'orientamento di un biglietto.

Il capitolo 19, è un capitolo molto importante, viene trattata la gestione degli errori. In questo capitolo si vedrà come utilizzare la parola chiave on error goto e on error resume next per gestire le varie eccezioni che si possono verificare durante l'esecuzione del codice.

Il capitolo 20, inizia la quinta parte del libro, in questo capitolo si vedrà l'oggetto FileSystem, per verificare che una determinata cartella esista, in tal caso salveremo il nostro file tramite il metodo SaveAs.

Il capitolo ventunesimo, viene illustrato l'oggetto now per inserire la data in una nostra fattura di esempio. Inoltre la funzione Year, per estrapolare l'anno da una determinata data.

Con il capitolo ventiduesimo, proseguo l'utilizzo dell'oggetto Filesystem, in questo capitolo, l'autore del libro, spiega come creare le cartelle tramite il metodo CreateFolder, in questo capitolo si conclude la parte 5.

Il capitolo 23, inizia l'ultima parte del libro, ossia la sesta. In questo capitolo viene trattato un argomento molto importante, la possibilità di effettuare il debug del codice che abbiamo scritto. Vedremo come utilizzare l'editor VBA e gli strumenti messi a disposizione per effettuare il debugging.

Il penultimo capitolo del libro, ossia il ventiquattresimo, vedremo come utilizzare le macro di Microsoft word per comprendere ed acquisire nozioni sul codice vba, generato dal programma, in base a determinate azioni da compiere.

Il capitolo conclusivo, il venticinquesimo, ci fornisce delle utile risorse on line, ossia il sito di Microsoft Office on line ed altri, per tenersi aggiornati e cercare del materiale utile per il nostro lavoro.


Di seguito si riportano i titoli dei capitoli


0) Introduzione a VBA


Parte 1 -


1) Inserire un Testo


2) Spostare la selezione


3) Eseguire un comando dal Menu o dalla barra degli strumenti


4) Formattare un testo


5) Memorizzare la formattazione


6) Un form per scegliere quale testo inserire


7)Gestire la mancanza di azione da parte dell'utente


8) Una casella di controllo


Parte 2 -


9) Richiamare un form quando si crea un nuovo file da modello


10) Verificare che un dato inserito sia un numero e utilizzarlo


11) Una casella combinata


12) Interagire con l'utente


Parte 3 -


13) Form multipli


14 ) Gestire le date


15) Cancellare parti del Testo


Parte 4 -


16 ) Le immagini


17) Le finestre di dialogo


18) Cambiare l'orientamento del biglietto


19) Gestire un errore imprevisto


Parte 5 -


20) Salvare un File


21) Numerare la fattura e indicare l'anno


22) Creare nuove cartelle


Parte 6 -


23) Il debug del codice


24) Registrare le macro per andare avanti da soli


25) Risorse on line.


Conclusioni:


Un buon libro, per coloro che si vogliono avvicinare alla programmazione per Microsoft Office, in particolare per Microsoft Word 2007. Il libro fornisce al lettore, informazioni utili, per acquisire famigliarità con questo strumento avanzato. Un libro indicato per coloro che non hanno mai programmato e che sono interessati a questo nuovo mondo. Molto ricco di codice ed immagini, gli esempi utilizzati nel libro, si possono scaricare dal sito indicato in precedenza.

venerdì 18 luglio 2008

gallery silverlight 2

In questo sito http://silverlight.net/themes/silverlight/community/gallerydetail.aspx?cat=6 si trova diverso materiale per Silverlight 2.0.
La gallery, presenta diversi esempi di applicazioni che si possono fare con questa tecnologia. Molto utile per vedere e capire le potenzialità di questo nuovo approccio alla programmazione web.
Al momento per la versione 1.0 e beta 2.
Che dirvi....Buona programmazione ;-))))

giovedì 17 luglio 2008

download Visual Studio Team System 2008 Team Foundation Server Power Tools - July 2008 Release

Rilasciata una nuova versione dei power Tools per Visual Sutdio Team System 2008 Foundation Server.
Questi strumenti, permettono di ampliare tale software con utilità per la semplicificazioni di alcune attività.
Ecco i tools che verranno installati:
Command line tool (TFPT.EXE)
Team Explorer IDE menu additions
Build Notification tool
TFS Best Practices Analyzer
Process Template Editor
Work Item Templates
Custom check-in policies
TFS Server Manager
TFS Users tool
Alert Editor
Per il download e maggiori informazioni visitate il seguente sito http://www.microsoft.com/downloads/details.aspx?FamilyID=00803636-1d16-4df1-8a3d-ef1ad4f4bbab&DisplayLang=en

Download Versione di valutazione di Microsoft Dynamics CRM 4.0

Vi segnalo la possibilità di scaricare gratuitamente una versione trial del programma Microsoft Dynamics CRM 4.0.
Da questo sito http://www.microsoft.com/italy/dynamics/crm/product/trial.mspx è possibile saricare una versione funzionante limitata nel tempo, per 90 giorni, per valutarle le caratteristiche.
Per il download e maggiori informazioni visitate il sito indicato.

mercoledì 16 luglio 2008

Creare una tabella in Word 2007 tramite la tecnologia .Net (VB.Net e C#)

Riporto un articolo che ho scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/creare_documento-word-con-tabella-valorizzata.asp .


Introduzione:
In questo articolo, vedremo come utilizzare Word 2007, tramite il Framework 3.5, ed in particolare con i linguaggi VB.Net e C# , in ambiente Windows Application. In questo articolo viene riportata una tecnica di come creare in Microsoft Word 2007, una tabella, e dopo averla creata, valorizzare le singole celle con del testo.
Aggiunta del riferimento Word.
Dopo aver aggiunto come riferimento (progetto->aggiungi riferimento) Microsoft Word 12.0 object library, nella pagina com, della finestra che viene aperta, passiamo in visualizzazione codice.
In alto sopra ad ogni riga di codice, inseriamo il namespace per la gestione di Microsoft Office.
Di seguito si riporta tale frammento di codice.


VB.Net


Imports Microsoft.Office.Core


Imports WORD = Microsoft.Office.Interop.Word


Imports System.Type


C#


using Microsoft.Office.Core;


using WORD = Microsoft.Office.Interop.Word;



Nell'evento click di un pulsante (ma può essere inserito in qualsiasi altra parte) inseriamo il codice per la creazione di un documento word, tramite l'oggetto word, application e l'oggetto word.document, mentre con gli oggetti word.range word.cell e word.table, possiamo gestire le tabelle e le relative celle.
Qui di seguito si riporta un esempio di codice.
VB.Net


Private Sub BtnApriWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnApriWord.Click


Dim word As New WORD.Application()


word.Visible = True


'oggetto singolo documento


Dim document As WORD.Document = word.Documents.Add(Missing, Missing, Missing, Missing)


'creo la tabella


Dim range As WORD.Range = document.Range(Missing, Missing)


Dim table As WORD.Table = range.Tables.Add(range, 2, 3, Missing, Missing)


'array con i dati


Dim dati As String(,) = {{"EMa", "Marco", "Aurelio"}, {"EMa", "Bartoltino", "De Maffei"}}


'Effettuo un ciclo per l'array in modo che carico la tabella


For riga As Integer = 1 To 2


For colonna As Integer = 1 To 3


'creo ed imposto il valore di ogni singola cella


Dim cell As WORD.Cell = table.Cell(riga, colonna)


cell.Range.Text = dati(riga - 1, colonna - 1)


Next


Next


'imposto la formattazione della tabella, prima riga ed i vari bordi


table.Rows(1).Range.Bold = 1


table.AutoFitBehavior(Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitContent)


table.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle


table.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle


End Sub


C#


private void BtnApriWord_Click(object sender, EventArgs e)


{


WORD.Application word = new Microsoft.Office.Interop.Word.Application();


word.Visible = true;


object missing = System.Type.Missing;


//oggetto singolo documento


WORD.Document Document = word.Documents.Add(ref missing, ref missing, ref missing, ref missing);


//creo la tabella


WORD.Range range = Document.Range(ref missing, ref missing);


WORD.Table table = range.Tables.Add(range, 2, 3, ref missing, ref missing);


//array con i dati


string[,] dati ={ { "EMa", "Marco", "Aurelio" }, { "EMa", "Bartoltino", "De Maffei" } };


//Effettuo un ciclo per l'array in modo che carico la tabella


for (int riga = 1; riga < 3; riga++)


{


for (int colonna = 1; colonna < 4; colonna++)


{


//creo ed imposto il valore di ogni singola cella


WORD.Cell cell = table.Cell(riga, colonna);


cell.Range.Text = dati[riga - 1, colonna - 1];


}


}


//imposto la formattazione della tabella, prima riga ed i vari bordi


table.Rows[1].Range.Bold = 1;


table.AutoFitBehavior(Microsoft.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitContent);


table.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;


table.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;


}



Conclusioni:
In questo articolo si è visto come utilizzare Microsoft Office Word 2007, tramite VB.Net e C# , in una Windows Application. Tramite la parola Download potete scaricare il file di esempio utilizzato in questo articolo.


Download




Video training su XNA 2.0

Per coloro che sono interessati allo sviluppo di videogiochi con Visual Studio XNA 2.0, troveranno interessanti questi due http://creators.xna.com/en-US/education/gettingstarted nuovi video tutorial riguardante la creazione di video giochi in 2d e 3d.

Download Microsoft Silverlight Tools Beta 2 per Visual Studio 2008

Da questo sito http://www.microsoft.com/downloads/details.aspx?FamilyID=50a9ec01-267b-4521-b7d7-c0dba8866434&DisplayLang=it potete scaricare il Componente aggiuntivo per Visual Studio 2008 per lo sviluppo di applicazioni per Silverlight 2 Beta 2.

download Aggiornamento dell'infrastruttura per i server di Microsoft Office

Vi segnalo nuovi aggiornamenti Microsoft.
Da questo sito http://www.microsoft.com/downloads/details.aspx?FamilyID=3a74e566-cb4a-4db9-851c-e3fbbe5e6d6e&DisplayLang=it scaricare un aggiornamento dell'infrastruttura per Windows SharePoint Services 3.0 (KB951695) include gli aggiornamenti e le correzioni più recenti relativi alle prestazioni per Microsoft Windows SharePoint Services 3.0.
Mentre qui http://www.microsoft.com/downloads/details.aspx?FamilyID=3811c371-0e83-47c8-976b-0b7f26a3b3c4&DisplayLang=it un L'aggiornamento dell'infrastruttura per i server di Microsoft Office (KB951297) include le correzioni e gli aggiornamenti più recenti relativi alle prestazioni per i server di Microsoft Office.
Per i sistemi a 64 bit, da questo sito http://www.microsoft.com/downloads/details.aspx?FamilyID=6e4f31ab-af25-47df-9bf1-423e248fa6fc&DisplayLang=it un aggiornamento dell'infrastruttura per i server di Microsoft Office (KB951297) include le correzioni e gli aggiornamenti più recenti relativi alle prestazioni per i server di Microsoft Office.
Altro aggiornamento per Sharepoint 3.0 lo potete trovare qui http://www.microsoft.com/downloads/details.aspx?FamilyID=256ce3c3-6a42-4953-8e1b-e0bf27fd465b&DisplayLang=it questo aggiornamento dell'infrastruttura per Windows SharePoint Services 3.0 (KB951695) include gli aggiornamenti e le correzioni più recenti relativi alle prestazioni per Microsoft Windows SharePoint Services 3.0.
Infine da questo sito
http://www.microsoft.com/downloads/details.aspx?FamilyID=f385adb8-0425-4ba4-bece-7664b8f49d12&DisplayLang=it potete scaricare un aggiornamento dell'infrastruttura per Microsoft Office Project 2007 (KB951547) include gli aggiornamenti e le correzioni più recenti relativi alle prestazioni per Microsoft Office Project 2007.
Che dirvi..buon download :-)))

lunedì 14 luglio 2008

Creazione di un salva schermo con .Net (VB.Net e C#)

Riporto un articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/creare-screen-saver-con-vbnet.asp



Figura 1


Introduzione


In questo articolo vedremo come creare un salva schermo, per il nostro computer, in particolare si crea un screen saver, il quale visualizza un immagine (una schacchiera) che verrà visualizzata in diverse parti dello schermo, ogni n secondi.

Il salva shermo è una funzionalità di Windows, che permette, se attività, che dopo n minuti di visualizzare delle animazioni quando il pc è inattivo.

I file Screen Saver, hanno come estensione .scr e si trovano nella cartella C:\WINDOWS\system32, in questo modo comparirà nella lista dei screnne Saver, della finestra proprietà.


Inoltre il nostro Salva Schermo farà uso di una finestra delle opzioni, per impostare alcuni parametri, tra i quali, avremo la possibilità di impostare la velocità per il cambiamento della posizione, impostare un immagine e il colore di sfondo.


Creazione della classe Opzioni



Si apra Visual Studio 2005 e si crea un nuovo progetto di tipo Windows Application, scelto il linguaggio di proprio interesse (VB.Net o C#) verrà creato un nuovo progetto, con una form.


Si aggiunge al progetto una classe, tale classe ha il compito di gestire le informazioni riguardante il salva schermo, le opzioni che si potranno modificare nella finestra delle proprietà dello schermo, in particolare nel tab screen saver.


La classe sarà di tipo serializer, in questo modo si possono gestire le impostazioni tramite un file in modalità XML.


La classe avrà tre proprietà di tipo testo, una per la gestione del percorso e nome del file immagine, una per il colore dello sfondo della form e l’latra per la gestione della velocità del cambiamento della posizione dell’immagine.


VB.Net


Imports System.Xml.Serialization


Imports System.Xml


Imports System.IO


''' <summary>


''' Classe serializzata


''' </summary>


''' <remarks></remarks>


<Serializable()> Public Class Opzioni



#Region "Campi"


Private m_Velocita As String = "Media" 'Alta - Media - Bassa


Private m_Sfondo As String = "Blue" 'Colore sfondo


Private m_FileImmagine As String = Environment.CurrentDirectory & "\sfondo.jpg"


Private PercorsoOpzioni As String = Environment.CurrentDirectory & "\SalvaSchermoOpzioni.opt"



#End Region



#Region "Proprietà"


''' <summary>


''' Proprietà pr la gestione delle velocità di esecuzione dello spostamento nello schermo


''' </summary>


''' <value></value>


''' <returns></returns>


''' <remarks></remarks>


Public Property Velocita() As String


Get


Return m_Velocita


End Get


Set(ByVal value As String)


m_Velocita = value


End Set


End Property


''' <summary>


''' Colore di sfondo


''' </summary>


''' <value></value>


''' <returns></returns>


''' <remarks></remarks>


Public Property Colore_Sfondo() As String


Get


Return m_Sfondo


End Get


Set(ByVal value As String)


m_Sfondo = value


End Set


End Property


''' <summary>


''' Percorso e nome del file immagine che verrà visualizzato


''' </summary>


''' <value></value>


''' <returns></returns>


''' <remarks></remarks>


Public Property Immagine() As String


Get


Return m_FileImmagine


End Get


Set(ByVal value As String)


m_FileImmagine = value


End Set


End Property



#End Region



#Region "Funzioni"


Public Function FileOpzioniEsistente() As Boolean


Dim fileOpz As New System.IO.FileInfo(PercorsoOpzioni)


Return fileOpz.Exists()


End Function


Public Sub CaricaOpzioni()


Dim MyOpzioni As New Opzioni()



' Verifico che il file esista


If MyOpzioni.FileOpzioniEsistente() Then





' Oggetto di tipo serializzato


Dim mySerializer As New XmlSerializer(GetType(Opzioni))


' Leggo il file xml .opt


Dim TextReader As New StreamReader(PercorsoOpzioni)


' Oggetto xml per la lettura delle opzoni


Dim XmlReader As New Xml.XmlTextReader(TextReader)



' Verifico che il formato è conforme


If mySerializer.CanDeserialize(XmlReader) Then


' Deserializzo oggetto


MyOpzioni = CType(mySerializer.Deserialize(XmlReader), Opzioni)


Else


' Salvo il file opzioni


MyOpzioni.SalvaOpzioni()


End If



' Chiudo gli oggetti.


XmlReader.Close()


TextReader.Close()



' Imposto i vari valori


Me.Velocita = MyOpzioni.Velocita


Me.Colore_Sfondo = MyOpzioni.Colore_Sfondo


Me.Immagine = MyOpzioni.Immagine


End If


End Sub




Public Sub SalvaOpzioni()


' oggetto per la scrittura dei dati


Dim myWriter As New System.IO.StreamWriter(PercorsoOpzioni)



'oggetto serializzato


Dim myXmlSerializer As New XmlSerializer(Me.GetType())



'Serializzo l'oggetto


myXmlSerializer.Serialize(myWriter, Me)




myWriter.Close()




End Sub


#End Region




End Class



C#



using System;


using System.Collections.Generic;


using System.Text;


using System.Xml.Serialization;


using System.Xml;


using System.IO;



namespace WinSalvaSchermoCS


{


[Serializable]


public class Opzioni


{




#region Campi


private string m_Velocita = "MEDIA"; // Alta - Media - Bassa


private string m_Sfondo = "BLUE"; //Colore sfondo


private string m_FileImmagine = Environment.CurrentDirectory + "\\sfondo.jpg";


private string PercorsoOpzioni = Environment.CurrentDirectory + "\\SalvaSchermoOpzioni.opt";



#endregion




#region Proprietà


public string Immagine


{


get { return m_FileImmagine; }


set { m_FileImmagine = value; }


}


public string Colore_Sfondo


{


get { return m_Sfondo; }


set { m_Sfondo = value; }


}


public string Velocita


{


get { return m_Velocita; }


set { m_Velocita = value; }


}


#endregion




#region Funzioni


public bool FileOpzioniEsistente()


{



FileInfo fileOpz = new FileInfo(PercorsoOpzioni);


return fileOpz.Exists ;


}





public void CaricaOpzioni()


{


Opzioni MyOpzioni = new Opzioni();




// Verifico che il file esista


if (MyOpzioni.FileOpzioniEsistente())


{





//Oggetto di tipo serializzato


XmlSerializer mySerializer = new XmlSerializer( typeof(WinSalvaSchermoCS.Opzioni));


// Leggo il file xml .opt


StreamReader TextReader = new StreamReader(PercorsoOpzioni);


// Oggetto xml per la lettura delle opzoni


System.Xml.XmlTextReader XmlReader = new System.Xml.XmlTextReader(TextReader);



// Verifico che il formato è conforme


if (mySerializer.CanDeserialize(XmlReader))


{// Deserializzo oggetto


MyOpzioni = (Opzioni)(mySerializer.Deserialize(XmlReader));


}


else


{


// Salvo il file opzioni


MyOpzioni.SalvaOpzioni();


}





// Chiudo gli oggetti.


XmlReader.Close();


TextReader.Close();



// Imposto i vari valori


this.Velocita = MyOpzioni.Velocita;


this.Colore_Sfondo = MyOpzioni.Colore_Sfondo;


this.Immagine = MyOpzioni.Immagine;


}


}




public void SalvaOpzioni()


{



// oggetto per la scrittura dei dati


StreamWriter myWriter = new StreamWriter(PercorsoOpzioni);



//oggetto serializzato


XmlSerializer myXmlSerializer = new XmlSerializer(this.GetType());



//Serializzo l'oggetto


myXmlSerializer.Serialize(myWriter, this);



myWriter.Close();



}






#endregion







}


}



Creazione della finestra opzioni

Dopo aver creato la classe che permette la gestione delle opzioni, non ci resta che creare una finestra, nella quale sarà possibile impostare i parametri del nostro salva schermo.

La finestra è composta da una casella combinata per impostare la velocità dello spostamento dell’immagine nello schermo, un controllo di tipo option button per impostare il colore di sfondo (rosso, verde e blu) una casella di testo ed un pulsante per la selezione dell’immagine, ed un controllo pciturebox, che avrà il compito di visualizzare l’anteprima dell’immagine.

Nella figura 2 è mostrata l’impostazione di tale finestra.


Figura2


Il pulsante annulla, avrà il compito di chiudere la finestra.

Di seguito si riporta il frammento di codice di tale pulsante

VB.Net


Me.Close()


C#


this.Close();


Nell’evento load della form, verranno caricati i dati salvati in precedenza.

Tramite il metodo caricaopzioni, della classe opzioni, verrà valorizzato l’oggetto opzioni, con i dati rilevati dal file di configurazione.

Dopo tale operazione, verranno valorizzati i vari controlli posti sulla form.

Di seguito si riporta il frammento di codice da inserire nell’evento load.


VB.Net


'Carico i dati


Dim fileOpzioni As New Opzioni()


fileOpzioni.CaricaOpzioni()


'imposto il colore


Select Case fileOpzioni.Colore_Sfondo.ToUpper()


Case "BLU"


rdbBlu.Checked = True


Case "VERDE"


RdbVerde.Checked = True



Case "ROSSO"


rdbRosso.Checked = True



End Select


'Imposto la velocità


cmbVelocita.Text = fileOpzioni.Velocita


'Percorso foto


txtNomeFile.Text = fileOpzioni.Immagine


If fileOpzioni.Immagine.Trim() <> "" Then


PictureBox1.ImageLocation = fileOpzioni.Immagine


End If


C#


//Carico i dati


Opzioni fileOpzioni = new Opzioni();


fileOpzioni.CaricaOpzioni();


//imposto il colore


switch (fileOpzioni.Colore_Sfondo.ToUpper())


{


case "BLU":


rdbBlu.Checked = true;


break;


case "VERDE":


RdbVerde.Checked = true;


break;


case "ROSSO":


rdbRosso.Checked = true;


break;


}


//Imposto la velocità


cmbVelocita.Text = fileOpzioni.Velocita;


//Percorso foto


txtNomeFile.Text = fileOpzioni.Immagine;


if (fileOpzioni.Immagine.Trim() != "")


PictureBox1.ImageLocation = fileOpzioni.Immagine;




Il pulsante con il testo dei tre puntini “…” permette di visualizzare una finestra di dialogo per la selezione dell’immagine (jpg o gif).

Impostando la proprietà RestoreDirectory a true permetterà di mantenere le informazioni rilevate, in questo modo, quando andremo a salvare il file di configurazione, le modifiche verranno apportate altrimenti, se impostato a false, nessuna modifica verrà effettuata.

Dopo aver selezionato il file immagine, verrà riportato nella casella di testo il percorso e nome del file immagine, mentre nel controllo picturebox verrà visualizzata l’immagine.

Di seguito si riporta il frammento di codice delle suddette operazioni.


VB.Net


'Carico nella casella di testo il nome ed il percorso del file


Dim dlgFile As New OpenFileDialog()


dlgFile.Filter = "*.Jpg*.Jpg*.gif*.gif*.bmp*.bmp"


dlgFile.Title = "Selezionare il file immagine che si vuole impostare come immagine di salvaschermo"


dlgFile.RestoreDirectory = True


If dlgFile.ShowDialog() = Windows.Forms.DialogResult.OK Then


txtNomeFile.Text = dlgFile.FileName


PictureBox1.ImageLocation = txtNomeFile.Text


End If



C#


//Carico nella casella di testo il nome ed il percorso del file


OpenFileDialog dlgFile = new OpenFileDialog();


dlgFile.Filter = "*.Jpg*.Jpg*.gif*.gif*.bmp*.bmp";


dlgFile.Title = "Selezionare il file immagine che si vuole impostare come immagine di salvaschermo";


dlgFile.RestoreDirectory = true;


if (dlgFile.ShowDialog() == DialogResult.OK)


{


txtNomeFile.Text = dlgFile.FileName;


PictureBox1.ImageLocation = txtNomeFile.Text;


}


Per concludere le operazioni su questa form(opzioni), non ci resta che scrivere il codice per il pulsante ok, il quale dovrà salvare le impostazioni per il nostro salva schermo. Tramite il metodo SalvaOpzioni, salveremo i valori impostati nelle varie proprietà (colore_sfondo, velocità ed immagine) nel file di configurazione.
Il codice dev’essere simile a quello riportato qui di seguito.


VB.Net


Dim FileOpzioni As New Opzioni()


If rdbBlu.Checked = True Then


FileOpzioni.Colore_Sfondo = "BLU"


ElseIf RdbVerde.Checked = True Then


FileOpzioni.Colore_Sfondo = "VERDE"


Else


FileOpzioni.Colore_Sfondo = "ROSSO"


End If


PictureBox1.ImageLocation = ""


FileOpzioni.Velocita = cmbVelocita.Text


FileOpzioni.Immagine = txtNomeFile.Text


FileOpzioni.SalvaOpzioni()


Me.Close()


C#



Opzioni FileOpzioni = new Opzioni();


if (rdbBlu.Checked == true)


FileOpzioni.Colore_Sfondo = "Blu";


else if (RdbVerde.Checked == true)


FileOpzioni.Colore_Sfondo = "Verde";


else


FileOpzioni.Colore_Sfondo = "Rosso";


PictureBox1.ImageLocation = "";


FileOpzioni.Velocita = cmbVelocita.Text;


FileOpzioni.Immagine = txtNomeFile.Text;


FileOpzioni.SalvaOpzioni();


this.Close();


Creazione della finestra Screen Saver


A questo punto non ci resta che scrivere la finestra per il nostro screen saver. La form, del salvaschermo, avrà impostato la proprietà FormBorderStyle in none, mentre la proprietà TopMost sarà impostato a true, e la proprietà WindowState a maximized.

Fatto ciò inseriamo nella form un controllo picturebox, il quale visualizza la nostra immagine, rilevandola nel nostro file di opzioni, ed un controllo per la gestione del tempo, ossia un timer.

Dichiariamo a livello di form le variabili per la gestione della grafica, per il posizionamento del controllo picturebox e per la gestione del mouse.

Di seguito si riporta la dichiarazone di tali campi.


VB.Net


' oggetto per la grafica


Private m_Graphics As Graphics


'Oggetto per le opzioni


Private m_Opzioni As New Opzioni()


' per la prima impostazione


Private m_Attivo As Boolean = False


'verifico lo spostamento del mouse


Private m_MousePosizione As Point


'oggetto per cambiare di volta in volta le coordinate


Private m_Random As New Random()




C#


// oggetto per la grafica


private Graphics m_Graphics;


//Oggetto per le opzioni


private Opzioni m_Opzioni = new Opzioni();


// per la prima impostazione quando si avvia lo screnn saver


private bool m_Attivo = false;


// verifico lo spostamento del mouse


private Point m_MousePosizione;


//oggetto per cambiare di volta in volta le coordinate


private Random m_Random = new Random();




Il nostro programma, sarà avviato tramite un opportuno metodo, questa funzione denominata main, avrà il compito di accettare un argomento, in base al parametro passato, verrà visualizzata o la finestra del salva schermo oppure quelle delle opzioni.

Infatti la finestra delle proprietà dello schermo di Windows, per avviare un salvaschermo, passa degli argomenti, la c sta per opzioni, mentre la s sta per salva schermo, mentre la p, permette l'anteprima del salva schermo.

Di seguito si riporta il frammento di codice di tale operazioni.


VB.Net


' Programma di avvio - startup del progetto


<STAThread()> Shared Sub Main(ByVal args As String())



' Verifico l'argomento che viene passato /c = opzioni /s screnn saver /p da anteprima


If args.Length > 0 Then


'Anteprima


If args(0).ToLower = "/p" Then


' da personalizzare anteprima quando viene selezionato dalla finestra screnne saver il nome.





Application.Exit()


End If



'finestra delle opzioni


If args(0).ToLower.Trim().Substring(0, 2) = "/c" Then


Dim FrmOpzioni As New FrmOpzioni()


FrmOpzioni.ShowDialog()




Application.Exit()


End If



' avvio lo screen saver


If args(0).ToLower = "/s" Then



Dim ScreenForm As New Form1()


ScreenForm.ShowDialog()


Application.Exit()


End If




Else


'in caso di doppio click


Dim ScreenForm As New Form1()


ScreenForm.ShowDialog()




Application.Exit()


End If


End Sub


C#


[STAThread]


static void Main(string[] args)


{



// Verifico l'argomento che viene passato /c = opzioni /s screnn saver /p da anteprima


if (args.Length > 0)


{


//Anteprima


if (args[0].ToLower() == "/p")


{


// da personalizzare anteprima quando viene selezionato dalla finestra screnne saver il nome.





Application.Exit();


}


//finestra delle opzioni


if (args[0].ToLower().Trim().Substring(0, 2) == "/c")


{


FrmOpzioni FrmOpzioni = new FrmOpzioni();


FrmOpzioni.ShowDialog();




Application.Exit();


}



// avvio lo screen saver


if (args[0].ToLower() == "/s")


{



Form1 ScreenForm = new Form1();


ScreenForm.ShowDialog();


Application.Exit();


}



}


else


{


//in caso di doppio click


Form1 ScreenForm = new Form1();


ScreenForm.ShowDialog();



Application.Exit();


}



}




Nell’evento load della finestra per visualizzare il screen saver, verrà creato un oggetto di tipo opzioni, che tramite il metodo carica dati, imposta la form con i parametri impostati. Verrà impostato la velocità di spostamento dell’immagine, l’immagine da visualizzare ed il colore dello sfondo della form.

Inoltre verrà avviato il timer.

Di seguito si riporta il codice delle suddette operazoni.

VB.Net


'oggetto per la creazione grafica


Me.m_Graphics = Me.CreateGraphics()



'rilevo le opzioni


m_Opzioni.CaricaOpzioni()


PictureBox1.ImageLocation = m_Opzioni.Immagine



'imposto il tempo


Select Case m_Opzioni.Velocita.ToUpper()


Case "VELOCE"


tmrAggiornamento.Interval = 1000


Case "MEDIA"


tmrAggiornamento.Interval = 500


Case "LENTA"


tmrAggiornamento.Interval = 200


End Select


'rilevo il colore di sfondo


Select Case m_Opzioni.Colore_Sfondo.ToUpper()


Case "BLU"


Me.BackColor = Color.Blue


Case "VERDE"


Me.BackColor = Color.Green


Case "ROSSO"


Me.BackColor = Color.Red


End Select



'Abilito il timer


tmrAggiornamento.Enabled = True


C#


//oggetto per la creazione grafica


this.m_Graphics = this.CreateGraphics();



//rilevo le opzioni


m_Opzioni.CaricaOpzioni();


PictureBox1.ImageLocation = m_Opzioni.Immagine;



//imposto il tempo


switch (m_Opzioni.Velocita.ToUpper())


{


case "VELOCE":


tmrAggiornamento.Interval = 1000;


break;


case "MEDIA":


tmrAggiornamento.Interval = 500;


break;


case "LENTA":


tmrAggiornamento.Interval = 200;


break;


}


//rilevo il colore di sfondo


switch (m_Opzioni.Colore_Sfondo.ToUpper())


{


case "BLU":


this.BackColor = Color.Blue;


break;


case "VERDE":


this.BackColor = Color.Green;


break;


case "ROSSO":


this.BackColor = Color.Red;


break;


}


//Abilito il timer


tmrAggiornamento.Enabled = true;



Nell’evento tick del controllo timer verrà richiamata la funzione Visualizzare, che avrà il compito di visualizzare l'immagine, con le impostazioni effettuate.

Di seguito si riporta il codice dell’evento tick del controllo timer.



VB.Net


Private Sub tmrAggiornamento_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrAggiornamento.Tick


Visualizza()


End Sub



C#


private void tmrAggiornamento_Tick(object sender, EventArgs e)


{


Visualizza();


}




Quando si sposta il mouse oppure si digita un suo pulsante, occorre chiudere il nostro applicativo, tramite gli eventi mousemove e mouse down della nostra form, possiamo controllare tale situazione per chiudere il programma.

Di seguito si riporta il frammento di codice per l’evento mousemove:


VB.Net


Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove


If Not m_Attivo Then


Me.m_MousePosizione = New Point(e.X, e.Y)


m_Attivo = True


Else


If Math.Abs(e.X - Me.m_MousePosizione.X) > 10 Or _


Math.Abs(e.Y - Me.m_MousePosizione.Y) > 10 Then


'Esco dal programma


Application.Exit()


End If


End If


End Sub


C#


private void Form1_MouseMove(object sender, MouseEventArgs e)


{


if (!m_Attivo)


{


this.m_MousePosizione = new Point(e.X, e.Y);


m_Attivo = true;


}


else


{


if (Math.Abs(e.X - this.m_MousePosizione.X) > 10 && Math.Abs(e.Y - this.m_MousePosizione.Y) > 10)


{


//Esco dal programma


Application.Exit();


}


}


}




Mentre qui di seguito si riporta il frammento di codice per l’evento MouseDown:


VB.Net


Private Sub Form1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown


Application.Exit()


End Sub



C#


private void Form1_MouseDown(object sender, MouseEventArgs e)


{


Application.Exit();


}


La funzione visualizza, avrà il compito di impostare le coordinate, o meglio la posizione della picturebox in varie parti dello schermo. Tramite la classe random, impostiamo un numero causale relativo alle coordinate.


Di seguito si riporta lo script per la funzione Visualizza.


VB.Net


Private Sub Visualizza()


' Dimensione della form


Dim maxX As Integer = Me.Width


Dim maxY As Integer = Me.Height


' Coordinate random dinamiche


Dim x1, x2, y1, y2 As Integer




'Genero il numero delle coordinate


x1 = m_Random.Next(0, maxX)


x2 = m_Random.Next(0, maxX)



y1 = m_Random.Next(0, maxY)


y2 = m_Random.Next(0, maxY)





'imposto le coordinate


If y1 < 500 Then y1 = 400


PictureBox1.Top = y1 - PictureBox1.Height


If x1 < 400 Then x1 = 400


PictureBox1.Left = x1 - PictureBox1.Width



End Sub


C#


private void Visualizza()


{


//Dimensione della form


Int32 maxX = this.Width;


Int32 maxY = this.Height;


// Coordinate random dinamiche


Int32 x1, x2, y1, y2;




//Genero il numero delle coordinate


x1 = m_Random.Next(0, maxX);


x2 = m_Random.Next(0, maxX);



y1 = m_Random.Next(0, maxY);


y2 = m_Random.Next(0, maxY);





//imposto le coordinate


if (y1 < 500)


y1 = 400;


PictureBox1.Top = y1 - PictureBox1.Height;


if (x1 < 400)


x1 = 400;


PictureBox1.Left = x1 - PictureBox1.Width;



}


Impostazioni e test del nostro salva schermo.

A questo punto non ci resta che testare il nostro salva schermo, compiliamo in modalità realese, se volete fare il debug, lasciate modalità debug.

Nelle proprietà del progetto, impostate il progetto di avvio, con il metodo main. Inoltre per il linguaggio VB.Net, impostate per la scheda “compile” compilazione, La voce implicit conversion e late binding call could fail at run time a none.

Mentre nella finestra assembly information (tramite il pulsante con la scritta "Assembly Information") spuntate il checkbox quello relativo a make assembly com-visible.

Dopo aver compilato il progetto, rinominate il file exe in .scr e copiatelo nella cartella C:\WINDOWS\system32 (qualora il sistema operativo è installato in tale unità).

Aprire la finestra delle proprietà dello schermo, nel tab Screen Saver, selezionate dall’elenco dei salva schermo, il vostro salva schermo appena creato, digitate il pulsante prova, per verificare le corrette impostazioni.

Conclusioni:

In questo articolo si è visto come creare un semplice salva schermo, che visualizza un immagine in diverse posizione dello schermo. Questo articolo ha fornito al lettore le basi per la creazione di un salva schermo, naturalmente si può ampliare, migliorare con effetti avanzati.

Tramite la parola download è possibile scaricare il file di esempio utilizzato in questo articolo.

Download