- Learn
- Guida Delphi
- Componenti per la manipolazione dei dati (Data-Aware)
Componenti per la manipolazione dei dati (Data-Aware)
- di Carlo Marona
Dopo aver trattato i componenti per l’accesso alle sorgenti di dati, passiamo ora a vedere i componenti che ci permettono di interagire in maniera visuale con i dati provenienti da queste sorgenti dati. Come visibile nell’immagine qui sotto, questi componenti sono raccolti nella pagina “Data Controls” della Component Palette.

Questa pagina ci mette a disposizione una griglia, una barra per la navigazione all’interno dei nostri datasets, una etichetta collegata direttamente ad un campo di un dataset, una casella di edit, un memo, un componente immagine da collegare direttamente al campo del nostro dataset per visualizzare l’immagine in esso contenuta, una casella combinata, una lista, una casella spuntabile per valori booleani, un gruppo di componenti per selezioni esclusive, una casella di lookup, una lista di lookup, un componente per formato RTF, una griglia di controllo, una componente per la visualizzazione dei dati in forma grafica (Torte, Istogrammi, …). Si tratta di componenti Data-Aware, ovvero componenti che si collegano direttamente alla sorgente di dati e che automaticamente gestiscono la visualizzazione, la modifica. Questi componenti vengono collegati al dataset indirettamente, ovvero vengono collegati ad un datasource che fa riferimento al dataset interessato.
Come per gli oggetti per l’accesso alle sorgenti di dati, daremo uno sguardo alle proprietà e metodi principali e più utilizzati di questi componenti. Segue un elenco dei nomi dei componenti e le loro rispettive classi: DBGrid (tdBGrid), DBNavigator (tdBNavigator), DBLabel (tdBLabel), DBEdit (tdBEdit), DBMemo (tdBMemo), DBListBox (tdBListBox), DBComboBox (tdBComboBox), DBCheckBox (tdBCheckBox), DBRadioGroup (tdBRadioGroup), DBLookupListBox (tdBLookupListBox), DBLookupComboBox (tdBLookupComboBox), DBRichEdit (tdBRichEdit), DBCtrlGrid (tdBCtrlGrid), DBChart (tdBChart).
tdBGrid
L’oggetto DBGrid permette di visualizzare e manipolare i records di un dataset in una griglia tipo quella utilizzata da programmi come MS Excel. Questo oggetto deriva da TCustomDBGrid che a sua volta deriva da TCustomGrid. tratteremo solamente le proprietà ed i metodi relativi all’oggetto TCustomDBGrid poichè la classe tdBGrid non aggiunge alcun metodo o proprietà, ma espone solamente i metodi della classe da cui deriva, appunto TCustomDBGrid.
Ecco l’elenco delle proprietà dell’oggetto DBGrid: Columns, DataSource, Defaultdrawing, FieldCount, Fields, Options, ReadOnly, SelectedRows, Titlefont, borderStyle, FixedColor.
La proprietà Columns, di tipo tdBGridColumns, permette di definire le colonne che verranno visualizzate nella griglia. Questa proprietà è un elenco di oggetti TColumn che definiscono le proprietà delle varie colonne che andranno a formare la tabella, a partire dal campo del dataset a cui si riferisce la colonna, al colore del titolo, l’allineamento del testo etc… Per modificare la proprietà Columns, è disponibile un editor di proprietà, avviabile, come sempre, attraverso il bottone con i tre puntini nel Object Inspector. Se non vengono definite delle colonne per la griglia, verranno automaticamente visualizzate tante colonne quanti sono i campi visibili del dataset.
La proprietà DataSource è quella che permette di impostare il riferimento all’oggetto DataSource che a sua volta si riferisce al dataset (table, Query).
Defaultdrawing indica se le celle della griglia verranno disegnate automaticamente oppure il loro disegno verrà personalizzato attraverso i gestori di eventi OnDrawColumnCell o OnDrawDataCell. Se impostato su true l’oggetto griglia si occuperà direttamente del disegno dei dati nella cella, dal colore di sfondo, al font, al valore dei dati, se impostato su false, verrà gestito dall’oggetto griglia solamente il disegno dello sfondo, il disegno dei valori dei dati è demandato ai gestori di eventi OnDrawColumnCell o OnDrawDataCell.
FieldCount è una proprietà che indica il nome dei campi, ovvero delle colonne, visualizzate nella griglia.
La proprietà Fields permette di accedere in forma indicizzata i campi corrispondenti alle colonne visualizzate, come per la proprietà Fields dell’oggetto table.
Attraverso la proprietà Options è possibile definire alcune caratteristiche funzionali e grafiche della griglia. Alcune di esse sono la possibilità di editare il contenuto della griglia, la visualizzazione di un indicatore di riga, la visualizzazione dei titoli al disopra delle colonne, la possibilità di selezionare un’intera riga della griglia, effettuare una selezione su più righe, richiedere la conferma prima di eliminare un record dal dataset.
I valori disponibili per la proprietà sono: dgEditing, dgAlwaysShowEditor, dgAlwaysShowEditor, dgRowSelect, dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgMultiSelect.
La proprietà ReadOnly, è autoesplicativa, ovvero permette di impostare in sola lettura il contenuto della griglia così da impedirne la modifica.
SelectedRows, riporta un elenco di Bookmark (Segnalibri che vengono utilizzati per segnare una posizione come selezionata all’interno della griglia) corrispondenti alle posizioni selezionate nella griglia.
La proprietà Titlefont permette di impostare il font per le celle contenenti i titoli delle colonne.
Attraverso la proprietà borderStyle, si può definire il tipo di bordo disegnato intorno alla griglia.
In ultima, la proprietà FixedColor definisce il colore delle celle della griglia che rimangono fisse durante lo scorrimento della stessa.
Dopo aver visto le proprietà passiamo ora ai metodi. Eccone l’elenco:
DefaultdrawColumnCell, DefaultdrawDataCell.
DefaultdrawColumnCell viene utilizzato all’interno di un gestore di evento OnDrawColumnCell per il disegno del testo. Il risultato della chiamata a DeafulDrawColumnCell è lo stesso che impostare la proprietà Defaultdrawing a true, tranne per il fatto che che non viene disegnato il rettangolo di fuoco della cella.
DefaultdrawDataCell è l’equivalente di DefaultdrawColumnCell tranne per il fatto che in questo non vi è un riferimento alla colonna a cui appartiene la cella.
tdBNavigator
Il componente DBNavigator, è un componente visuale che permette di facilitare lo spostamento all’interno di dataset mettendo a disposizione una barra contenente dei pulsanti corrispondenti alle tipiche funzioni di spostamento. Ci si può spostare in avanti, in dietro, alla prima posizione, all’ultima, aggiungere una nuova posizione, eliminare quella corrente, annullare le modifiche apportate ai dati.
Le proprietà di DBNavigator sono accessibili quasi completamente dall’Object Inspector a design-time e sono: ConfirmDelete, DataSource, Flat, Hints, VisibleButtons.
ConfirmDelete permette di specificare se verrà richiesta la conferma per l’eliminazione del record oppure no. Impostando questa proprietà a true, verrà presentata una finestra di dialogo attraverso la quale sarà possibile decidere se continuare con l’eliminazione oppure annullare l’operazione. DataSource è la proprietà che serve ad indicare quale è il dataset a cui fa riferimento l’oggetto DBNavigator.
La proprietà Flat ha lo scopo di definire l’aspetto dei pulsanti della barra di navigazione, ovvero se questi avranno uno stile piatto oppure tradizionale.
Attraverso la proprietà Hints si può definire il contenuto dei tooltip che vengono visualizzati quando ci si ferma sopra i pulsanti della barra. Questa proprietà potrebbe essere utilizzata per esempio per visualizzare in italiano la funzione dei vari pulsanti della barra visto che di default il testo visualizzato è in inglese.
L’ultima proprietà è quella che definisce quali pulsanti visualizzare nella barra. Non sempre sono necessari tutti i pulsanti presenti nella barra, ad esempio potrebbero servire solamente i pulsanti di spostamento e non quelli di inserimento, modifica ed eliminazione. tramite VisibleButtons, di tipo TButtonSet, è possibile specificare l’elenco dei pulsanti da visualizzare.
Per quanto riguarda i metodi dell’oggetto DBNavigator, interessante è il metodo BtnClick che permette di eseguire la funzione associata al pulsante nella barra di navigazione, come se il pulsante fosse stato premuto dall’utente. Questo metodo accetta come parametro il tipo di pulsante che di cui si vuole simulare la pressione (nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh). L’esecuzione del metodo attiva comunque l’evento OnClick dell’oggetto DBNavigator.
tdBText
L’oggetto DBText è un oggetto visuale che permette di visualizzare il contenuto testuale di un campo di un dataset. Attraverso questo oggetto l’utente nonpuò modificare il contenuto del campo visualizzato.
Le proprietà dell’oggetto DBText sono: Autosize, DataField, DataSource.
La proprietà Autosize dell’oggetto DBText indica se la dimensione dell’oggetto viene modificata automaticamente rispecchiando la dimensione del testo da visualizzare. Impostare Autosize a false a volte è utile per impedire che il testo da visualizzare vada a sovrapporsi ad altri controlli nelle schermate del programma.
DataField contiene il nome del campo del dataset di cui verra visualizzato il contenuto.
DataSource conterrà il riferimento all’oggetto DataSource a cui è collegato il dataset a cui collegare l’oggetto DBText.
tdBEdit
tdBEdit è un oggetto visuale rappresentante una casella di testo dove è possibile visualizzare, inserire, modificare del testo contenuto in un campo di un dataset. Questo oggetto deriva da altri oggetti non connessi direttamente a datasets come CustomMaskEdit e CustomEdit. Per le proprietà ereditate da questi oggetti si rimanda alla guida in linea.
Come per altri oggetti connessi ai dataset, le proprietà più importanti sono DataField, DataSource e ReadOnly. Per le prime due il significato è lo stesso degli oggetti visti in precedenza, ReadOnly è presente, come nel nostro caso, in quei componenti che permettono la modifica dei dati. Attraverso questa proprietà, impostando il suo valore a true, si impedisce la modifica dei dati visualizzati nel solo componente DBEdit interessato.
tdBMemo
Il componente DBMemo è simile al componente DBEdit, ha la funzione di visualizzare il testo contenuto in un campo di un dataset con la differenza che il testo viene visualizzato su più righe. Le proprietà fondamentali sono le stesse dell’oggetto DBEdit, mentre per le proprietà relative all’oggetto TCustomMemo, da cui DBMemo deriva, consultare la guida in linea.
tdBImage
L’oggetto DBImage viene utilizzato per visualizzare ed inserire immagini in un campo di un dataset. Solitamente questo oggetto viene collegato a campi di tipo blob.
Oltre alle proprietà comuni a tutti i componenti data-aware, l’oggetto DBImage possiede le seguenti proprietà: AutoDisplay, borderStyle, Center, Picture, QuickDraw, Stretch.
La proprietà AutoDisplay, indica se l’immagine contenuta nel campo viene automaticamente caricata e visualizzata. Impostando questa proprietà a false, per visualizzare l’immagine sarà necessario effettuare un doppio click sull’oggetto oppure selezionare l’oggetto e premere enter.
Attraverso borderStyle è possibile definire l’aspetto del bordo dell’immagine che può essere: bsNone, bsSingle, bssizeable, bsDialog, bsToolWindow, bssizeToolWin.
La proprietà Center indica se l’immagine verrà visualizzata al centro dell’oggetto DBImage. Per ovvi motivi, questa proprietà non avrà alcun effetto se la proprietà Stretch sarà impostata a true.
La proprietà Picture contiene un riferimento all’immagine contenuta nel campo del dataset. Questa proprietà risulta molto utile per caricare una immagine nel campo blob oppure per salvare su file il contenuto del campo blob stesso. Per maggiori informazioni sui metodi e sulle proprietà dell’oggetto Picture consultare la guida in linea riguardo alla classe TPicture.
Attraverso QuickDraw, è possibile velocizzare la visualizzazione dell’immagine, disabilitando l’utilizzo di una palette di colori, ottenendo però una qualità inferiore dell’immagine. Impostando questa proprietà a false, verrà utilizzata una palette di colori per permettere una visualizzazione migliore dell’immagine, introducendo dei ritardi di visualizzazione causati dall’elaborazione più complessa. La proprietà Stretch permette di indicare se l’immagine visualizzata verrà riadattata alle dimensioni dell’oggetto DBImage effettuando appunto un stretching, con conseguente probabile deformazione o perdita di definizione dell’immagine.
I metodi dell’oggetto DBImage sono: CopyToClipBoard, CutToClipBoard, LoadPicture, PasteFromClipBoard. I metodi relativi alla clipboard (gli appunti di Windows) sono abbastanza autoesplicativi e servono appunto a copiare ed a tagliare il contenuto mettendolo nella clipboard o ad incollarlo prelevandolo da essa.
LoadPicture ha lo scopo di caricare l’immagine dal campo del dataset. Questo metodo è necessario per visualizzare il contenuto dell’immagine se la proprietà AutoDisplay è stata impostata false.
tdBListBox, tdBComboBox, tdBRichEdit, tdBCheckBox, tdBRadioGroup
Per tutti questi componenti, non esistono particolari proprietà o metodi all’infuori
di quelli già visti comuni a tutti i componenti Data-Aware (DataSource, DataField, etc.).
Pertanto per le proprietà di questi controlli si rimanda alla guida in linea di Delphi.
L’unica differenza interessante tra la versione non Data-Aware e la versione standard
riguarda il controllo tdBRadioGroup che possiede una proprietà Values
che ha lo scopo di permettere l’assegnazione di valori personalizzati da salvare nel campo
del Dataset. Questa proprietà è di tipo TStrings e se non vengono definiti dei valori
per essa, nel campo dele dataset verrà salvato l’indice, in base 0, della voce
selezionata.
tdBLookupListBox, TLookupComboBox
Questi due controlli, sono in tutto simili ai rispettivi tdBListBox e tdBComboBox tranne per il fatto che i valori riportati nelle liste di scelta, provengono da un dataset. Questi controlli sono collegati a due dataset: uno è il dataset di lavoro (dove vengono inseriti i valori del controllo) e l’altro quello da dove vengono recuperati i valori che appaiono nelle liste di scelta. Per quanto riguarda il collegamento al dataset principale, non c’è nulla di nuovo da dire, il collegamento segue le regole già viste. Per il dataset di origine dei valori delle liste, ci troviamo di fronte a delle nuove proprietà che sono comuni a tutti quei componenti di tipo lookup che derivano da tdBLookupControl.
Queste proprietà sono: KeyField, KeyValue, ListField, ListFieldIndex, ListSource. Tutte queste proprietà, all’infuori di KeyValue, sono accessibili a design-time tramite l’Object Inspector.
KeyField è di tipo string e indica il campo del dataset sorgente per la lista da cui verranno estratti i dati da inserire nel campo del dataset principale indicato da DataField.
KeyValue contiene il valore del campo indicato in KeyField. Esso non corrisponde al valore visualizzato dal controllo. Assegnando a questa proprietà un valore, il controllo effettuerà una ricerca all’interno del dataset sorgente per la lista alla ricerca di un record il cui contenuto del campo riportato in KeyField corrisponde al valore riportato in KeyValue.
ListField, è di tipo string e contiene il campo del dataset sorgente per la lista il cui valore sarà visualizzato dal controllo. Nel caso di tdBLookupComboBox, sara il campo i cui valori appariranno nella lista a discesa visualizzata dal controllo.
ListFieldIndex indica l’indice che verrà utilizzato per ordinare la lista dei valori visualizzati dal controllo.
ListSource contiene il riferimento al datasource che si riferisce al dataset sorgente per la lista di valori.
tdBCtrlGrid
Questo controllo è particolare ma molto utile per creare una visualizzazione
particolare del contenuto dei records di un dataset. Esso permette di raggruppare in
pannelli i contenuti dei records di un dataset, permettendo di disporre a piacere i
controlli che effettivamente visualizzano il contenuto dei campi dei records.
A differenza
degli altri componenti data-aware che visualizzano o gestiscono direttamente il contenuto
dei campi dei records, il controllo DBCtrlGrid non possiede, ovviamente, la proprietà
FieldName. Questo controllo lavora con i records piuttosto che con i campi dei records.
Infatti se viene posto in una form un controllo DbCtrlGrid senza inserirvi degli altri
controlli data-aware all’interno che gestiscano il contenuto dei campi dei records non si
vedrà apparire nulla all’interno di esso. tra le caratteristiche impostabili di questo
controllo vi è la possibilità di scegliere il numero di righe e colonne, l’orientamento,
la dimensione dei pannelli ed altre caratteristiche.
Ecco le proprietà principali di questo controllo: AllowDelete, AllowInsert, Canvas, ColCount, DataSource, EditMode, Orientation, Panelborder, PanelCount, PanelHeight, PanelIndex, Panelwidth, RowCount, SelectedColor, ShowFocus.
Le proprietà AllowDelete
e AllowInsert indicano se il controllo può permettere all’utente
l’inserimento di un nuovo record oppure l’eliminazione di quello corrente.
Queste due
operazioni possono essere effettuate attraverso la pressione rispettivamente dei tasi
Ctrl+Delete e Ctrl+Insert sulla tastiera quando il controllo possiede il fuoco.
La proprietà Canvas, disponibile solamente a run-time, permette di accedere al controllo Canvas che gestisce la grafica dei pannelli della griglia.
ColCount
e RowCount, permettono di specificare rispettivamente il numero di
colonne e di righe che verranno rappresentati contemporaneamente nel controllo. Queste
proprietà definiscono altresì il numero di pannelli visibili nella griglia.
Questo
valore è reperibile nella proprietà PanelCount disponibile a run-time.
DataSource definisce il riferimento alla sorgente dati collegata al dataset a cui la
griglia sarà collegata.
EditMode permette di stabilire la modalità di funzionamento della griglia, ovvero se questa può permettere l’inserimento l’eliminazione e la modifica dei records, un po’ come la proprietà ReadOnly di altri controlli.
Panelborder definisce lo stile del bordo dei pannelli nella griglia. I valori possibili sono gbNone o gbRaised.
Attraverso le proprietà PanelHeight e Panelwidth è possibile definire le dimensioni dei pannelli, rispettivamente altezza e larghezza.
SelectedColor definisce il colore che verrà utilizzato per indicare il pannello corrispondente al record corrente nel dataset.
In ultimo ShowFocus permette di indicare se il controllo DBCtrlGrid deve disegnare un rettangolo di fuoco attorno al pannello corrispondente al record corrente quando il controllo ha il fuoco.
Se vuoi aggiornamenti su Componenti per la manipolazione dei dati (Data-Aware) inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Sicurezza Android: le impostazioni di base
Alcuni consigli sulle impostazioni di sicurezza di smartphone e tablet Android. I setting variano da versione a versione, in questo […]