Ci avete detto quanto desiderate una funzione per la creazione dinamica di moduli completamente adattati alle esigenze dei vostri utenti finali. Bene, vi abbiamo ascoltato e 4D v16 R6 now apre nuove opportunità con i moduli dinamici! Forniti in anteprima in 4D v16 R6, i moduli dinamici consentono di creare programmaticamente i moduli in un oggetto o di caricarli da un file di testo. Ma questo è solo un assaggio di ciò che abbiamo preparato per voi…
Moduli dinamici – Esempio di database
moduli dinamici Vantaggi
Nei moduli dinamici, l’intero contenuto del modulo – pagine, oggetti del modulo e proprietà di ciascun oggetto – è descritto in un formato testuale (formato JSON). Pertanto, i moduli dinamici possono essere memorizzati in un oggetto o in un file. Per una migrazione senza problemi, è possibile avere entrambi i tipi di moduli in un database, cioè sia i moduli regolari (memorizzati in formato binario nel file .4DB) che i moduli dinamici(memorizzati come testo in qualsiasi punto del disco).
I moduli dinamici possono essere utilizzati con applicazioni compilate o stand-alone. Il vantaggio dei nuovi moduli rispetto ai normali moduli binari è che è possibile modificarli semplicemente aggiornando il file JSON… senza dover ricompilare l’applicazione. Ciò offre una grande flessibilità nella distribuzione.
L’uso di moduli dinamici offre anche altri grandi vantaggi. Avete già avuto un cliente che ha chiesto di cambiare il carattere per tutti gli oggetti del modulo? Con i moduli dinamici, è semplice come fare un “Cerca e sostituisci” in un file di testo!
Se ora volete inviare per e-mail un particolare modulo a un collega, dovrete inviare solo un singolo file di testo invece dell’intero pacchetto di database. I moduli dinamici consentono inoltre di riutilizzare facilmente un modulo in un’altra applicazione senza doverlo spostare in un altro database… basta copiare/incollare un singolo file e il gioco è fatto!
comandi che supportano i moduli dinamici
D’ora in poi, tutti i comandi 4D che utilizzano il nome di un modulo sono stati migliorati per accettare anche la descrizione di un modulo come oggetto o percorso di file:.
- DIALOG
- FORM SET INPUT
- FORM SET OUTPUT
- OBJECT SET SUBFORM
- OBJECT GET SUBFORM
- FORM LOAD
- Print form
- Current form name
“Esempio “CIAO MONDO
descrizione del modulo da un file di testo
Facciamo un semplice esempio con solo testo e un pulsante:
La descrizione testuale del modulo è la seguente:
{ ... list of form parameters ... "pages": [ ... list of form pages ... null, ... page 0 ... { ... page 1 ... "objects": { ... list of form objects in page 1 ... "text": { "type": "text", "text": "Hello World !", "left": 20, "top": 20, "width": 200, "height": 20 }, "button": { "type": "button", "text": "OK", "left": 120, "top": 40, "width": 100, "height": 20 } }}] }
Ed ecco il codice per caricare questo modulo in una finestra di dialogo:
DIALOG ("/RESOURCES/helloWorld.json")
La grammatica è definita da uno schema JSON. La documentazione fornisce anche l’elenco completo degli attributi che possono essere utilizzati nei moduli dinamici, con dettagli su quali attributi sono supportati da ciascun oggetto modulo. Non dimenticate che potete usare il comando JSON Validate per verificare che il JSON della descrizione del modulo sia conforme allo schema JSON.
Costruire un form in un oggetto
Ora, rendiamo questo form completamente dinamico, costruendolo solo con il codice!
// Build form description
$label:=New object("type"; "text"; "text"; "Hello World!";"top";20;"left";20;"width";200;"height";20)
$button :=New object("type";"button";"text";"OK";"top";40;"left";120;"width";100;"height";20)
$page :=New object("oggetti";New object("etichetta";$label; "pulsante";$button))
$form :=New object("pagine";New collection(Null;$page); "windowTitle"; "Il mio primo modulo dinamico"; "rightMargin";20; "bottomMargin";20)
// Load the form in a dialog
$w:=Open form window($form)
DIALOG (
$form)
Come si può vedere, offre la flessibilità necessaria per costruire i moduli in base alle proprie esigenze. Una volta scritti i moduli in un file o in un oggetto, è possibile utilizzarli come si farebbe con i normali moduli.
E per quanto riguarda la modifica dei moduli?
Per il momento, non c’è alcun meccanismo disponibile per modificare i moduli dinamici, a parte l’uso di un editor di testo. Ma questo non durerà! È in arrivo un editor di moduli dedicato specificamente ai moduli dinamici. Quando? Restate sintonizzati.