Griglie, associate a tabelle in Full o Simple Edit Mode, possono essere utilizzate come maschere per il Data Entry. In particolare, in IrionEDM il Data Entry può avvenire manualmente o graficamente.
Manualmente, l’utente può cancellare o modificare record esistenti da tastiera e inserire nuovi record mediante l’apposita Special Row. Il Data Entry manuale dipende da property dedicate all’editing della griglia, descritte nel capitolo Esempi di Edit Property.
Graficamente, invece, l’utente può spostare uno o più record presenti in una griglia all’interno di un’altra, mediante la speciale funzionalità di Drag & Drop. Il Data Entry grafico dipende da speciali proprietà della griglia, che rendere disponibile agli utenti una funzionalità, tipica di molte applicazioni d’uso comune.
Per attivare il Drag & Drop tra griglie è necessario:
✓ esporre a video due o più Grid in Full o Simple Edit Mode;
✓ definire un apposito Command di tipo Run SQL;
✓ attribuire un identificativo univoco alle griglie di partenza, mediante la Band Property DragRecordType;
✓ impostare specifiche Band Property sulla griglia di arrivo.
Tra due Grid è possibile definire un Drag & Drop bidirezionale: ✓ definendo due Command speculari, invertendo i ruoli delle griglie di partenza e arrivo; ✓ impostando opportunamente le proprietà DragRecordType, AllowedGridDropTypes e OnDropCommand su entrambe le griglie. |
Il Command Run SQL, legato al Drag & Drop, ha il compito di gestire:
✓ la cancellazione dei record trascinati dalla griglia di partenza (Drag);
✓ l’inserimento dei record rilasciati sulla griglia di arrivo (Drop).
In particolare, esso si compone di due istruzioni principali:
✓ una INSERT, relativa al rilascio dei record sulla tabella di arrivo;
✓ una DELETE, relativa al trascinamento dei record dalla tabella di partenza.
Queste istruzioni richiedono l’utilizzo delle seguenti tabelle speciali:
✓ _Dragged_Data contenente informazioni sui record trascinati;
✓ _Dragged_Info contenente una sola riga esponente nomi e identificativi delle tabelle coinvolte nel Drag & Drop.
Alcune delle informazioni disponibili nella tabella _Dragged_Data sono:
✓ __InternalIdentifier, identificativo univoco del record trascinato;
✓ __SortValue, identificativo incrementale per l’ordinamento dei record;
✓ __ExtendedInfo, XML con informazioni sulla tabella sorgente del record.
Le Band Property da impostare sulla griglia di arrivo sono:
✓ AllowedGridDropTypes, identificativi delle Grid di partenza i cui record possono essere rilasciati sulla Grid corrente, separati da virgola;
✓ OnDropCommand, nome del Command Run SQL che gestisce il Drag & Drop tra le griglie;
✓ DeniedGridDropTypes, identificativi di eventuali Grid di partenza i cui record non possono essere rilasciati sulla Grid corrente, separati da virgole.
La Band Property AllowedGridDropTypes permette di rilasciare i record della tabella di partenza su un qualsiasi punto della Grid di arrivo. In alternativa, è possibile specializzare il punto di rilascio dei record mediante:
✓ la Band Property AllowedBandDropTypes consente il rilascio solo in corrispondenza della Band corrente;
✓ la Grid Property AllowedRowDropTypes permette il rilascio in un qualsiasi punto della Grid corrente, ad esclusione delle Special Row;
✓ la Band Property AllowedRowDropTypes consente il rilascio in un qualsiasi punto della Band corrente, ad esclusione delle Special Row;
✓ la Column Property AllowedDropTypes permettte il rilascio solo in corrispondenza della Column corrente.
Considerazioni analoghe si applicano alle corrispondenti proprietà DeniedDropTypes.
Le Property di tipo Denied sono efficaci solo quando negano una di tipo Allowed. |
In caso di Drop su una riga, mediante la proprietà AllowedRowDropTypes, è possibile agire sulla modalità di rilascio, mediante la Grid o Band Property DropRowArea. Essa può assumere i valori:
✓ IntraRow, il rilascio avviene nello spazio compreso tra due record della tabella di arrivo;
✓ InRow, il rilascio avviene nello spazio occupato da un record della tabella di arrivo;
✓ InAndIntraRow, il rilascio può avvenire sia IntraRow sia InRow;
✓ Default coincide con InRow.
Il valore IntraRow forza l’aggiornamento del campo __SortValue nella tabella _Dragged_Data. Esso può essere utilizzato nel Command Run SQL per ordinare i record in base alla propria posizione di inserimento.
Inoltre esiste una vista speciale, chiamata DropTargetRows, che registra la posizione di rilascio in relazione alle righe già presenti sulla tabella d’arrivo. In particolare:
✓ in caso di IntraRow, la vista contiene nome e identificativo ordinale delle righe tra cui è avvenuto il rilascio;
✓ in caso di InRow, la vista contiene nome e identificativo ordinale della sola riga su cui è avvenuto il rilascio.
Infine, ogni Viewer di tipo Grid dispone di alcune proprietà con cui personalizzare l’aspetto grafico del Drag & Drop, tra le quali:
✓ DragDropImage, immagine da utilizzare come cursore, durante il trascinamento di un record;
✓ DropBorderColor, colore del bordo dei record rilasciati su una Grid;
✓ DropBorderThickness, spessore del bordo dei record rilasciati su una Grid;
✓ DropOnGridMessage, messaggio da esporre in un tooltip associato al cursore, durante il trascinamento di un record su una Grid;
✓ DropOnBandMessage, messaggio da esporre in un tooltip associato al cursore, durante il trascinamento di un record su una Band;
✓ DropOnRowMessage, messaggio da esporre in un tooltip associato al cursore, durante il trascinamento di un record su una riga o tra righe;
✓ DropOnRowMessage, messaggio da esporre in un tooltip associato al cursore, durante il trascinamento di un record su una Column.
In particolare, alle proprietà di tipo DropMessage sono associate omonime classi di proprietà di tipo Appearance, con cui personalizzare l’aspetto grafico del messaggio associato al cursore di trascinamento.
Oltre al Drag & Drop tra griglie, è possibile acquisire e trasferire dati da e verso applicazioni esterne, quali Word o Excel. In questi casi:
✓ i record di una Grid possono essere accodati o sovrascritti su tabelle e fogli di calcolo;
✓ i dati contenuti nei file possono integrare o modificare quanto esposto dalla Grid corrente.
Inoltre, questa particolare forma di Drag & Drop non comporta la cancellazione dei dati della griglia o del file di partenza.
Per creare il Drag & Drop da e verso sorgenti esterne, occorre configurare come segue le proprietà:
✓ AllowMultiCellOperation deve assumere almeno il valore DropFromOtherApps;
✓ AllowUpdate deve essere True;
✓ AllowAddNew deve essere attivo con template di inserimento visibile, ossia di tipo FixedAddRow o TemplateOn;
✓ IgnoreMultiCellOperations deve essere False.