4D v16 R5 přinesl významné vylepšení příkazu DIALOG. Vylepšení spočívá v možnosti předávat nový parametr „formData “ typu objekt. Bylo skvělé slyšet, že tento nový doplněk byl vývojáři 4D dobře přijat.
S verzí 4D v20 byly vylepšeny další dva příkazy, a to Print form a FORM LOAD! Jejich přínos bude stejně velký. Obsah objektu předaný v parametru bude přímo využitelný v tištěných formulářích nebo formulářích načtených v paměti.
kód SAMPLE
Tisk formuláře
Příkaz Tisk formuláře je díky svým nedávným vylepšením hojně využíván vývojáři 4D.
Příkaz PRINT FORM nyní může ve vyvolaném formuláři předávat volitelný parametr typu objekt přístupný prostřednictvím funkce Form. Buď přímo pomocí funkce Form jako výrazů pro objekty formuláře (Form.firstname / Form.lastname / atd.), ale také při provedení události 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)
Kde formulář „Print_obj“ vypadá následovně:
FORM LOAD
Podle stejného principu může nyní příkaz FORM LOAD obdržet objekt jako parametr. Je-li předán (nepovinně), pak lze obsah tohoto objektu různě využívat a měnit během provádění události on load (pouze událost řízená a pouze uvnitř sekvence 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
…kde „GlobalForm“ obsahuje listbox „LB“, který používá Form.LBcollection jako zdroj dat.
Závěr
Tato nová možnost programování vám ušetří čas a „odlehčí“ váš kód.
Jako obvykle se neváhejte podělit o své připomínky na fóru 4D. Těšíme se na vaše názory!