Řekli jste nám, jak moc si přejete funkci pro dynamické vytváření formulářů plně přizpůsobených potřebám koncových uživatelů. Nuže, vyslyšeli jsme vás a 4D v16 R6 now otevírá nové možnosti s dynamickými formuláři! Dynamické formuláře, které jsou k dispozici jako náhled na webu 4D v16 R6, umožňují programově sestavovat formuláře v objektu nebo je načítat z textového souboru. Ale to je jen poškrábání povrchu toho, co jsme pro vás připravili…
Dynamické formuláře – příklad databáze
dynamický formulář Výhody
V dynamických formulářích je celý obsah formuláře – stránky, objekty formuláře a vlastnosti jednotlivých objektů – popsán v textovém formátu (formát JSON). Dynamické formuláře tedy mohou být uloženy v objektu nebo v souboru. Pro hladký přechod je možné mít v databázi oba typy formulářů, tj . jak běžné formuláře (uložené v binárním formátu v souboru .4DB), tak dynamické formuláře(uložené jako text kdekoli na disku).
Dynamické formuláře lze použít s kompilovanými nebo samostatnými aplikacemi. Výhodou nových formulářů oproti běžným binárním formulářům je, že je můžete upravovat pouhou aktualizací souboru JSON… bez nutnosti překompilovat aplikaci. To vám dává velkou flexibilitu při nasazení.
Použití dynamických formulářů má i další velké výhody. Už se vám stalo, že zákazník požadoval změnu písma pro všechny objekty formuláře? S dynamickými formuláři je to stejně jednoduché jako provést „Search and Replace“ v textovém souboru!
Řekněme, že nyní chcete poslat e-mailem určitý formulář svému spolupracovníkovi, stačí poslat pouze jeden textový soubor místo celého databázového balíku. Dynamické formuláře také umožňují jednoduché opakované použití formuláře v jiné aplikaci, aniž byste jej museli složitě přesouvat do jiné databáze … stačí zkopírovat/vložit jediný soubor a je hotovo!
příkazy podporující dynamické formuláře
Od nynějška byly všechny příkazy 4D, které používají název formuláře, rozšířeny tak, aby přijímaly také popis formuláře jako objekt nebo cestu k souboru:.
- DIALOG
- FORM SET INPUT
- FORM SET OUTPUT
- OBJECT SET SUBFORM
- OBJECT GET SUBFORM
- FORM LOAD
- Print form
- Current form name
Příklad: „HELLO WORLD“
popis formuláře z textového souboru
Uveďme si jednoduchý příklad s pouhým textem a tlačítkem:
Textový popis formuláře je následující:
{ ... 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 } }}] }
A zde je kód pro načtení tohoto formuláře v dialogovém okně:
DIALOG ("/RESOURCES/helloWorld.json"
)
Gramatika je definována pomocí schématu JSON. V dokumentaci je rovněž uveden úplný seznam atributů, které lze použít v dynamických formulářích, s podrobnostmi o tom, které atributy jsou podporovány jednotlivými objekty formulářů. Nezapomeňte, že můžete použít JSON Validate příkaz ověřit, zda je JSON v popisu formuláře v souladu se schématem JSON.
Sestavení formuláře v objektu
Nyní vytvořme tento formulář plně dynamický tak, že jej sestavíme pouze pomocí kódu!
// 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("objects";New object("label";$label; "button";$button))
$form :=New object("pages";New collection(Null;$page); "windowTitle"; "My first dynamic form"; "rightMargin";20; "bottomMargin";20)
// Load the form in a dialog
$w:=Open form window($form)
DIALOG (
$form)
Jak vidíte, poskytuje vám flexibilitu při vytváření formulářů podle vašich potřeb. Po zapsání formulářů do souboru nebo objektu je můžete používat stejně jako běžné formuláře.
A co úpravy formulářů?
Prozatím není k dispozici žádný jiný mechanismus pro úpravu dynamických formulářů než použití textového editoru. To však nebude trvat dlouho! Editor formulářů určený speciálně pro dynamické formuláře je na cestě. Kdy? Zůstaňte naladěni.