
Základní úvahy: Co by měla navigace umět?
V první řadě byste si měli uvědomit, jaké jsou cíle, co by měla navigace umět a jak by měla být strukturovaná. Pro svůj ukázkový soubor jsem definoval následující požadavky:
- Grafická tlačítka menu s vyměnitelnou grafikou
- Individuální označení každého navigačního tlačítka (volitelně vícejazyčné)
- Navigace na dvou úrovních
- Jednoduchá správa navigace pro všechna rozložení
- Běží bez zásuvného modulu a pod FileMaker Go pro iPad a iPhone
Řešení navigace uvedené v tomto příkladu nefunguje bez úprav, pokud má uživatelské rozhraní běžet v několika oknech, protože aktuální název rozložení je uložen v globálním poli. Tento problém by se dal poměrně snadno vyřešit pomocí správy oken - protože však chci ve svém příkladu ukázat co nejjednodušší navigační řešení, tuto možnost jsem nezapracoval.
Hlavní datová tabulka s globálními poli
Abychom mohli zobrazit grafické prvky a popisky v rozvrženích, musíme vytvořit odpovídající pole v centrálním systému. Tabulka soubor. V našem příkladovém souboru se příslušná pole nacházejí v tabulce <>. Pro grafické prvky se používají pole Media a pro popisky textová pole. Všechna příslušná pole v tabulce <> musí být definována jako globální pole, aby bylo možné obsah polí zobrazit i později v režimu vyhledávání. V řešení byla vytvořena následující globální pole pro grafické prvky navigace:
- skn_key_active (aktivní tlačítko)
- skn_key_inactive (neaktivní tlačítko)
Pro označení tlačítek byla vytvořena následující globální pole:
- txt_z1s1 (Označení navigačního tlačítka, řádek 1, sloupec 1)
- txt_z1s2 (Označení navigačního tlačítka, řádek 1, sloupec 2)
- txt_z1s3 (Označení navigačního tlačítka, řádek 1, sloupec 3)
- txt_z1s4 (Označení navigačního tlačítka, řádek 1, sloupec 4)
- txt_z1s5 (Označení navigačního tlačítka, řádek 1, sloupec 5)
- txt_z1s6 (Označení navigačního tlačítka, řádek 1, sloupec 6)
- txt_z1s7 (Označení navigačního tlačítka, řádek 1, sloupec 7)
- txt_z1s8 (Označení navigačního tlačítka, řádek 1, sloupec 8)
Pro druhou úroveň (řádek) byla vytvořena pole txt_z2s1 až txt_z2s8. Pro navigaci byla vytvořena pole pro Skript-parametry, které lze přizpůsobit v navigaci. Tato pole jsou zároveň globálními poli v tabulce <>:
- par_z1s1 (Parametr skriptu pro navigační pole řádek 1, sloupec 1)
- par_z1s2 (Parametr skriptu pro navigační pole řádek 1, sloupec 2)
- par_z1s3 (Parametr skriptu pro navigační pole řádek 1, sloupec 3)
- par_z1s4 (Parametr skriptu pro navigační pole řádek 1, sloupec 4)
- par_z1s5 (Parametr skriptu pro navigační pole řádek 1, sloupec 5)
- par_z1s6 (Parametr skriptu pro navigační pole řádek 1, sloupec 6)
- par_z1s7 (Parametr skriptu pro navigační pole řádek 1, sloupec 7)
- par_z1s8 (Parametr skriptu pro navigační pole řádek 1, sloupec 8)
Pro druhou úroveň (řádek) byla vytvořena pole par_z2s1 až par_z2s8. Tabulka <> obsahuje také globální pole <>, do kterého se zapisuje aktuální layout, globální klíčové pole <> (obsahuje "1") a některé další grafické prvky pro zobrazení na layoutech FileMakeru.
Tabulka GUI pro ovládání navigace
Všechna rozložení jsou uložena v další tabulce nazvané <> s odpovídajícím označením a parametry. Jako Primární klíč v této tabulce se používá název rozložení. Na rozdíl od tabulky <> nejsou pole v této tabulce vytvořena jako globální pole, ale jako běžná textová a mediální pole. Pro označení byla vytvořena následující pole:
- txt_z1s1 (Označení navigačního pole, řádek 1, sloupec 1)
- txt_z1s2 (Označení navigačního pole, řádek 1, sloupec 2)
- txt_z1s3 (Označení navigačního pole, řádek 1, sloupec 3)
- txt_z1s4 (Označení navigačního pole, řádek 1, sloupec 4)
- txt_z1s5 (Označení navigačního pole, řádek 1, sloupec 5)
- txt_z1s6 (Označení navigačního pole, řádek 1, sloupec 6)
- txt_z1s7 (Označení navigačního pole, řádek 1, sloupec 7)
- txt_z1s8 (Označení navigačního pole, řádek 1, sloupec 8)
Pro druhou úroveň nabídky byla vytvořena pole txt_z2s1 až txt_z2s8. Podobně jsou vytvořena pole
- <> do <> a <> do <> pro parametry skriptu a
- <> do <> a <> do <>
jako příznak, zda je příslušné pole aktivní nebo ne (obsahuje 1 pro aktivitu a jinak je prázdný). Tabulka <> obsahuje pole <> a globální klíč <>.
Propojení tabulky grafického uživatelského rozhraní s hlavními daty
Dále je třeba propojit tabulku grafického uživatelského rozhraní s hlavními daty. Všimněte si, že na tabulku <> existují dva odkazy:
- gui (<> = <>)
- glo_gui (<> = <>)
První odkaz "gui" je nutný pro navigační funkci. Zde globální pole <> obsahuje název aktuálního rozložení a pole <> obsahuje název rozložení v databázi GUI. Druhý odkaz je globální pro zobrazení rozvržení administrace s TO = master data.
Každá datová tabulka v řešení FileMaker musí mít pole <> a musí být prostřednictvím tohoto pole globálně propojena s tabulkou <>. V našem příkladu je to tabulka <>.
Odpis pro strukturu polí souvisejících s navigací
Jistě si pamatujete, že jsme v tabulce <> vytvořili několik globálních polí, která obsahují grafický prvek a textový popisek pro každé tlačítko. Obsah, který se do těchto polí zapisuje, pochází z tabulky <> pro každé jednotlivé rozložení. Po kliknutí na tlačítko se subskript ts.GUI_Menu Layout postará o přenos dat z tabulky <> do globálních polí tabulky <>.
Prvním krokem je načtení režimu okna, protože databáze musí být v režimu prohlížení, aby bylo možné přenášet data. Prvním krokem je tedy zjištění, v jakém režimu se databáze právě nachází:
Nastavit proměnnou [1TP4Window mode; Hodnota:Get ( Window mode )] If [windowmode = 1] Aktivuje režim posouvání Konec (if)
Název aktuálně volaného rozvržení se pak zapíše do globálního klíčového pole _sys_Akt_Layout tabulky "std":
Nastavení hodnoty pole [std::_sys_Akt_Layout; Get ( LayoutName )
Všechna globální pole v tabulce "std", která jsou relevantní pro navigaci, jsou pak vyplněna hodnotami. To se týká všech osmi tlačítek v prvním a druhém řádku v tabulce Navigační panel:
Mediální pole pro tlačítka nabídky:
Nastavení hodnoty pole [std::nav_z1s1;
If(IstLeer(gui::txt_z1s1); "";
Pokud(
IstLeer(gui::akt_z1s1); std::iPad_taste_inaktiv;
std::iPad_button_active)]
Řádek 1, sloupec 1, 1 až 8 v každém případě s ohledem na to, zda je položka nabídky aktivní, nebo ne.
Štítky pro tlačítka nabídky:
Nastavení hodnoty pole [std::txt_z1s1; gui::txt_z1s1]
Řádek 1, sloupec 1, vždy 1 až 8
Parametry skriptu pro tlačítka nabídky:
Nastavení hodnoty pole [std::par_z1s1; gui::par_z1s1]
Řádek 1, sloupec 1, vždy 1 až 8
V posledním kroku se skript vrátí k poslednímu dotazu v režimu vyhledávání, pokud by byl skript zrušen příkazem Režim vyhledávání byly volány z.
lay.navigation: Centrální skript pro navigaci
Skript "lay.Navigation" je ústředním skriptem pro navigaci ve všech rozloženích. V naší malé ukázkové databázi jsme zde zatím použili pouze "normální" rozvržení obrazovky, ale stejný princip lze samozřejmě použít například i u rozvržení seznamu nebo tisku. Parametrem skriptu použitým v tomto skriptu je parametr skriptu určený pro rozvržení, na které se dotazujeme v prvním řádku.
If [Get(ScriptParameter) = "Parametry skriptu ze správy rozložení"] Otevřít soubor ["GFM_GUI"] Přejděte na rozvržení ["Název rozvržení"] Spusťte skript ["ts.GUI_Menu Layout"] Obnovit okno [Smazat výsledky spojení v mezipaměti] Konec (if)
Zobrazení navigace v rozvržení aplikace FileMaker
V rozvržení FileMaker lze nyní navigaci integrovat vždy stejným způsobem do každého rozvržení, protože se skládá výhradně z polí tabulky "std", jejíž globální pole jsou k dispozici všude a lze je zobrazit i v režimu vyhledávání.
Texty zobrazené v navigaci odpovídají textům zadaným v rozvržení "Správa - Navigace" pro příslušné rozvržení:
Rozložení ukazuje Portál do tabulky "gui", ve které je uloženo každé rozložení s přidruženými položkami nabídky, označením a parametry skriptu. Má-li být přidáno nové rozložení, stačí kliknout na tlačítko [+], aby se zkopíroval přibližně odpovídající datový záznam, a poté kopii přizpůsobit. Tlačítko [-] lze použít k odstranění rozvržení z navigace.
Všechny grafické prvky zobrazené na této obrazovce jsou globální pole z tabulky "std". Tabulka byla obohacena o některá další pole, například různá barevná pozadí sloupců, která lze použít v portálech.
Veškerou grafiku uživatelského rozhraní lze přizpůsobit v nabídce "Správa - Grafika". V ukázkovém souboru jsou grafiky uloženy jako upravitelné soubory Fireworks PNG, některé s gradientními cestami. Kliknutím pravým tlačítkem myši lze obsah jednotlivých polí médií nahradit novým obsahem.
Vstupní maska pro příkladovou tabulku
Vzorový soubor obsahuje vzorovou tabulku a vzorový portál, který je zobrazen v navigaci v části [Data - Vstup]. Ukázkový portál obsahuje tlačítka a pozadí sloupce z tabulky [std] pro ilustrační účely. Pozadí sloupců uložená v tabulce [std] lze také použít k realizaci podmíněného formátování portálů pomocí pole vzorců cílového typu "Média".
Další vývoj modelu kotevní bóje
Příkladový soubor, který si můžete stáhnout na konci tohoto článku, byl částečně optimalizován pro použití s modelem kotevní bóje. Pro samotnou navigaci však nemohl být důsledně implementován, protože vztah "std" musí mít vždy stejné jméno. Příkladné tabulky dat a portálů však byly implementovány podle modelu kotevní bóje, takže zbývající část dat lze bez problémů realizovat i v tomto modelu.
Implementace dalších funkcí
Na základě vzorového souboru lze poměrně snadno integrovat další funkce. Hotový systém by například mohl obsahovat rozvržení pro všechny systémy, tj. Mac, Windows, iPad a iPhone, a díky možnosti skinování přecházet na rozvržení, která odpovídají systému vizuálně i velikostí. Navigaci lze také v několika krocích realizovat v několika jazycích, což umožňuje libovolný počet překladů. Bylo by také myslitelné mít například funkci, která si pamatuje poslední podkategorii vyvolanou z každé hlavní kategorie a při skoku zpět do první hlavní kategorie nepřejde na rozložení definované v databázi souborů GUI, ale na rozložení naposledy vyvolané uživatelem v této hlavní kategorii. Pokud máte nějaké další nápady, neváhejte zanechat komentář :-)
Stáhnout ukázkové řešení FileMaker GFM_GUI
Níže si můžete stáhnout ukázkový soubor "GFM_GUI", který je vysvětlen v tomto článku. Formát 7. RP pro FileMaker 7-11 a ve formátu FMP12 pro FileMaker 12 zdarma. Chcete-li zahájit stahování, doporučte nás na Facebooku, Google+ nebo Twitteru.
Informace o souboru: Archiv ZIP (697 kB)
Obsahuje: GFM_GUI.fp7 (1,6 MB), GFM_GUI.fmp12 (2,5 MB)

Markus Schall vyvíjí od roku 1994 databáze, rozhraní a podnikové aplikace na míru založené na Claris FileMaker. Je partnerem společnosti Claris, držitelem ocenění FMM Award 2011 a vývojářem aplikace Software ERP gFM-Business. Je také autorem knih a zakladatelem organizace M. Schall Publishers.







Ahoj Markusi,
Vaše navigační řešení zní zajímavě; rád bych si stáhl ukázkový soubor:
- registrovaná na FB
- Kliknuto jako
- Stahování se nespustí :(
Můžete mi dále pomoci?
pozdrav
ccp
... omlouvám se, prosím, vezměte to zpět ... to fungovalo v jiném prohlížeči ... děkuji moc za vaši snahu a přeji hezký den