4D View Pro offre un nuovo modo per caricare i dati e creare i modelli: il contesto dati. Consente di creare il documento con segnaposti e di riempirli impostando il contesto dati.
Con poche righe di codice, è possibile visualizzare oggetti o collezioni senza prima autorizzarli con VP SET CUSTOM FUNCTION! Entriamo nei dettagli.
Creazione di un documento con segnaposto
Innanzitutto, è necessario creare un documento con gli attributi dell’oggetto. Ad esempio, se si utilizza un oggetto con due attributi, Nome e Cognome, si possono creare due segnaposto con il comando VP SET BINDING PATH :
VP SET BINDING PATH(VP Cell("ViewProArea"; 0; 0); "Firstname")
VP SET BINDING PATH(VP Cell("ViewProArea"; 0; 1); "Lastname")
Nel foglio non compare alcun valore perché il contesto dati non è ancora stato definito. Per verificare che le celle siano vincolate correttamente, accedere alla scheda DATI della barra multifunzione e fare clic sul pulsante Vincolo del foglio. I nomi degli attributi appariranno tra parentesi:
Contesto dati
Ora che il modello è pronto, è sufficiente impostare il contesto dei dati con il proprio oggetto, utilizzando il comando VP SET DATA CONTEXT:
$object:=New object
$object.Firstname:="John"
$object.Lastname:="Smith"
VP SET DATA CONTEXT("ViewProArea"; $object)
In questo modo il modello viene aggiornato automaticamente:
Naturalmente, l’utente può modificare i dati:
In questo caso, non c’è problema: basta usare il metodo VP Get data context per recuperare l ‘oggetto con le modifiche:
$object:=VP Get data context("ViewProArea")
//$object={Firstname:Judith,Lastname:Smith}
Iniezione di dati nei fogliS
Se si passa una collezione al contesto dei dati, questa collezione sarà automaticamente legata al foglio. Se l’opzione autoGenerateColumns del comando VP SET DATA CONTEXT è impostata su true, l’insieme viene visualizzato automaticamente nel foglio.
Ad esempio, se si vuole visualizzare una tabella del database, basta scrivere:
$people:=ds.People.all().toCollection()
VP SET DATA CONTEXT("ViewProArea"; $people; New object("autoGenerateColumns"; True)
Si ottiene:
Il numero di colonne e di righe viene calcolato automaticamente e i nomi delle colonne sono i nomi dei campi della tabella.
Si noti che se autoGenerateColumns non è impostato su true, non viene visualizzato alcun dato!
Guardate l’HDI qui sopra per vedere questi comandi in azione. Inoltre, assicuratevi di leggere la documentazione per maggiori dettagli!