6 praktických příkladů použití maker

Automaticky přeloženo z Deepl

4D 18 R5 zavedlo formulářová makra. Mohou být neuvěřitelně užitečná, například tím, že poskytují ideální způsob, jak ušetřit čas při opakovaných úkonech. V tomto příspěvku na blogu si ukážeme několik základních příkladů, na kterých se dozvíte více o tom, jak makra fungují a jaké možnosti nabízejí. Všechny následující příklady jsou k dispozici na serveru GitHub.

Příklad 1: Změna atributu objektu formuláře

Toto je makro, které nastaví barvu písma na červenou pro všechny vybrané objekty formuláře.

V souboru FormMacros.json deklaruju své makro:

{
   "macros": {
      "Set Red": {
         "class": "SetRedColor"
      }
}

Vytvořím třídu a pomocí vlastnosti„currentSelection“ získám kolekci vybraných objektů formuláře. Poté změním vlastnost objektu formuláře. Nakonec vrátím atribut„currentPage„, který obsahuje změny, o kterých mám informovat 4D.

Kód:

Function onInvoke($editor: Object) : Object
var $name : Text
If ($editor.editor.currentSelection.length>0)
// Set stroke to red for each selected objects
For each ($name;$editor.editor.currentSelection)
$editor .editor.currentPage.objects[$name].stroke:="red"
End for each
Else
ALERT ("Prosím, vyberte objekt formuláře.")
End if
// Oznámení 4D o změně
$0 :=New object("currentPage";$editor.editor.currentPage).

Třída„SetRedColor“ obsahuje kód makra, je k dispozici v komponentě„HDI_FormMacro“ na GitHubu.

Příklad 2: Použití parametrů v souboru JSON makra

Některé texty by měly být červené, jiné zelené. Mohl bych vytvořit dvě makra s vlastními přidruženými třídami, nebo mohu vytvořit dvě makra s parametry, jako je barva, a přiřadit je ke stejné třídě.

V souboru FormMacros.json deklaruji dvě makra, která používají stejnou třídu a parametr barva:

{
   "macros": {
      "Set Font Color to Red": {
         "class": "SetFontColor",
         "color": "red"
      },
      "Set Font Color to Green": { 
         "class": "SetFontColor", 
         "color": "green"
      },
}

V konstruktoru třídy načtu parametr color:

Class constructor
var : . := . $1 Object
Thiscolor$1color

Ve funkci onInvoke mohu použít stejný kód jako v příkladu 1. Jediný rozdíl je v tom, že místo řetězce „červená“ použijeme proměnnou „This.color„.

Třída„SetFontColor“ obsahuje kód makra, je k dispozici v komponentě„HDI_FormMacro“ na GitHubu.

Příklad 3: Přidání objektu formuláře s metodou

Pomocí makra můžete také přidávat objekty formuláře pomocí metody. Existuje několik způsobů, jak přidružit nebo přidat metodu. Doporučuji přečíst situto stránku dokumentace, která vysvětluje všechny možnosti.

V tomto příkladu je do 4D předán pouze řádek kódu metody. Při spuštění 4D vytvoří a pojmenuje příslušný soubor s metodou.

Function onInvoke($editor: Object)->$result: Object
var $btnHello : Object

// Create a "Hello" button
$btnHello :=New object("type"; "button";\
"text"; "Hello World!";\
"method";New object("source"; "ALERT(\"coucou\")");\
"events";New collection("onClick");\
"width";120;\
"height";20;\
"top";0;\
"left";0).

// Add button in the current page
$editor.editor.currentPage.objects.btnHello:=$btnHello
// Select the new button in the form editor
$editor.editor .currentSelection.clear()
$editor.editor .currentSelection.push("btnHello")

// Notify 4D of the modification
$result :=New object
$result .currentSelection:=$editor.editor.currentSelection
$result .currentPage:=$editor.editor.currentPage

Pro snadné umístění objektu formuláře ve formuláři a případnou úpravu dalších vlastností vybírám objekt formuláře pomocí jednoduchého clear() a push() na„currentSelection„, přičemž nezapomenu vrátit„currentSelection„, abych 4D o úpravách informoval.

Třída„AddButton“ obsahuje kód makra, je k dispozici v komponentě„HDI_FormMacro“ na GitHubu.

Příklad 4: Kontrola cest k obrázkům ve formuláři

Můžete také napsat makra, která nemění formulář. Místo toho tato makra umožňují ověřovat informace, atributy nebo vlastnosti ve formuláři. Například ověřování cest k obrázkům ve vícestránkovém formuláři.

Třída„CheckImagePath“ obsahuje kód makra, je k dispozici v komponentě„HDI_FormMacro“ na GitHubu.

Příklad 5: Použití modálního dialogu v makru

Makro může také zobrazit modální dialog. Například pro zobrazení seznamu objektů aktuální stránky s jejich typem, názvem a třídou CSS nebo jakýmkoli jiným požadovaným parametrem. Když vývojář klikne na tlačítko Vybrat v dialogu, vybrané objekty se vyberou i v editoru formuláře.

blank

Třída„ObjectList“ obsahuje kód makra, je k dispozici v komponentě„HDI_FormMacro“ na GitHubu.

Příklad 6: Zarovnání k objektu

Chcete-li zarovnat objekty k referenčnímu objektu v 4D, musíte projít dialogovým oknem zarovnání. Proč nevybrat několik objektů a nerozhodnout, že objekt pod kontextem kliknutí je referenční objekt? Tedy ve svém kódu:

  • obdržíte seznam objektů vybraných v „currentSelection
  • a název objektu v kontextu kliknutí je ve vlastnosti „target„.

blank

Voilà! Díky této informaci můžete vytvořit všechna zarovnání nebo rozdělení, která chcete. Ve třídě„AlignOnTarget“ máte příklad zarovnání vlevo, vpravo, nahoře a dole vzhledem k objektu. V tomto makru nejsou implementovány skupiny, takže pokud tuto možnost přidáte, neváhejte se o ni podělit zpět na GitHub!

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.