Nebylo by skvělé, kdybyste mohli jednoduše otevřít formulář a předat mu některé parametry pro inicializaci objektů formuláře? A co kdybyste mohli také získat data zpět ke zpracování poté, co je uživatel upravil? 4D v16 R5 vám velmi usnadní kódování tím, že výrazně zjednoduší komunikaci s formuláři.
Až dosud, když jste chtěli zobrazit data (nepocházející přímo z databáze, ale vypočtená nebo externí) více uživatelům, měli jste dvě možnosti: buď napsat složitý kód pro obsluhu zobrazení dat ve více procesech, nebo vytvořit tolik formulářů, kolik bylo potřeba, s hromadou globálních proměnných. Víte však, že globální proměnné nejsou z paměťového hlediska optimalizovaným způsobem kódování.
Zbavte se tedy složitého kódu a globálních proměnných! Pomocí stránky 4D v16 R5 můžete jednoduše svázat objekt s formulářem a interně jej používat pomocí nového příkazuForm . Bezbolestné… a výkonné!
Předávání parametrů formuláři
Nyní je možné předávat parametry v objektu do formuláře pomocí příkazu DIALOG příkazu. Jakákoli vlastnost tohoto objektu pak bude dostupná z kontextu formuláře prostřednictvím příkazu Form příkazu.
C_LONGINT($window)
C_OBJECT($address)
$address:=Novýobjekt
$address.CompanyName:="4D"
$address.LastName:="Dupont"
...
$window:=Otevřítokno formuláře("AddressForm";Dialogové okno pohyblivého formuláře)
// Formulář je otevřen s objektem $adresa v parametru
// To umožňuje upravit objekt $adresa ve formuláři pomocí příkazu Form
DIALOG("AddressForm";$adresa)
CLOSE WINDOW($window)
ALERT("Nový název společnosti je: "+$address.CompanyName)
Ve formuláři „AddressForm“ stačí použít příkaz Form příkaz ve zdroji dat objektu formuláře:
Když uživatelé zavřou dialogové okno, hodnoty, které zadali, jsou k dispozici ve volající metodě prostřednictvím objektu $adresa .
Předávání parametrů do dílčího formuláře
Stejným způsobem, jakým předáváte objekt do formuláře pomocí příkazu DIALOG příkazem, můžete také předat objekt do oblasti podformuláře pomocí seznamu vlastností. Pak jej můžete použít v podformuláři pomocí příkazu Form příkazem. V níže uvedeném příkladu je k podformuláři vázán objekt InvoiceAddress.