Používání kolekcí a seznamů v rámci objektů formulářů

Automaticky přeloženo z Deepl

V programování 4D se stále častěji používajíkolekce. Počínaje verzí 4D v19 je můžete používat k definování obsahu některých objektů rozhraní, a to i prostřednictvím funkce Form. To je velmi užitečné pro obecnou správu rozhraní.

Přidali jsme také vylepšení způsobu používání seznamů. Pojďme se na to podívat podrobněji!

Používání kolekcí a seznamů v rámci objektů formulářů

Vylepšení používání seznamů

Použití seznamů bylo vylepšeno:
– Hierarchické seznamy
– Ovládací prvky karty (první případ použití)

Kolekce lze nyní používat jako odkazy s následujícími objekty:
– Rozbalovací seznamy (známé také jako „vyskakovací seznamy“)
– Combo boxy
– Ovládací prvky s kartami (druhý případ použití)

Hierarchické seznamy a ovládací prvky s ouškem

Vylepšili jsme používání odkazů na seznamy u ovládacích prvků karet a objektů hierarchických seznamů formulářů. Již dříve bylo možné přiřadit odkaz na seznam přímo k objektu formuláře, ale nyní lze tento odkaz získat z atributu objektu. Nyní tedy můžete napsat tento :

// create a new object
$o
:=New object
// přidat seznam k tomuto objektu
$o .listRef:=New list
// then add items, icons, etc. to this list

// (…)
// pak zavolat dialog pomocí tohoto objektu (s obsaženým odkazem na seznam
)
DIALOG ("myForm";$o)
// vymazat seznam, aby nedocházelo k únikům paměti
CLEAR LIST ($o.listRef)

Hotovo!

Rozbalovací seznamy (vyskakovací okna), Combo boxy a ovládací prvky Tab (opět!)

Hlavní vývoj se týká kolekcí. Možné hodnoty následujících objektů formuláře mohou být založeny na kolekci skalárních hodnot (obvykle alfanumerických), přesněji na objektu, který sám obsahuje kolekci. Proč? Protože je zpravidla nutné znát hodnotu vybranou uživatelem a/nebo vybrat výchozí hodnotu (první karta, třetí položka rozbalovacího seznamu atd.).

Proměnná objektu bude tedy obsahovat následující tři atributy :
values: kolekce možných hodnot
index: index vybraného prvku (v rozevíracích seznamech a kartách)
currentValue: aktuální hodnota (používá se u výběrových polí, kde uživatel může buď vybrat, nebo zadat hodnotu).

příklad

Představte si, že chcete vyvolat dialogové okno, jako je to níže uvedené. Před vyvoláním dialogu však chcete definovat:

  • Obsah ovládacího prvku s kartami „Alpha“; „Bravo“; „Charlie“.
  • Nadpis (a dát možnost jej zadat)
  • Možné volby pro „Stav“

blank

Každý z těchto objektů formuláře bude mít stejný typ přidružené proměnné nebo výrazu: Objekt

blank

// prepare a global object that will be sent to the dialog command
$o
:=New object

// prepare the tab control object
$o
.oTab:=New object
$o .oTab.values:=New collection("Alpha"; "Bravo"; "Charlie")
$o .oTab.index:=0 // vyberte záložku "Alpha"

// prepare the Title object
$o .oCombo:=New object
$o .oCombo.values:=New collection("Mr"; "Mz"; "Dr")
$o .oCombo.currentValue:=""

// prepare the Status object
// tip : když je index = -1, použije se currentValue jako zástupný znak !
$o .oPop:=New object
$o .oPop.values:=New collection("svobodný"; "ženatý"; "vdova"; "rozvedený")
$o .oPop.currentValue:="Vyberte stav..."
$o .oPop.index:=-1

$win :=Open form window("BLOG")
DIALOG ("BLOG"; $o)

Spusťte tuto metodu a vyplňte dialogové okno…

blankblank

Po potvrzení dialogu (kliknutí na tlačítko OK) se dozvíte, jaký název a stav byl vybrán nebo zadán.

Zde je výsledná hodnota JSON vráceného objektu:

blank

Závěr .

Použití jediného objektu k okamžitému definování zobrazených a vybraných hodnot je skvělé. Můžete použít kolekce v mnoha objektech najednou a vyhnout se použití procesních nebo meziprocesních polí. Samozřejmě je také dosaženo hlavního cíle: díky tomu bude obecné programování jednodušší než kdykoli předtím.

Jako obvykle vás touto funkcí provede HDI a aktualizována byla také dokumentace.

Užijte si to a přeji vám příjemné programování!

Roland Lannuzel
- Product Owner & 4D Expert - Po studiu elektroniky se Roland věnoval průmyslovým IT jako vývojář a konzultant, který vytvářel řešení pro zákazníky s různými databázemi a technologiemi. Koncem 80. let se zamiloval do 4D a používal jej při psaní podnikových aplikací, které zahrnovaly účetní, fakturační a e-mailové systémy. nakonec se připojil ke společnosti v roce 1997 a Rolandův cenný přínos zahrnuje návrh specifikací, testovacích nástrojů, demoverzí a také školení a přednášky pro komunitu 4D na mnoha konferencích. Nadále aktivně utváří budoucnost 4D definováním nových funkcí a nástrojů pro vývoj databází.