Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Utilizzando Visual Basic, funzioni API ed altri componenti ci si imbatte facilmente in diverse unità di misura quali i Twips, gli HiMetric, i Pixel o altro. Altre volte si ha un valore in una misura ed è necessario convertirlo in un'altra. Vedremo in questo HowTo come effettuare questo genere di conversioni con estrema semplicità.
Il form del nostro progetto di esempio si comporrà di quattro semplici controlli: due ListBoxposte ai bordi del form, di nome lstFormato1 e lstFormato2. In mezzo a queste sono presenti un CommandButton di nome cmdConverti
ed una TextBox di nome txtGrandezza. Abbiamo aggiunto anche
due Label descrittive con le Caption impostate a
Entrambe le ListBox conterranno le diverse unità di misura e saranno riempite con questi valori in fase di esecuzione. Ad ogni elemento inserito nelle ListBox sarà assegnata una costante indicativa l'unità di misura, mediante impostazione della proprietà ItemData. Vediamo il breve e semplice codice di questo progetto:
All'avvio del progetto dovranno essere riempite le due ListBox. Sarà pertanto utilizzato un ciclo eseguito due volte (riga 6). Alla riga 7 verrà estratta la prima o la seconda ListBox in funzione del valore della variabile intConta. La ListBox estratta sarà contenuta nella variabile oggetto ctlControllo. Ottenuto quindi un riferimento ad una ListBox, utilizziamo l'istruzione With per migliorare l'efficenza e semplificare la scrittura del codice di riempimento della ListBox. Alla riga 9 verrà innanzitutto svuotata la ListBox selezionata.
Alle righe 10-25 vengono inserite le varie unità di misura nella ListBox. Ogni unità di misura si compone di due righe: la descrizione e la costante nell'enumerazione ScaleModeConstants. La matrice ItemData degli oggetti ListBox consente infatti di assegnare un valore numerico ad ogni elemento della lista. La proprietà NewIndex invece recupera l'indice dell'ultimo elemento inserito in lista. La riga 26 seleziona il primo elemento della lista.
Nel momento in cui l'utente preme il pulsante cmdConverti dovrà essere effettuata la conversione tra l'unità di misura selezionata nella prima ListBox e quella scelta nella seconda ListBox. Alle righe 35 e 36 sono recuperate le costanti delle unità di misura contenute nelle matrici ItemData di ognuna delle ListBox. Così intFormato1 conterrà la costante rappresentativa la prima unità di misura ed intFormato2 conterrà la seconda costante. La conversione tra le due unità di misura è fatta alla riga 39 mediante l'utilizzo del metodo ScaleX del form. Il valore specificato è quello contenuto nella casella txtGrandezza e le unità di misura sono specificate nelle variabili intFormato1 ed intFormato2. Alle righe 37-40 viene costruita una stringa descrittiva del processo di conversione, che verrà memorizzata nella variabile strTesto, la quale verrà mostrata mediante una finestra di avviso alla riga 41.
La dimostrazione del funzionamento è semplicissima: basterà selezionare un'unità di misura nella ListBox a sinistra, un'altra unità di misura nella ListBox di destra, immettere un valore nella casella di testo in basso e premere il pulsante "Converti Grandezze". Apparirà un avviso informativo come mostrato nelle figure in basso.
|
Il processo di conversione tra le unità di misura è davvero semplice e non presenta alcuna problematica particolare. Fibia
FBI
|
Torna all'indice degli HowTo |