Jak vytvořit obecný formulář s dynamickými formuláři

Automaticky přeloženo z Deepl

Představte si, že vaše databáze obsahuje několik tabulek typů nebo kategorií. Tyto tabulky jsou velmi jednoduché, často obsahují pouze identifikátor a textové pole. Pro demonstrační účely řekněme, že se jedná o databázi pro správu obuvi. Abychom mohli výrobky kvalifikovat, musíme definovat jejich typ, barvu, vzor, materiál, roční období atd.

Je těžkopádné spravovat každou z těchto tabulek ve formě seznamu a vstupního formuláře a souvisejících metod. V tomto případě je použití obecného formuláře nezbytné, aby se zabránilo duplicitám a zjednodušila se údržba.

A právě zde se hodí dynamické formuláře a ukazatele JSON!

V tomto příspěvku na blogu se seznámíte s jedním z možných způsobů vytváření generických formulářů.

Příklad databáze

Pomocí této databáze můžete otevřít pět různých dialogových oken, jak je znázorněno níže. Pokud se však vrátíte do režimu návrhu, všimnete si, že v Průzkumníku 4D nenajdete žádné formuláře…

Jak se tedy tyto formuláře vytvářejí?

Ve třech níže popsaných krocích:

1. Nejprve vytvoříme formulář seznamu, který uložíme do souboru JSON. Pro konkrétní informace o tabulce a polích použijeme ukazatele JSON. Řekněme například, že do názvu okna chceme zapsat název tabulky. V dynamickém formuláři stačí zadat:

"windowTitle": { "$ref": "#/info/table" }

Zde je další příklad, v poli seznamu chceme definovat zdroj dat sloupce, takže napíšeme:

"dataSource": { "$ref": "#/info/field1" }

2. Pak za běhu, když uživatel klikne na položku nabídky, injektujeme objekt definující tabulku s poli, která uživatel vybral.

C_OBJECT($o;$info)
$info :=New object("table";$table; "field1";"["+$table+"]"+"ID"; "field2";"["+$table+"]"+"Name")
$o :=JSON Parse(Document to text("RESOURCES/Form/CategoryOutputForm.json"))
$o .info:=$info

3. Pro otevření formuláře není potřeba nic výjimečného, stačí použít příkaz Open form window příkaz. Jediné, co je třeba mít na paměti, je, že 4D při volání příkazu překládá ukazatele JSON. Open form window příkazu:

$ref:=Open form window($o;Plain form window)

Stejně lze postupovat i u vstupního formuláře. A nyní si to sami vyzkoušejte!

Vanessa Talbot
• Product Owner • Vanessa Talbot se připojila k programovému týmu 4D v červnu 2014. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Od svého příchodu pracovala na definování klíčových prvků ve 4D. Pracovala na většině nových funkcí preemptivního multi-threadingu a také na velmi složitém tématu: nové architektuře pro enginované aplikace. Vanessa má titul z Telecom Saint-Etienne. Svou kariéru začala ve Výzkumném ústavu kriminalistickém jako vývojářka pro audiovizuální oddělení. Působila také v mediální a lékařské oblasti jako expertka na technickou podporu, produkci i dokumentaci novinek.