domenica 22 febbraio 2009

Ho fatto una sicura pazzia - ho preso il mio primo NetBook

La settimana scorsa ho dovuto aspettare delle ore la riparazione della mia auto da un elettrauto dove l'avevo portata.

Avevo delle cose da consegnare prima di mezzogiorno, in previsione di questo, non potendo portarmi dietro il normale portatile ho deciso di prendere un NetBook e completare il mio lavoro.

Il NetBook che ho preso è un Acer Aspire One D150-1Bw

Principali caratteristiche tecniche:

Intel Atom ™ processor N280
1GB Ram
160GB HDD
XP Home SP3
LCD 10'
7-8 Ore di Autonomia
WLan
Ethernet
Porta Video
3USB 2.0
Mic/Camera integrati

Ci sono purtroppo dei software preinstallati che probabilmente
Try Office 2007 (a me non interessa, non mi serve office su questo)
MCafee (che scadenza ha? ho avuto delle brutte esperienze con questo tendenzialmente lo disinstallereei).

La prima impressione è stata buona, ho installato velocemente Microsoft Dynamics NAV e ho potuto completare il mio lavoro.

Conclusione: mi serve veramente un NetBook ?, ancora non ho deciso :)

Powered with Window Live Writer

sabato 14 febbraio 2009

Una Semplice Gestione di una Rubrica su File di Testo

Ho preparato questo piccolo esempio di una gestione "non professionale" di una rubrica di contatti con lo scopo di mostrare l'utilizzo di StreamReader, StreamWriter, Using, ListView, OpenFileDialog, SaveFileDialog

Descrizione dell'applicazione

Si tratta di una gestione di rubrica telefonica / contatti che si appoggia su un normale file di testo.

Sul controllo ToolStrip sono  inseriti alcuni bottoni per il caricamento da file, il salvataggio su file, l'aggiunta di nuovi elementi alla ListView, la cancellazione di un elemento dalla ListView, la modifica di un elemento della ListView.

La gestione è consentita dal controllo ListView e da una serie di TextBox, ListView è generato a partire dal file di testo, le TextBox sono aggiornate nell'evento Listview.SelectIndexChanged.

Struttura del file di testo

Il file si prevede strutturato nel seguente modo:

  • Righe separate da un separatore di riga (Environment.NewLine) (0x0D + 0x0A che sono i caratteri previsti per i files ms-dos/windows)
  • Colonne della riga senza delimitatori separate dal carattere Tab (0x09)

Lettura del file di testo

Per la lettura è stato utilizzato un oggetto di tipo StreamReader.

Sulla prima riga del file di testo l'intestazione della colonna che andrà ad alimentare la collection ListBox.Columns, nelle righe successive tutti i dati dei contatti gestiti.

Alla pressione del bottone "carica" è utilizzato un oggetto di tipo OpenFileDialog, con ok si attiva il caricamento nella ListView.

Ciascun Item della collection Items è contiene a sua volta una collection di SubItems, semplificando si può descrivere come array che contiene tanti elementi quante sono le colonne presenti.

Scrittura del file di testo

Alla pressione del bottone "salva" è creato un oggetto di tipo SaveFileDialog, gli elementi della ListView sono riversati nel file di testo prescelto.

E' ovvio che sono salvate per prima le intestazioni delle colonne (collection Columns della ListView) e poi tutti gli items (uno per riga) e subitems (uno per colonna).

Sviluppi possibili

Direi che uno sviluppo possibile sia il posizionamento "da codice" degli elementi labels e  TextBox con il relativo collegamento dinamico in modo tale da consentire l'apertura e la gestione di un altro file di testo con intestazioni e/o campi diversi da quelli esemplificati.

L'esempio realizzato con Visual Basic
L'esempio realizzato con C#

Powered with Window Live Writer

giovedì 12 febbraio 2009

Caricamento di caratteri accentati da file di testo

Nel forum di VBT&T un thread dedicato all'impossibilità di caricare i caratteri accentati da file di testo.

Impossibile, mi sono detto, infatti, utilizzando l'encode giusto la cosa è semplicissima

Il progetto VB.NET


Powered with Window Live Writer

lunedì 9 febbraio 2009

Gestire il DrawItem degli elementi dei ListBox

Mentre mi documentavo per il post precedente ho trovato lo spunto per una operazione analoga a quella fatta nel mio post precedente.

Si tratta, anche qui, di ridisegnare il background dell'elemento selezionato.

Per poter compiere l'operazione è necessario impostare il DrawMode della ListBox su OwnerDrawFixed
Successivamente è necessario intercettare e gestire l'evento DrawItem
Ho sviluppato due esempi:
Esempio con C#
Esempio con VB.NET

domenica 8 febbraio 2009

Personalizzare l'aspetto delle ColumHeader della ListView

Per personalizzare l'aspetto della ColumHeader sulla classe/controllo ListView è necessario (almeno per la mia soluzione) impostare la proprietà ListView.OwnerDraw a True.

 

Questa cosa (OwnerDraw a True) comporta la necessità di gestire appunto il disegno del controllo e dei suoi elementi.

E' necessario pertanto sottoscrivere e gestire due eventi entrambi legati alla ListView

  1. ListView.DrawColumnHeader
  2. ListView.DrawSubItem

Riservati rispettivamente al disegno della ColumHeader e del Subitem

Sottoscrizione evento:

C#
listView1.DrawColumnHeader += new DrawListViewColumnHeaderEventHandler(lv_DrawColumnHeader);

listView1.DrawSubItem += new DrawListViewSubItemEventHandler(lv_DrawSubItem);

VB.NET

AddHandler listView1.DrawColumnHeader, New DrawListViewColumnHeaderEventHandler(AddressOf lv_DrawColumnHeader)

AddHandler listView1.DrawSubItem, New DrawListViewSubItemEventHandler(AddressOf lv_DrawSubItem)

Nel gestore dell'evento si provvede al "Draw" dell'oggetto interessato.

C#

void lv_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)

{

       if ((e.ItemState & ListViewItemStates.Focused) > 0)

      {

           e.Graphics.FillRectangle(SystemBrushes.Highlight, e.Bounds);

           e.Graphics.DrawString(e.Item.SubItems[e.ColumnIndex].Text, listView1.Font, SystemBrushes.HighlightText, e.Bounds);

      }

      else

      {

             e.DrawBackground();

             e.DrawText();

      }

}

 

void lv_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)

{

      Brush brsh;

      switch (e.ColumnIndex) {

         case 0:

             brsh = Brushes.Gold;

             break;

         case 1:

             brsh = Brushes.AliceBlue;

             break;

         case 2:

             brsh = Brushes.YellowGreen;

             break;

         default:

             brsh = Brushes.Azure;

             break;

        }

        e.Graphics.FillRectangle(brsh, e.Bounds);

        e.DrawText();

 }  

Il progetto di esempio è stato realizzato con SharpDevelop, il progetto è comunque compatibile con qualsiasi versione di Visual Studio 2008, non facendo uso di classi e metodi introdotti con il Framework 3 non ci dovrebbero essere problemi anche con Visual Studio 2005.

Il progetto di esempio realizzato con VB.NET
Il progetto di esempio realizzato con C# 

Powerered with Window Live Writer

sabato 7 febbraio 2009

Installazione di una piccola LAN domestica su rete elettrica

Ho voluto provare ad installare alcuni punti di accesso su rete elettrica.

Il dispositivi che ho preso sono della D-LINK

Sono venduti a coppie di 2 in un kit denominato DHP-301, per l'acquisto ho speso circa 100 euro per kit

L'unico prodotto concorrente che conosco è quello della Netgear denominato "Powerline Hd" del tutto analogo sia in termini di prezzo che di prestazioni.

Gli adattatori sono un pò ingombranti con un solo attacco RJ45 per unità.

L'installazione è veramente "plug & play", ciascun kit è accompagnato da un cd di installazione e da 2 cavi di 1,5 metri ciascuno, cavi che ho trovato leggermente corti per i miei gusti, la misura ideale a mio avviso è di almeno il doppio.

Una volta collegati alla presa di corrente gli adattatori si sincronizzano tra di loro, tra le impostazioni di sicurezza è possibile (consigliato) impostare un nuovo nome che costituisce anche la password per l'accesso alla rete elettrica, caso: se il mio vicino compra anche lui lo stesso dispositivo non dovrebbe poter accedere alla mia rete locale.

La mia configurazione è di 3 punti di accesso, uno per il router e gli altri 3 (uno mi avanza) per i miei 2 pc con Windows 2008 e Fedora 9.

Per ora funziona egregiamente.

Powerered with Window Live Writer

mercoledì 4 febbraio 2009

Archivio Sportelli Bancari - Elenco Abi Cab Aggiornato a Fine Gennaio 2009

L'archivio sportelli bancari elenco Abi Cab aggiornato a fine gennaio 2009 è disponibile per lo scaricamento a questo indirizzo:
Alcune informazioni sui files:
- campi separati da tabulazione hex: 09
- righe separate dal terminatore di riga windows hex: 0d0a
- intestazione colonne sulla prima riga
Il file TabAbi contiene i dati relativi alle banche.
Il file TabAbiCab contiene le informazioni relative agli sportelli
Nel file TabAbi e TabAbiCab è presente il campo "Aggiornamento" che evidenzia la data di riferimento di validità dei dati.
Tutte le righe di TabAbiCab che NON contengono la data più recente sono da considerarsi relative a sportelli non più attivi o assorbiti da altre banche, tali sportelli sono presenti solo come log dei dati storici, ne è sconsigliato l'utilizzo per nuove emissioni di flussi di comunicazione con le banche.
Questo archivio è da considerarsi frutto di una rielaborazione "amatoriale" dei dati degli sportelli bancari reperibili in rete l'unico mio apporto è l'aggiunta della data di ultima importazione in modo tale da costituire un archivio comprendente anche i dati di banche e sportelli non più attivi.
Non si rivendica nessun diritto riguardo al contenuto del file, l'utilizzatore ne può fare ciò che vuole senza contattarmi nè informarmi della cosa, preferirei inoltre non essere neanche citato come fonte in eventuali successive redistribuzioni.
Se si vuole una garanzia circa la correttezza dei dati e/o una qualsiasi licenza il mio consiglio è di NON utilizzare il presente archivio e di rivolgersi direttamente alla propria banca chiedendo di avere in forma ufficiale il file degli sportelli bancari.
I ringraziamenti sono comunque graditi.
Se sentite il malsano bisogno di farmi pervenire una somma di denaro, scegliete l'organizzazione umanitaria a voi più gradita e fate a questa il vostro pagamento.

Powerered with Window Live Write