![]() |
![]() Sincronizza Indice |
![]() Scarica il progetto |
![]() Testo dell'articolo |
![]() Stampa l'articolo |
Durante tutto il corso intermedio ci occuperemo di sviluppare passo dopo passo un progetto di un software per l'archiviazione dei CD musicali. Servirà per imparare con la pratica l'utilizzo dei controlli e delle prime istruzioni di Visual Basic. Prima di iniziare a disporre controlli sulla superficie del primo form e scrivere il relativo codice ci occuperemo di impostare le caratteristiche di base del form.
Inizialmente non faremo uso di controlli esterni anzi sfrutteremo i controlli
intrinseci (Thunder) di Visual
Basic ma, prima ancora di occuparci di essi, regoleremo alcune proprietà
Nella maggioranza dei casi il valore da assegnare a questa proprietà sarà 1 = vbFixedSingle se il nostro form non dovrà essere ridimensionabile oppure 2 = vbSizable se esso dovrà essere ridimensionabile. L'impostazione di uno di questi due valori determinerà infatti il cambiamento automatico del puntatore del mouse quando esso si posa su uno dei bordi del form, in modo da permetterne il ridimensionamento tramite mouse.
L'impostazione della proprietà BorderStyle sul valore 2 = vbSizable
determina anche la presenza iniziale dei pulsanti sulla barra del
titolo. Iniziale perché se impostassimo questa proprietà
ai valori 1 o 2 sarà comunque possibile regolare la presenza dei
pulsanti di riduzione ad icona L'impostazione al valore 2 permette all'utente il ridimensionamento del
form ma esso sarebbe inutile se il programmatore non provvedesse una gestione
automatica dei controlli sul form in modo da ingrandirli o ridurli in
funzione dello spazio libero.
Per operazioni di scrittura si intende l'utilizzo dell'istruzione Print per scrivere direttamente sulla superficie del form e non all'interno di qualche controllo. Il vantaggio di impostare questa proprietà subito sta nel fatto che tutti i controlli che verranno inseriti sul form successivamente erediteranno il valore di questa proprietà. Personalmente detesto il carattere di default MS Sans Serif e tendo ad utilizzare quasi sempre il più moderno Tahoma. Impostando sin da subito il carattere Tahoma tutti i controlli che aggiungeremo in seguito avranno come font di default il Tahoma scelto in precedenza. Si tratta ovviamente di scelte personali, ma anche per questa volta seguirò il mio personalissimo gusto utilizzando appunto Tahoma.
Nel nostro esempio utilizzeremo un'icona a forma di CD in due risoluzioni: 16x16 pixel la prima e 32x32 pixel la seconda. Le due immagini sono molto simili; la scelta di due icone sta nel fatto che se avessimo utilizzato un'icona troppo piccola oppure una troppo grande al momento della visualizzazione la resa grafica sarebbe stata davvero scadente... provare per credere. L'icona scelta è scaricabile cliccando sull'icona a fianco!
Viceversa se i forms sono mostrati in modalità non modale appariranno sulla barra delle applicazioni più icone ognuna delle quali rappresentativa del suo form.
Nelle due figure la barra delle applicazioni rappresenta lo stesso numero di applicazioni aperte ma mentre nella prima figura il nostro programma (quello con l'icona a forma di CD) occupa solo una posizione con una sola icona, nel secondo caso le icone sono addirittura 5, una per ogni form mostrato in modalità non modale. Nella maggioranza dei casi la visualizzazione di un form secondario viene
fatta in modalità modale ovvero bloccante il form chiamante e pertanto
non sarà necessario preoccuparsi di disabilitare la proprietà
ShowInTaskBar.
Viene utilizzata per modificare lo stato della finestra ad esempio richiamare la riduzione ad icona durante certe circostanze. In quei form a grandezza variabile (vedi la proprietà BorderStyle)
prima di ricalcolare la posizione che dovranno assumere i controlli è
necessario verificare se la finestra non sia ridotta ad icona tramite
la lettura di questa proprietà. Vediamo brevemente come apparirà la nostra interfaccia utente al fine di semplificare la comprensione del problema.
Il form è diviso in due sezioni verticali: quella a sinistra consente di effettuare le ricerche dei brani mediante un semplice meccanismo di filtro per nome del brano, nome dell'autore o titolo del CD. La sezione a destra, invece, contiene i dati informativi sul brano scelto. Mediante i pulsanti che si trovano sotto di questa sarà possibile aggiungere un brano all'archivio, eliminare quello appena scelto o modificarne i dati. Questo è ciò che proveremo a sviluppare nelle prossime lezioni, ma prima di iniziare ad implementarlo è fondamentale affrontare alcune scelte che determineranno il proseguimento dello sviluppo. In realtà non siamo ancora in grado di scegliere con precisione la soluzione migliore; pertanto ci limiteremo ad analizzare le soluzioni più semplici e scegliere quella che sembra offrire le caratteristiche migliori.
La prima decisione riguarda naturalmente l'archivio! Questa metodologia di risoluzione dei problemi è nettamente sbagliata
e superficiale. È errore molto comune mettere subito le mani
in pasta nel progetto. Ci serve un archivio? Beh, tutti quelli accennati precedentemente lo
sono. Abbiamo già deciso (vedi lezione precedente) che il nostro programma sarà utilizzato al massimo da un solo utente per volta (monoutente), ovviamente non sarà connesso in Internet e conterrà pochi dati ovvero non più di 10.000 brani. Soltanto dopo aver fatto queste scelte potremo iniziare a porci il problema della scelta dell'archivio, scelta che verrà fatta in funzione delle decisioni prese e mai viceversa. Essendo i requisiti del programma molto esigui sarà facile effettuare
la scelta dell'archivio da utilizzare. Propenderemo per un semplice file
binario con campi di larghezza fissa; sebbene l'utilizzo di un file di
testo semplice sarebbe stato sicuramente più semplice le operazioni
di ricerca dei dati sarebbero state più complesse e l'utilizzo
delle note (vedi figura 6) avrebbe complicato di molto le cose.
|
Nella prossima lezione procederemo con
lo sviluppo del progetto fin qui analizzato utilizzando come archivio un
file binario con record a lunghezza fissa.
Fibia
FBI
|
![]() |
Vai
alla terza lezione ![]() |