Informatica Medica
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Informatica</strong> <strong>Medica</strong><br />
11. DataBinding – DataSet – Uso<br />
delle form<br />
Prof. Mauro Giacomini
Sommario<br />
• Tecniche di DataBinding<br />
• Introduzione<br />
• Concetti generali<br />
• DataBinding e navigazione del DataSet<br />
• BindingContext e relazioni tra DataTable<br />
• Esempi di uso<br />
• Uso delle form<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
DataBinding<br />
• DataBinding: processo che lega un controllo visuale<br />
a una struttura dati di un DataSet.<br />
• Tecnica usata per visualizzare in una form, in modo<br />
rapido ed efficace i contenuti di un DataSet (senza<br />
scrivere codice)<br />
• Consente la sincronizzazione automatica del<br />
contenuto di vari oggetti del form con le rispettive<br />
strutture di dati<br />
• Se controlli si collegano a strutture dati collegate<br />
con le relazioni anche i loro contenuti si aggiornano<br />
automaticamente<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
DataBinding semplice o<br />
complesso<br />
• Semplice: legame tra una singola<br />
informazione del DataSet e una particolare<br />
proprietà di un controllo (una colonna, una<br />
proprietà text)<br />
• Complesso: legame tra un controllo e una<br />
collection di dati contenuta in una struttura<br />
di DataSet<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
DataBinding di sola lettura o<br />
anche di scrittura<br />
• Sola lettura: legame per pura<br />
visualizzazione, i cambiamenti non sono<br />
riportati (almeno non in modo<br />
automatico) nel DataSet<br />
• Anche di scrittura: controllo –<br />
interfaccia di scambio dati fra form e<br />
DataSet<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
BindingContext (1)<br />
• Consente di mantenere la sincronizzazione fra le<br />
informazioni nei controlli e le collection dei dati<br />
• Currency: capacità del BindingContext di<br />
posizionare l’indice di ogni collection in<br />
corrispondenza dell’oggetto correntemente<br />
selezionato all’interno del DataSet.<br />
• Es: alcuni controlli TextBox sono collegati all’oggetto il cui<br />
indice è mantenuto dal BidingContext, se cambia questo<br />
indice tutti i controlli visualizzeranno i dati corrispondenti<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
BindingContext (2)<br />
• Dependency: capacità di mantenere le<br />
relazioni di dipendenza tra più collection.<br />
• Es: nel DataSet, due DataTable collegate da una<br />
DataRelation; il BidingContext fa si che gli<br />
oggetti collegati al DataTable figlio si aggiornino<br />
automaticamente se cambia l’oggetto<br />
selezionato nel DataTable padre.<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
Esempi di applicazioni (1)<br />
• Con TextBox (DataBinding semplice):<br />
• txtID.DataBindings.Add(“Text”,myDataSet.Tables(“Farmaci”),<br />
“Id_Farmaco”)<br />
• Con ComboBox (DataBinding complesso):<br />
• Fonte di dati:<br />
• Cmb_Tipi.DataSource=myDataSet.Tables(“Tipi_Farmaci”)<br />
• Campo da visualizzare:<br />
• Cmb_Tipi.DisplayMember= “Tipo_Farmaco”<br />
• Campo legato dal DataBinding:<br />
• Cmb_Tipi.ValueMember= “Id_Tipo_Farmaco”<br />
• DataBinding finale:<br />
• Cmb_Tipi.DataBindings.Add(“SelectedValue”,myDataSet.Tables(“Far<br />
maci”), “Id_Tipo_Farmaco”)<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
Esempi di applicazioni (2)<br />
• Per sincronizzare l’elemento selezionato nella lista<br />
con i dati degli altri controlli si deve scrivere del<br />
codice da eseguire quando cambia l’indice dell’item<br />
selezionato dalla lista:<br />
• L’indice della nuova posizione viene memorizzato<br />
• La posizione corrente all’interno del BindingContext è<br />
determinata valorizzando la proprietà position<br />
• Controllo di lettura solo sui controlli stessi<br />
• Per terminare la modifica va chiamato il metodo<br />
EndEdit relativo al DataRow individuato all’interno<br />
della DataTable dalla proprietà Position<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
Aspetti da modificare a mano<br />
• Definire i legami tra i controlli dei form<br />
e i dati del DataSet<br />
• Controllare che la navigazione tra i<br />
controlli del form garantisca la currency<br />
e la depency del BidingContext.<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
DataGrid<br />
• Consente di navigare all’interno di strutture<br />
complesse rispettando le gerarchie e le<br />
relazioni fra i diversi DataTable<br />
• Navigazione intuitiva con il metodo della<br />
crocetta<br />
• Si può anche bloccare ad una sola tabella<br />
con dichiarazioni esplicite (in questo caso<br />
conviene usare la datagrid view)<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
Colonne espressioni<br />
• Le colonne di un DataTable possono<br />
contenere anche valori dinamici, calcolati<br />
con formule<br />
• Formula: espressione valida scritta in<br />
sintassi di .NET<br />
• Il testo deve essere assegnato alla proprietà<br />
expression della colonna che conterrà il<br />
valore calcolato<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
Informazioni nelle colonne<br />
espressioni<br />
• Valori risultanti dal calcolo di dati<br />
contenuti in colonne della stessa tabella<br />
• Valori risultanti dall’aggregazione di<br />
valori contenuti in colonne di record<br />
diversi e di tabelle correlate<br />
• Risultati di operazioni di confronti logici<br />
fra dati contenuti nelle altre colonne<br />
della tabella<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
L’oggetto Form<br />
La parte fondamentale del disegno di<br />
una qualsiasi applicazione è la<br />
progettazione dell'interfaccia tra il<br />
computer e la persona che lo utilizza.<br />
I componenti fondamentali per la<br />
creazione dell'interfaccia sono i form<br />
e i controlli.<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
L’oggetto Form<br />
• Il form (letteralmente "forma", "immagine", ma in questo<br />
caso indica genericamente la "finestra" di Windows) è<br />
l'elemento centrale di ogni applicazione<br />
• Un form, infatti, costituisce la base dell'interfaccia utente:<br />
è in un form che vengono inseriti tutti gli altri controlli<br />
siano essi pulsanti, caselle di testo, timer, immagini, ecc.<br />
• Un form è prima di tutto un oggetto e, come tale, dispone<br />
di proprietà che ne definiscono l'aspetto, di metodi e di<br />
eventi che permettono di determinare, tra le altre cose,<br />
l'interazione con l'utente.<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
L’oggetto Form<br />
Proprietà fondamentali:<br />
• BorderStyle permette di definire l'aspetto del bordo<br />
della finestra. I valori che può assumere sono 7:<br />
None, Fixed Single, Fixed3D, Sizable, Fixed<br />
Dialog, Fixed ToolWindow e Sizable ToolWindow. I<br />
valori più usati sono Sizable (predefinito, vengono<br />
visualizzati tutti i pulsanti, di riduzione ad icona,<br />
ingrandimento e chiusura, nonché la barra del<br />
titolo) e Fixed Dialog (form a dimensione fissa,<br />
vengono visualizzati il pulsante di chiusura e la<br />
barra del titolo).<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
L’oggetto Form<br />
• Text permette di specificare la stringa da<br />
visualizzare nella barra del titolo del form.<br />
• Icon consente di selezionare l'icona che<br />
contraddistinguerà il form. Per inserire un'icona, è<br />
necessario utilizzare la finestra delle Proprietà e<br />
cliccare sul pulsante con i tre puntini che appare<br />
quando si seleziona la proprietà Icon: così facendo<br />
verrà mostrata la finestra di dialogo Carica icona,<br />
in cui selezionare il file dell'icona (estensione .ICO)<br />
desiderata.<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
L’oggetto Form<br />
Passiamo ora agli eventi più utilizzati, nell'ordine<br />
in cui vengono generati.<br />
• L’evento Initialize è il primo evento nella vita del<br />
form e si verifica non appena il codice fa<br />
riferimento al nome del form, prima ancora che<br />
vengano creati la finestra e i controlli<br />
• Nella procedura di risposta a questo evento<br />
viene normalmente inserito il codice di<br />
inizializzazione delle variabili del form<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
L’oggetto Form<br />
Quando si verifica l'evento Load, tutti i<br />
controlli inseriti nel form sono stati creati,<br />
anche se la finestra non viene ancora<br />
visualizzata; è questo, uno degli eventi più<br />
utilizzati, dal momento che di solito<br />
contiene il codice che si vuole venga<br />
eseguito quando si carica un form:<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
L’oggetto Form<br />
L'evento Resize viene generato<br />
immediatamente prima che il form diventi<br />
visibile ed ogni volta che la finestra viene<br />
ridimensionata, sia trascinando i suoi<br />
bordi, sia ingrandendola, riducendola ad<br />
icona e ripristinandola:<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
L’oggetto Form<br />
• Un altro evento potrebbe venire provocato prima che il form<br />
diventi pienamente funzionale: l’evento Paint, che non si<br />
verifica se viene impostata la proprietà AutoRedraw del form<br />
a True<br />
• Nella procedura di risposta all’evento Paint viene<br />
generalmente disegnata la grafica del form con metodi quali<br />
Print, Line, Circle, Point Cls e così via.<br />
• La procedura di evento Paint viene eseguita se il form deve<br />
essere aggiornato, quando l’utente ingrandisce il form o ne<br />
scopre nuove aree<br />
• Non si verifica se l’utente restringe il form<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
L’oggetto Form<br />
• L’evento Deactivate si verifica quando l’utente<br />
passa ad un altro form dell’applicazione. Il form<br />
riceve un evento Deactivate e riceve un altro<br />
evento Activated quando ottiene di nuovo lo stato<br />
attivo.<br />
• La stessa sequenza viene prodotta se viene resa<br />
temporaneamente invisibile un form impostando la<br />
sua proprietà Visible a False o chiamando il suo<br />
metodo Hide<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
L’oggetto Form<br />
L'evento FormClosing si verifica nel momento in cui<br />
un form sta per essere scaricato, cioè rimosso dalla<br />
memoria. Tale evento può essere utilizzato per<br />
impedire che la finestra venga effettivamente chiusa,<br />
al verificarsi di particolari situazioni, impostando il<br />
parametro Cancel dell'oggetto<br />
FormClosingEventArgs a True, invece l’evento<br />
FormClosed si verifica successivamente e può<br />
essere usato solo per liberare le risorse<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14
L’oggetto Form<br />
• Per rendere visibile un form, si deve richiamare il metodo<br />
Show<br />
• I form espongono una speciale proprietà: Controls,<br />
che restituisce una collection contenete tutti i controlli<br />
caricati sul form al momento.<br />
• Questa collection permette spesso di semplificare il<br />
codice nei moduli form ed è la chiave di alcune tecniche<br />
di programmazione che altrimenti sarebbero impossibili<br />
Inf. Med. - 11. DataBinding e<br />
DataSet - A.A. 2013/14