Smart Client Software Factory documentazione

Smart Client Software Factory No Comments »

In queste settimane di stage/lavoro ho approfondito la Smart Client Software Factory in linguaggio C# con interessamenti sull’OutlookBar. In giro per la rete non c’è molto materiale su cui studiare, quello che c’è ovviamente è in inglese. Quindi la migliore fonte di informazione è la documentazione ufficiale. Mi sta frullando per la testa di scrivere un piccolo tutorial sull’utilizzo essenziale della Smart Client Software Factory con OutlookBar.
Allora cominciamo!

Come primo passo scaricatevi la Smart Client Software Factory - May 2007 qui. Attenzione, è necessario avere installato il framework 3.o, quindi se ancora non c’è sul vostro pc installatelo!

Creare file ZIP con C#

C# 1 Comment »

Prossimamente saranno dedicati dei posts alla gestione dei files, mio oggetto di studio degli ultimi giorni. Oggi invece voglio parlare dell’utilizzo dei files ZIP. In C# come si fa a creare o a leggere un file ZIP? Sembra che sia necessaria una libreria esterna che si trova qui: #ziplib. Esistono delle dll per ogni versione del framework. Io utilizzo la 2.0. Dopo aver aggiunto il riferimento alla libreria possiamo utilzzarla come meglio ci pare. Per l’occazione ho sviluppato un progettino elementare, composto da: 2 textbox, una per il path della directory da zippare e un’altra con il path del file di destinazione; un bottone per generare tutta la procedura di zip e un label da utilizzare per segnalare eventuali errori. Ecco il source code dell’evento click del bottone.

private void btnZip_Click(object sender, EventArgs e)
        {
            String dir = txbDirectory.Text;
            if ( !Directory.Exists(dir))
                lblError.Text = “La Directory “ +  dir + ” non esiste”;
            
            try
             {
                string[] filenames = Directory.GetFiles(dir);
                string Destinazione = txbDestination.Text;
                using (ZipOutputStream s = new ZipOutputStream(File.Create(Destinazione)))
                {
                    s.SetLevel(0);
                    byte[] buffer = new byte[4096];
                    foreach (string file in filenames)
                    {
                        ZipEntry entry = new ZipEntry(Path.GetFileName(file));
 
                        // Could also use the last write time or similar for the file.
                        entry.DateTime = DateTime.Now;
                        s.PutNextEntry(entry);
                        
                        using (FileStream fs = File.OpenRead(file))
                        {
                            // Using a fixed size buffer here makes no noticeable difference for output
                            // but keeps a lid on memory usage.
                            int sourceBytes;
                            do
                            {
                                sourceBytes = fs.Read(buffer, 0, buffer.Length);
                                s.Write(buffer, 0, sourceBytes);
                            } while (sourceBytes > 0);
                        }                  
                    }
                    s.Finish();
                    s.Close();
                    lblError.Text = “Zip creato”;
                }
            }
            catch
           {
                lblError.Text = “Errore nella procedura ZIP”;
           }
        }
    }
 

Primo controllo da effettuare: verificare l’esistenza della directory da zippare, dopo di che si procede.
Nota importante: il file di output sono riuscito ad aprirlo col gestore delle cartelle compresse di Windows, invece con WinRar riesco solo ad aprirlo e guardarci dentro ma non ad estrarre i files.

Applicazione multilingue C#

C# 1 Comment »

Riprendendo il post precedente, dove ho tradotto l’UI di una Windows Form, continuo a trattare la traduzione di un’applicazione. Dopo aver tradotto la UI grazie alle proprietà Localizable e Language, resta da tradurre tutta quella parte di codice non visibile direttamente nelle UI, per esempio stringhe di alert. Per fare questo sono necessari diversi passi. Per prima cosa creiamo due file di risorse (aggiungi nuovo elemento -> file di risorse) .resx chiamati rispettivamente Vocabularyen-US.resx e Vocabularyit-IT.resx. Questi files rappresenteranno i nostri vocabolari. In Visual Studio 2005, cliccando su uno dei due, si nota che ognuno di essi è composta da accoppiamenti NOME - VALORE - COMMENTO. In pratica questi file di risorsa rappresenteranno i nostri vocabolari.

Facciamo un esempio pratico:
Inseriamo nel vocabolario italiano la seguente coppia NOME - VALORE: GREETING - CIAO.
Inseriamo nel vocabolario inglese la seguente coppia NOME - VALORE: GREETING - HELLO.

Ora passiamo al codice. Nel codice di una nostra WF, ipotizziamo di avere un elemento button ed uno label. Vogliamo che il testo del label ci faccia apparire il saluto nella nostra lingua (lingua del sistema operativo in uso).

System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly();
string cultureName = Thread.CurrentThread.CurrentUICulture.Name;
ResourceManager resMan = new ResourceManager("MultilanguageProject.Vocabulary" + cultureName, myAssembly);
string msg = resMan.GetString("GREETING");
label1.text = msg;

Ecco fatto! Si utilizza il ResourceManger per accedere alla nostra risorsa Vocabulary contenuta nel progetto MultilanguageProject. Il nome Vocabulary viene concatenato al codice della lingua del SO: it-IT o en-US.
In questo modo si utilizza molto elegantemente il codice, evitando ad esempio di utilizzare database per ogni lingua.

Tradurre con l’IDE una Windows Form

C# No Comments »

Durante la scrittura di una piccola applicazione mi è balenata questa idea: se un cliente o chiunque altro volesse la nostra applicazione in un altra lingua? Qual’è il sistema migliore per fare ciò?
L’IDE ci da una mano. Creiamo una semplice Windows Form con controlli come buttons, labels ecc ecc. Scriviamo i rispettivi text di questi controlli in lingua inglese. Come fare per tradurre la nostra UI (User Interface) in Italiano? Nelle proprietà del form, nel gruppo “Progettazione” va impostata la proprietà Localizable a true. Progettazione

Fatto questo clicchiamo sulla proprietà Language e selezioniamo la lingua in cui vogliamo tradurre la nostra interfaccia grafica, nel nostro caso Italiano. Da questo momento in poi possiamo cominciare a tradurre liberamente tutto quello che nella UI abbiamo scritto in Inglese a design-time. Switchando nella proprietà language tra Italiano e quella Predefinita vedremo cambiare la lingua. Se facciamo il debug dell’applicazione, come per magia la nostra UI ci apparirà in italiano, questo perchè state su un sistema operativo in Italiano!
Tutto il codice è contenuto nella InitializeComponent() della WF, generato dall’IDE di Visual Studio

WP Theme & Icons by N.Design Studio and modified by AntFerr
Entries RSS Comments RSS Login