La Classe DataBrowser
Enio Donci 

La classe DataBrowser è una implementazione grafica della classe Tbrowse di Clipper. Si tratta di un potente strumento di scorrimento dei dati che consente di visualizzare i dati in formato Tabella molto simile ad un foglio elettronico. Un oggetto DataBrowser è in generalmente creato come controllo su una finestra di tipo DataWindow. Quando si progetta la finestra DataWindow con il Window Editor, se si seleziona Browse View dal menù View i dati del server possono essere visualizzati in formato tabella invece che in formato scheda, che è l’impostazione predefinita. L’oggetto DataBrowser è guidato dai dati e, come la finestra DataWindow, è connesso a un server dati come client. Come le finestre DataWindow, gli oggetti DataBrowser propagano i dati fino al server al quale sono collegati e, tramite il gestore di eventi Notify(), rispondono atutti i messaggi di notifica che un server invia al proprio client. Quando si crea una finestra nel Window Editor, viene generato il codice per gestire la visualizzazione dei campi sia nel formato scheda che in quello tabella. La proprietà ViewAs nel Window Editor determina quale tipo di visualizzazione verrà utilizzata all’avvio dell’applicazione, ma si può passare dall’una all’altra in qualsiasi momento, cambiando l’impostazione del metodo ViewAs() dell’oggetto DataBrowser. E’ possibile passare al metodo ViewAs() la costante VIEWBROWSER, che visualizza i dati in formato Browser (simile ad un foglio elettronico), oppure VIEWFORM per visualizzare una scheda contenente un solo record, con i campi visualizzati in singoli controlli.

Una finestra DataWindow può essere collegata ad una sottofinestra in una relazione padre-figlio. La sottofinestra può essere aggiunta tramite un apposito pulsante della ToolBar del Window Editor. Un classico esempio può essere la gestione fatture dove abbiamo un server testata che contriene l’intestazione della fattura (data, numero, cliente, ecc…) e un server che contiene i dettagli ( descrizione, quantità, prezzo, ecc…). Il server figlio (dettagli) è in relazione con il padre (testata) tramite il campo numero fattura che funge anche da campo chiave per il suo indice. Per costruire la sottofinestra occorre innanzitutto impostare il server, e disegnare la finestra per il server testata, dopodiché, occorre trascinare e rilasciare l’icona della sottofinestra che appare nella ToolBar del Window Editor. Quando si fa doppio clic sul controllo della sottofinestra, appare uno schermo di modifica che mostra tutti i campi del server dettagli
.
Per ogni colonna vi è una finestra delle proprietà contenente gli attributi di ogni campo. Ogni colonna, in pratica è un oggetto che appartiene alla classe DataColumn che esamineremo prossimamente. Per gestire la finestra, VO genera il codice sorgente necessario in modo automatico, dopodiché l’oggetto DataServer per il file testata, viene collegato all’oggetto DataServer dettagli tramite il metodo SetSelectiveRelation(). Tale metodo opera uno scorrimento del server dettagli, filtrato sul numero fattura del server testata. La classe DataBrowser possiede molti altri metodi e proprietà rispetto a quelli elencati nella finestra delle proprietà del Window Editor. Qui di seguito vengono descritti in dettaglio:

Proprietà della classe DataBrowser:

BackGround ACCESS/ASSIGN Questa proprietà registra il nome dell’oggetto Brush utilizzato per lo sfondo del DataBrowser, esso riguarda solo l’area di testo dell’oggetto di scorrimento.

Caption ACCESS Questa proprietà contiene la descrizione che deve essere visualizzata nell’area del titolo del riquadro di scorrimento dati.

ColumnCount e RowCount ACCESS ColumnCount contiene il numero di oggetti colonna posseduti da un oggetto di scorrimento dati, mentre RowCount registra il numero di righe visibili.

CurrentColumn ACCESS Questa proprietà restituisce l’oggetto colonna in un DataBrowser che contiene il cursore in quel momento.

Font ACCESS/ASSIGN La proprietà font contiene il nome del tipo di carattere utilizzato nell’area di testo del DatBrowser.

Origin ASSIGN Questa proprietà contiene un oggetto Point che indica il punto di origine dell’oggetto DataBrowser sulla finestra a cui appartiene.

Owner ACCESS Questa proprietà restituisce il nome della finestra a cui appartiene l’oggetto DataBrowser.

Pointer ACCESS/ASSIGN Questa proprietà contiene il tipo di puntatore del mouse utilizzato nell’area di testo del DataBrowser.

Size ASSIGN Questa proprietà contiene un oggetto Dimension che registra la grandezza dell’oggetto DataBrowser.

TextColor ACCESS/ASSIGN Questa proprietà contiene l’oggetto Color utilizzato nell’area di testo del DataBrowser.

Metodi della classe DataBrowser:

AddColumn() Il metodo AddColumn aggiunge dinamicamente degli oggetto colonna all’oggetto DataBrowser.

AsString() Questo metodo restituisce un’etichetta che identifica l’oggetto DataBrowser.

ChangeBackGround() Questo mettodo imposta il motivo di sfondo delle varie parti del DataBrowser e restituisce l’oggetto Brush precedente.

ChangeFont() Questo metodo permette la personalizzazione dei caratteri nelle diverse aree del DataBrowser.

ChangeTextColor() Questo metodo gestisce l’oggetto Pen utilizzato nelle diverse aree dell’oggetto DataBrowser.

Clear() Questo metodo cancella il contenuto di una o più celle selezionate nell’ambito dello stesso record.

ColPos() Questo metodo restituisce la posizione ordinale della colonna corrente. Per default inizialmente la colonna corrente è la prima.

Copy() Cut() e Paste() I metodi Copy() Cut() e Paste() corrispondono alle funzionalità standard di Windows per copiare, tagliare e incollare i dati nelle celle dell’oggetto DataBrowser.

DeleteRow() e NewRow() Questi metodi rispettivamente cancellano e aggiungono record al database sottostante.

EnableBorder() Questo metodo determina il tipo di cornice della finestra di scorrimento Dati.

EnableColumnMove() ed EnableColumnResize() Questi due metodi ricevono come parametri dei valori logici per controllare rispettivamente la possibilità dell’utente di riposizionare e di ridimensionare le varie colonne dell’oggetto DataBrowser.

EnableGrid() Questo metodo richiede un parametro logico che determina se debba essere visualizzata una griglia composta da sottili linee verticali e orizzontali per separare le celle una dall’altra.

EnableHorizontalScroll() ed EnableVerticalScroll() Questi metodi determinano se è possibile scorrere le celle di un DataBrowser in modo orizzontale e verticale.

EnableHorizontalSplit() ed EnableVerticalSplit() Questi metodi richiedono un parametro logico che determina se la finestra del DataBrowser viene visualizzata con o senza una barra di separazione orizzontale o verticale. In entrambi i casi il valore di default è FALSE.

GetColumn() Questo metodo restituisce il nome di un particolare oggetto colonna.

Notify() Poiché gli oggetti DataBrowser, come le finestre DataWindow, sono aggiornati sui dati, ricevono gli stessi messaggi di notifica tramite i loro gestori di eventi Notify().

Refresh() Questo metodo provoca un aggiornamento della visualizzazione del DataBrowser, con i dati correnti del Server sottostante.

RemoveColumn() Questo metodo rimuove un oggetto colonna da un oggetto DataBrowser.

SuspendUpDate() e RestoreUpDate() Il metodo SuspendUpDate() disabilita temporaneamente il ridisegno dei dati nel DataBrowser mentre i dati vengono alterati. Il metodo RestoreUpdate() lo ripristina.

SetCaption() Questo metodo imposta il testo che deve essere visualizzato nell’area del titolo del riquadro di scorrimento.

SetColumn() Questo metodo sostituisce una colonna del DataBrowser con un’altra colonna e restituisce la colonna sostituita.

SetColumnFocus() Questo metodo attiva una colonna specificata.

SetPointer() questo metodo determina il tipo di puntatore del mouse quando questo passa sopra ad una particolare area dello schermo, restituendo l’oggetto puntatore precedente.

SetStandardStyle() Questo metodo stabilisce lo stile che deve essere utilizzato nelle aree dei titoli della finestra di scorrimento dati.

Show() Questo metodo visualizza l’oggetto DataBrowser sulla finestra a cui appartiene.

Undo() e CanUndo() Il metodo CanUndo() restituisce il valore logico che indica se è possibile utilizzare Undo() per annullare le modifiche più recenti a un oggetto DataColumn.

Use() Questo metodo connette un oggetto DataBrowser a un DataServer.

Validate() Questo metodo restituisce un valore logico che indica se il record corrente ha superato tutti i controlli di convalida.

Gestori di eventi della classe DataBrowser:

Oltre ai metodi descritti in precedenza, la classe DataBrowser ha anche dei metodi speciali, chiamati gestori di eventi, che vengono richiamati automaticamente da VO, nel momento in cui si verificano certi eventi.

CellDoubleclick() Il metodo CellDoubleClick() è un gestore di eventi che si attiva quando l’utente fa doppio clic con il mouse su una cella dati.

CurrentColumn() Questo metodo è richiamato quando viene attivata una colonna.

ColumnFocusChange() Questo metodo è richiamato quando una colonna viene attivata o disattivata.

ColumnMoved() e ColumnResize() Questi due metodi sono richiamati rispettivamente quando una colonna viene spostata o ridimensionata.

 

 

Alcuni consigli…

SetSelectiveRelation() Il metodo SetSelectiveRelation() non è affatto equivalente al metodo SetFilter(), il quale scorre l’intero file e restituisce solo i record che soddisfano le condizioni richieste. Quando è possibile, si deve usare SetSelectiveRelation() invece di SetFilter(), esso agendo sull’indice è molto più veloce.

SetCaption() E’ preferibile usare il metodo SetCaption(), invece di assegnare direttamente questa proprietà. SetCaption() consente anche di determinare l’allineamento a destra, sinistra o al centro del testo.

NewRow() In genere non è consigliabile usare il metodo NewRow() per aggiungere un record, poiché l’utente non può annullare l’operazione senza lasciare un record vuoto nel database sottostante. E’ meglio consentire all’utente di modificare i dati separatamente dal DataBrowser, tramite un’altra finestra di editing in modo che il record possa essere aggiunto solo quando si seleziona il pulsante OK.

EnableColumnMove() ed EnableColumnResize() Si consiglia di offrire all’utente la possibilità di muovere e ridimensionare le colonne del DataBrowser, a meno che non ci sia una valida ragione per impedirlo.

RemoveColumn() Quando vengono rimosse delle colonne, i numeri ordinali delle colonne restanti vengono diminuiti, perciò conviene fare riferimento alle colonne per nome piuttosto che per numero.