Jak vytvořit dynamický formulář z tabulky ve 3 krocích!

Automaticky přeloženo z Deepl

4D v17 obsahuje dynamické formuláře, které byly původně představeny ve verzi 4D v16 R6 a představují výkonný a flexibilní způsob dynamického vytváření formulářů plně přizpůsobených potřebám koncových uživatelů. Možnosti dynamických formulářů jsou obrovské. V tomto příspěvku si ukážeme konkrétní příklad toho, co všechno můžete s těmito novými formuláři dělat.

Ale popořadě. Ve své databázi potřebujete vstupní/výstupní formulář pro všechny své tabulky. A ještě lépe, proč tyto formuláře nevytvářet dynamicky ze šablony? Díky objektovému zápisu je manipulace s objekty velmi snadná. Stačí definovat vstupní šablonu, výstupní šablonu a objektovou šablonu. Za běhu pak můžete generovat formuláře podle vybrané tabulky a polí.

V níže uvedené ukázce vám nabízíme dvě výstupní a dvě vstupní šablony formulářů a také ukázku kódu pro přidání tabulky a polí.

Tipy: Použití dynamických formulářů

Příklad výstupního formuláře

Krok 1

Vytvořte šablonu výstupního formuláře obsahující pouze tlačítka a prázdné pole se seznamem. V tomto příkladu je šablona uložena ve složce„template“ ve složce„resources“ databáze:

$pathname:=Get 4D folder(Current resources folder)+"template "+Folder separator+"outputTemplate.json"
$oFormTemplate :=JSON Parse(Document to text($pathname))

Krok 2

Poté pomocí kódu přidejte název formuláře, jméno a zdrojovou tabulku pole seznamu.

$oFormTemp:=OB Copy($oFormTemplate)
$oFormTemp .windowTitle:=arrTableName{arrTableName}
$oFormTemp .name:="ListForm: "+arrTableName{arrTableName}
$oFormTemp .pages[1].objects.myListBox.table:=arrTableName{arrTableName}

Output Form Template

Krok 3

Dále vložte sloupec se seznamem polí pro každé vybrané pole. Poté definujte název objektu sloupce, zdroj sloupce a název záhlaví sloupce.

$oFormTemp.pages$oColumn[1].objects.myListBox.columns:=New collection()

C_LONGINT ($numItem)
$numItem :=0

For ($i;1;Size of array(arrFieldName))
If (arrFieldDisplay{$i}=True)
C_OBJECT($oColumn)

// Create a list box column
$oColumn:=OB Copy($oObjectTemplate.colListbox)
xml-ph-0035@deepl.inter.objectName:="col "+arrFieldName{$i}
$oColumn .dataSource:="["+arrTableName{arrTableName}+"]"+arrFieldName{$i}
$oColumn .header:=New object("text";arrFieldLabel{$i})

// Insert the column in form
$oFormTemp.pages[1].objects.myListBox.columns[$numItem]:=$oColumn
$numItem :=$numItem+1
End if .
End for

Output Form With Column

Vstupní formulář

Stejný princip lze použít i pro vstupní formulář. Stačí přidat statický text a vstupní objekt pro každé vybrané pole.

Příklad kódu je k dispozici v databázi příkladů.

Šťastné kódování!

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.