4D v16 R5 ha apportato un miglioramento significativo al comando DIALOG. Un miglioramento che consiste nella possibilità di passare un nuovo parametro “formData” di tipo oggetto. È stato bello sentire che questa nuova aggiunta è stata ben accolta dagli sviluppatori di 4D.
Con 4D v20, vengono aggiornati altri due comandi, Print form e FORM LOAD! Il vantaggio sarà altrettanto grande. Il contenuto dell’oggetto passato nel parametro sarà direttamente sfruttabile nei moduli stampati o caricati in memoria.
codice CAMPIONE
Stampa modulo
Il comando Stampa modulo è molto utilizzato dagli sviluppatori 4D grazie ai suoi recenti miglioramenti.
Il comando PRINT FORM può ora passare un parametro opzionale di tipo oggetto accessibile tramite la funzione Form nel modulo invocato. Sia direttamente utilizzando la funzione Form come espressione per gli oggetti del modulo (Form.firstname / Form.lastname / ecc.), ma anche quando viene eseguito l’evento on printing detail.
$formData:=New object()
$formData.lastname:="Smith"
$formData.firstname:="john"
$formData.request:="I need more COFFEE"
$h:=Print form("Print_obj"; $formData; Form detail)
Dove il modulo “Print_obj” si presenta così:
CARICAMENTO DEL MODULO
Seguendo lo stesso principio, il comando FORM LOAD può ora ricevere un oggetto come parametro. Se viene passato (facoltativo), il contenuto di questo oggetto può essere sfruttato in vari modi e modificato durante l’esecuzione dell’evento on load (solo gestito dall’evento e solo all’interno di una sequenza OPEN PRINTING JOB / CLOSE PRINTING JOB).
OPEN PRINTING JOB
$formData.LBcollection:=New collection()
$formData.LBcollection.push(New object("reference"; "alpha"; "quantity"; 3; "total"; 120.99))
$formData.LBcollection.push(New object("reference"; "bravo"; "quantity"; 2; "total"; 599.99))
FORM LOAD("GlobalForm"; $formData) // $formData NEW !!!
$over:=False
Repeat
$full:=Print object(*; "LB") // the datasource of this "LB" listbox is Form.LBcollection
LISTBOX GET PRINT INFORMATION(*; "LB"; lk printing is over; $over)
If (Not($over))
PAGE BREAK
End if
Until ($over)
CLOSE PRINTING JOB
…dove la “GlobalForm” contiene una listbox “LB” che utilizza Form.LBcollection come fonte di dati.
Conclusione
Questa nuova possibilità di programmazione vi farà risparmiare tempo e renderà il vostro codice più “leggero”.
Come al solito, sentitevi liberi di condividere il vostro feedback sui forum di 4D. Non vediamo l’ora di ascoltarvi!