Ecco i comandi aggiornati Stampa modulo e Carica modulo

Tradotto automaticamente da Deepl

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.

blank

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!

Roland Lannuzel
- Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.