LibreOfficeLogo

Příručka aplikace Base 7.3

Kapitola 4
Formuláře

 

Autorská práva

Tento dokument je chráněn autorskými právy © 2022 týmem pro dokumentaci LibreOffice. Přispěvatelé jsou uvedeni níže. Dokument lze šířit nebo upravovat za podmínek licence GNU General Public License (https://www.gnu.org/licenses/gpl.html), verze 3 nebo novější, nebo the Creative Commons Attribution License (https://creativecommons.org/licenses/by/4.0/), verze 4.0 nebo novější.

Všechny ochranné známky uvedené v této příručce patří jejich vlastníkům.

Přispěvatelé

Pro toto vydání

Olivier Hallot

Steve Fanning

 

Pro předchozí vydání

Robert Großkopf

Pulkit Krishna

Jost Lange

Dan Lewis

Hazel Russman

Jochen Schiffers

Jean Hollis Weber

 

 

Zpětná vazba

Jakékoli připomínky nebo návrhy k tomuto dokumentu prosím směřujte do fóra dokumentačního týmu na adrese https://community.documentfoundation.org/c/documentation/loguides/ (registrace je nutná) nebo pošlete e-mail na adresu: loguides@community.documentfoundation.org.

Poznámka

Vše, co napíšete do fóra, včetně vaší e-mailové adresy a dalších osobních údajů, které jsou ve zprávě napsány, je veřejně archivováno a nemůže být smazáno. E-maily zaslané do fóra jsou moderovány.

Datum vydání a verze programu

Vydáno Srpen 2022. Založeno na LibreOffice 7.3 Community.
Jiné verze LibreOffice se mohou lišit vzhledem a funkčností.

Používání LibreOffice na systému macOS

Některé klávesové zkratky a položky nabídek jsou v systému macOS jiné než v systémech Windows a Linux. V následující tabulce jsou uvedeny nejdůležitější rozdíly, které se týkají informací v této knize. Podrobnější seznam se nachází v nápovědě aplikace.

Windows nebo Linux

Ekvivalent pro macOS

Akce

Výběr v nabídce Nástroje > Možnosti

LibreOffice > Předvolby

Otevřou se možnosti nastavení.

Klepnutí pravým tlačítkem

Ctrl + klepnutí a/nebo klepnutí pravým tlačítkem v závislosti na operačním systému počítače

Otevře se místní nabídka.

Ctrl (Control)

⌘ (Command)

Používá se také s dalšími klávesami.

Ctrl + Q

⌘ + Q

Ukončí LibreOffice

 

Formuláře usnadňují zadávání dat

Formuláře se používají v případech, kdy je přímý zápis do tabulky nepohodlný, k rychlému zachycení chyb při zadávání dat nebo v případech, kdy příliš mnoho tabulek znemožňuje přímou správu dat.

Poznámka

Formulář v aplikaci Base je struktura neviditelná pro uživatele. V rámci aplikace Base umožňuje kontakt s databází. To, co je pro uživatele viditelné, je sada ovládacích prvků, které slouží k zadávání nebo zobrazování textu, čísel atd. Tyto ovládací prvky jsou v grafickém uživatelském rozhraní rozděleny do různých typů.

Image2

Obrázek 1: Schematické znázornění jednoduchého formuláře

Termín Formulář má dva významy. Může znamenat celý obsah vstupního okna, které se používá pro správu dat jedné nebo více tabulek. Takové okno může obsahovat jeden nebo více hlavních formulářů a každý z nich může obsahovat podformuláře. Pro tyto dílčí oblasti se také používá slovo Formulář. Z kontextu by mělo být zřejmé, o jaký význam se jedná, aby nedošlo k nedorozumění.

Vytváření formulářů

Nejjednodušším způsobem vytvoření formuláře je použití Průvodce formulářem. Jeho použití k vytvoření formuláře je popsáno v kapitole 8, Začínáme s Base, v příručce Začínáme s aplikací Base. V této kapitole je také vysvětleno, jak můžeme formulář po použití Průvodce dále upravovat.

Tato příručka popisuje vytvoření formuláře bez použití Průvodce. Popisuje také vlastnosti různých typů ovládacích prvků ve formuláři.

Jednoduchý formulář

Začneme pomocí úlohy Vytvořit formulář v zobrazení návrhu v oblasti Formuláře hlavního okna aplikace Base.

Grafik3

Obrázek 2: Vytvoření nového formuláře v režimu návrhu

Tím se vyvolá Editor formuláře a formulář se zobrazí v okně režim Návrhu (obrázek 3).

Nástrojová lišta Ovládací prvky formuláře je ukotvena na levé straně. Nástrojová lišta Návrh formuláře (obrázek 5) je zakotven ve spodní části. Pokud se tyto nástrojové lišty nezobrazí automaticky, zobrazíme je pomocí Zobrazení > Nástrojové lišty. Bez těchto nástrojových lišt nelze formulář vytvořit.

Image13

Obrázek 3: Okno Databázový formulář podporuje návrh formulářů v režimu Návrh.

V prázdné oblasti je zobrazena mřížka bodů. Tato mřížka nám pomůže přesně umístit ovládací prvky, zejména ve vzájemném vztahu. Symboly na pravém konci nástrojové lišty Návrh formuláře ukazují, že mřížka je viditelná a aktivní. Poslední tři symboly by měly být viditelné a aktivní. Pokud nejsou všechny, klepneme na ty, které nejsou.

Tip

Editor formuláře pracuje vlastně jako dokument Writer. Pro úpravy formuláře jsou k dispozici všechny prostředky Writeru, včetně stylů, přímého formátování, kontroly pravopisu, objektů a dalších.

Nástrojové lišty pro návrh formulářů

Na prázdné stránce se vytvoří formulář. To lze provést dvěma způsoby:

Nastavení formuláře pomocí nástroje Navigátor formulářem

Chceme-li zobrazit nástroj Navigátor formuláře, klepneme na tlačítko Navigátor formuláře (na obrázku 5). Zobrazí se okno (obrázek 4); v něm je zobrazena pouze jedna složka označená jako Formuláře. Jedná se o nejvyšší úroveň oblasti, kterou upravujeme. Lze sem umístit několik formulářů.

Image14

Obrázek 4: Použití Navigátoru formuláře k vytvoření nového formuláře

Image15

Obrázek 5: Nástrojová lišta Návrh formuláře

V okně Navigátor formulářů (obrázek 4) klepneme pravým tlačítkem myši na položku Formuláře a otevřeme místní nabídku. Chceme-li vytvořit nový formulář, zvolíme Nový > Formulář. Další volby v místní nabídce (Otevřít v režimu návrhu a Automatické zaostření ovládání) odpovídají tlačítkům na obrázku 7; probereme je později.

Tip

Chceme-li spustit formulář s kurzorem v prvním poli, použijeme volbu Automaticky zaměřit ovládací prvek. To, co se považuje za první prvek, je určeno aktivační posloupností formuláře.

Formulář nese výchozí název Form. Tento název můžeme změnit okamžitě nebo později. Nemá žádný význam, pokud nepotřebujeme přistupovat k některé části formuláře pomocí maker. Jediné, co je třeba zajistit, je, aby se dva prvky se stejným názvem nevyskytovaly na stejné úrovni ve stromu složek.

Místní nabídka formuláře (obrázek 6) umožňuje vytvářet vlastnosti formuláře.

Grafik7

Obrázek 6: Přístup k dialogovému oknu Vlastnosti formuláře

Vytvoření formuláře pomocí formulářového pole

Nástrojová lišta Ovládací prvky formuláře (obrázek 7) obsahuje tlačítka, pomocí kterých lze vytvářet ovládací prvky (popisek plus pole). Ne všechna tlačítka jsou přímo viditelná na levé straně formuláře. Klepnutím na spodní tlačítko (») zobrazíme ostatní viditelná tlačítka. Chceme-li zobrazit všechna viditelná i neviditelná tlačítka, klepneme pravým tlačítkem myši na libovolnou část nástrojové lišty a vybereme možnost Viditelná tlačítka. Viditelná tlačítka jsou zaškrtnutá, nezaškrtnutá nejsou viditelná.

To umožňuje vybrat tlačítka, která chce uživatel pravidelně používat, a zároveň odstranit nežádoucí tlačítka. Příklad: Tlačítko Ovládací prvek tabulky není viditelné, ale lze jej zobrazit tak, že jej nejprve vyhledáme v seznamu všech tlačítek a poté jej zaškrtneme.

Image30

Obrázek 7: Nástrojová lišta Ovládací prvky formuláře

Výběrem ovládacího prvku formuláře se automaticky vytvoří formulář. Předpokládejme například, že vybereme textové pole: kurzor změní tvar a na bílé ploše formuláře se může vykreslit obdélníkový tvar. Poté se na tečkovaném povrchu formuláře objeví textové pole.

Grafik10

Obrázek 8: Vložení textového pole

Nyní můžeme vytvořit formulář klepnutím pravým tlačítkem myši a použitím místní nabídky ovládacího prvku (obrázek 9).

Image12

Obrázek 9: Přístup k dialogu Vlastnosti formuláře z místní nabídky ovládacího prvku formuláře

Výběrem možnosti nabídky Formulář (zvýrazněné na obrázku) nastavíme vlastnosti právě vytvořeného formuláře. Formulář má výchozí název Form.

Externí formuláře

Kromě formulářů vytvořených v aplikaci Base je možné vytvářet formuláře také v aplikaci Writer nebo Calc. Ty jsou popsány v kapitole 7, Propojení s databázemi.

Vlastnosti formuláře

Po vyvolání vlastností formuláře pomocí místní nabídky v Navigátoru formulářem nebo místní nabídky ovládacího prvku formuláře se zobrazí okno Vlastnosti formuláře. Má tři karty: Obecné, DataUdálosti.

Karta Obecné

Zde můžeme změnit Název formuláře. Kromě toho existují možnosti designu, které nemají uvnitř aplikace Base žádný význam. Ukazují pouze obecnější možnosti návrhu pomocí editoru formulářů: při vytváření webového formuláře je budeme muset použít.

Grafik12

Obrázek 10: Dialogové okno Vlastnosti formuláře (karta Obecné)

URL: Cílová adresa pro data.

Rámec: Část cílové webové stránky, která má být v případě potřeby adresována.

Kódování pro odeslání: kromě běžného kódování znaků pro převod na adresu URL zde můžeme zadat kódování textu a kódování více částí (například pro přenos dat).

Typ odeslání: GET (viditelné přes URL připojené k názvu souboru; často se s ním můžeme setkat na webu, pokud používáme vyhledávač) nebo POST (není viditelné; vhodné pro velké objemy dat).

Karta Data

Grafik13

Obrázek 11: Dialogové okno Vlastnosti formuláře (karta Data)

Pro vytváření interních formulářů v aplikaci Base je tato karta nejdůležitější. Zde můžeme nastavit následující počáteční vlastnosti formuláře:

Typ obsahu: Vybereme si mezi tabulkou, dotazem a příkazem SQL. Zatímco tabulku lze vždy použít pro zadávání dat do formuláře, v případě dotazu (více informací nalezneme v kapitole 5, Dotazy) nebo přímého zadání příkazu SQL to vždy neplatí. Zde se jedná o dotaz, který není viditelný v kontejneru dotazů Base, ale má v zásadě stejnou strukturu.

Obsah: Podle toho, zda byla výše vybrána tabulka nebo dotaz, se zobrazí všechny dostupné tabulky a dotazy. Pokud má být vytvořen příkaz SQL, můžeme vyvolat Editor dotazů pomocí elipsy (...) vpravo vedle pole Obsah.

Analyzovat SQL příkaz: Pokud by analýza příkazů SQL neměla být povolena (například proto, že používáme kód, který grafické rozhraní nemůže správně zobrazit), měli bychom zde zvolit Ne. To však zabrání formuláři v přístupu k podkladovým datům pomocí filtru nebo třídění.

Filtr: Zde můžeme nastavit filtr. Chceme-li získat nápovědu, klepneme na tlačítko vpravo vedle pole. Viz také kapitola 3, Tabulky.

Třídění: Zde můžeme nastavit třídění dat. Chceme-li získat nápovědu, klepneme na tlačítko vpravo vedle pole. Viz také kapitola 3, Tabulky.

Povolit přidávání: Má být povoleno zadávání nových údajů? Ve výchozím nastavení je tato hodnota nastavena na Ano.

Povolit změny: Měla by být povolena editace dat? Ve výchozím nastavení také Ano.

Povolit mazání: Ve výchozím nastavení je povoleno i mazání dat.

Pouze přidat data: Pokud zvolíme tuto možnost a pro ostatní volby zadáme Ne, zobrazí se vždy prázdný formulář. Ke stávajícím datům, která nelze upravovat ani prohlížet, nebude umožněn přístup. Pokud je však vybrána možnost Povolit přidávání a pouze přidat data, lze data do pole přidat. Jakmile jsou však data uložena, nejsou již viditelná ačkoliv byla zapsána do tabulek.

Tip

Tato vlastnost může být užitečná v případě, kdy je třeba do databáze přidat data, ale osoba, která je zadává, je nesmí pouze zadávat, ale ani nijak upravovat. Úpravu je třeba přenechat jiné osobě, která má k dispozici jiný formulář, který to umožňuje.

Lišta navigace: Zobrazení Lišty navigace ve spodní části obrazovky lze zapnout nebo vypnout. Existuje také možnost, aby se v případě, že máme podformulář, vždy zobrazil navigační panel pro hlavní formulář, takže aktivace tohoto panelu nástrojů ovlivní pouze hlavní formulář. Toto nastavení navigačního panelu se netýká interního navigačního panelu nástrojů, který lze v případě potřeby přidat jako ovládací prvek formuláře.

Cyklus: Výchozí volbou pro databáze aplikace Base je, že po zadání do posledního pole formuláře se klávesou Tab přejde na první pole dalšího záznamu – tj. vytvoří se nový záznam. U databází to má stejný účinek jako Všechny záznamy. Pokud naopak zvolíme Aktivní záznam, kurzor se bude pohybovat pouze v rámci záznamu; jakmile dosáhne posledního pole, přeskočí zpět na první pole tohoto záznamu. Aktuální stránka se týká zejména formulářů HTML. Kurzor přeskočí z konce formuláře na další formulář na této stránce dále.

Karta Události

Grafik14

Obrázek 12: Dialogové okno Vlastnosti formuláře (karta Události)

Události mohou spouštět makra. Klepnutím na tlačítko vpravo (...) lze k události připojit makra.

Obnovit: Formulář se vyprázdní od všech nových záznamů, které ještě nebyly uloženy.

Před odesláním: Před odesláním dat formuláře. To má význam pouze pro webové formuláře.

Při načítání: Pouze při otevření formuláře, nikoliv při načítání nového záznamu do formuláře.

Při opětovným načtením: K tomu dochází při obnovení obsahu formuláře, například pomocí tlačítka na Liště navigace.

Při uvolnění: Zdá se, že tato možnost nefunguje. Očekávalo by se, že bude odkazovat na uzavření formuláře.

Po záznamu: Patří sem například uložení pomocí tlačítka. Při testech se tato akce pravidelně duplikuje; makra se spouštějí dvakrát za sebou.

Je to proto, že se zde provádějí různé funkce („implementace“). Názvy funkcí jsou:  org.openoffice.comp.svx.FormController com.sun.star.comp.forms.ODatabaseForm. Pokud se uvnitř makra, které používá oForm.ImplementationName, dotazuje na odpovídající název, může být makro omezeno na jedno spuštění.

Změna záznamu: Otevření formuláře se považuje za změnu záznamu. Kdykoli se v rámci formuláře změní jeden záznam na jiný, tato akce se provede dvakrát. Makra se proto spouštějí dvakrát po sobě. I zde můžeme rozlišit příčiny tohoto výsledku.

Vyplnit parametry: Toto makro se spustí, pokud má být v dílčím formuláři vyvolán dotaz na parametr, ale z nějakého důvodu není parametr správně přenesen z hlavního formuláře. Pokud tato událost není zachycena, bude po načtení formuláře následovat dotaz na parametry.

Došlo k chybě: Tuto událost se nepodařilo rekonstruovat.

Vlastnosti ovládacích prvků

Po vytvoření formuláře jej lze naplnit viditelnými ovládacími prvky. Některé ovládací prvky umožňují zobrazit obsah databáze nebo do ní zadávat data. Ostatní ovládací prvky slouží výhradně k navigaci, vyhledávání a provádění příkazů (interakci). Některé ovládací prvky slouží k dalšímu grafickému zpracování formuláře.

Tabulka 1: Ovládací prvky formuláře

Zadávání a zobrazování dat

Ovládací prvek

Použití

Textové pole

Zadávání textu

Číselné pole

Zadávání čísel

Pole pro datum

Zadávání dat

Pole pro čas

Zadávání časů

Měnové pole

Číselný údaj, předpřipravený pro měnu

Formátované pole

Zobrazení a zadání s dalším formátováním, například pomocí měrných jednotek.

Seznam

Volba mezi několika různými možnostmi, také pro přenos jiných než zobrazených hodnot do databáze.

Pole se seznamem

Podobně jako pole seznamu, ale přenáší se pouze zobrazená hodnota, nebo můžeme zadat nové hodnoty ručně.

Zaškrtávací pole

Pole Ano/Ne

Přepínače

Tlačítko volby; umožňuje vybrat z malého počtu možností.

Ovládací pole obrázku

Zobrazení obrázků z databáze a zadání obrázků do databáze pomocí výběru cesty

Pole vzorku

Zadání do přednastavené masky; omezuje možnosti zadání na určité kombinace znaků.

Ovládací prvek tabulky

Univerzální vstupní modul, který dokáže zobrazit celou tabulku.
Do tohoto ovládacího prvku je integrováno mnoho z výše uvedených ovládacích prvků.

Vzhled

Ovládací prvek

Použití

Pole popisku

Záhlaví formuláře, popis dalších ovládacích prvků

Seskupení

Rámeček například kolem sady tlačítek možností

Interakce

Ovládací prvek

Použití

Tlačítko

Tlačítko s popiskem

Obrázkové tlačítko

Jako tlačítko, ale se zobrazeným obrázkem (grafikou).

Lišta navigace

Nástrojová lišta velmi podobná tomu na spodním okraji obrazovky

Výběr souboru

Pro výběr souborů, například pro nahrání do formuláře HTML – není dále popsáno.

Rolovací tlačítko

Lze použít pouze s makrem - není dále popsáno.

Posuvník

Lze použít pouze s makrem - není dále popsáno.

Skrytý ovládací prvek

Zde lze hodnotu uložit pomocí maker a poté ji znovu načíst,

Výchozí nastavení mnoha ovládacích prvků

Stejně jako u formulářů jsou vlastnosti ovládacích prvků rozděleny do tří kategorií: Obecné, DataUdálosti. Obecné zahrnuje vše, co je pro uživatele viditelné. Kategorie Data určuje vazbu na pole v databázi. Kategorie Události řídí akce, které mohou být vázány na některé makro. V databázi bez maker nehraje tato kategorie žádnou roli.

Image8

Obrázek 13: Dialogové okno Vlastnosti (karta Obecné) pro textové pole

Karta Obecné

Grafik18

Název ovládacího prvku musí být v rámci formuláře jedinečný – používá se pro přístup pomocí maker.
[Name]

Grafik19

Má pole popisek? Tím se pole a štítek seskupí.

Popisek umožňuje dosáhnout pole formuláře přímo pomocí klávesové zkratky.
[LabelControl]

Grafik20

Nepovolená pole nelze použít a jsou šedá. Užitečné pro ovládání pomocí maker. (Příklad: Pokud Field 1 obsahuje hodnotu, nesmí Field 2 obsahovat žádnou hodnotu; Field 2 je deaktivováno.)
[Enabled]

Grafik21

Obvykle ano; neviditelná pole lze použít jako mezisklad, například při vytváření kombinovaných polí s makry. Viz kapitola 9, Makra.
[EnableVisible]

Grafik22

Ano vyloučí jakoukoli změnu hodnoty. To je užitečné například pro automaticky generovaný primární klíč.
[ReadOnly]

Grafik23

Někdy je užitečné vytisknout stránku z formuláře místo samostatné sestavy. V tomto případě nemusí být nutné zobrazit všechna pole.
[Printable]

Grafik24

Ve formuláři se k navigaci obvykle používá klávesa Tab.
Pole, které je určeno pouze pro čtení, nepotřebuje zarážku tabulátoru; může být vynecháno.
[Tabstop]

Grafik25

Má pole zarážku tabulátoru? Zde je zadána aktivační posloupnost v rámci formuláře.
[Tabindex]

Grafik26

Ukotvení grafiky v textovém poli.

Grafik27

Pozice od levého horního rohu vzhledem k levé straně formuláře.
[PosSize.X]

Grafik28

Pozice od levého horního rohu vzhledem k horní části formuláře.
[PosSize.Y]

Grafik29

Šířka pole.
[PosSize.Width]

Grafik30

Výška pole.
[PosSize.Height]

Grafik31

Zde lze nastavit písmo, velikost písma a efekty písma.
[Fontxxx]

Grafik32

Zarovnání. Zde je zadávaný text zarovnán vlevo.
[Align]

Grafik33

Svislé zarovnání:
Standardní | Nahoře | Uprostřed | Dole.[VerticalAlign]

Grafik34

Barva pozadí textového pole.
[BackgroundColor]

Grafik35

Ohraničení: Bez rámce | 3D vzhled | Plochý.
[Border]

Grafik36

Pokud existuje ohraničení, lze zde nastavit jeho barvu pouze v případě, že je jako ohraničení vybráno Plochý.
[BorderColor]

Grafik37

Zvýrazněný text ztratí zvýraznění, když textové pole ztratí fokus.
[HideInactiveSelection]

Grafik38

Používá se pro informace, které mají být načteny makry. Viz kapitola 9, Makra.
[Tag]

Grafik39

Zobrazí se jako nápověda při najetí myší na textové pole.
[HelpText]

Grafik40

Ukazuje na soubor nápovědy, užitečný především pro HTML. Lze vyvolat pomocí klávesy F1, když je pole aktivováno.
[HelpURL]

Číselná pole, pole pro datum atd. mají navíc tyto vlastnosti.

Grafik41

Při zapnutém testování lze zadávat pouze čísla a desetinné čárky.
[EnforceFormat]

Grafik42

Nikdy neumožňuje změny pomocí kolečka myši; Když je vybráno, umožňuje tyto změny, když je pole vybráno a myš je nad polem; Vždy znamená vždy, když je myš nad polem.
[MouseWheelBehavior]

Grafik43

V pravé části pole je symbol otáčení.
[Spin]

Grafik44

Pokud je stisknuta a podržena šipka otáčení, určuje se, zda se má údaj v poli zvýšit o další hodnotu.
[Repeat]

Grafik45

Určuje minimální prodlevu po stisknutí tlačítka myši, která spustí opakování.
[RepeatDelay]

Karta Data

Grafik46

Obrázek 14: Dialogové okno Vlastnosti (karta Data) pro textové pole

Datové pole: Zde vytvoříme vazbu s tabulkou, na které je formulář založen. [Model.DataField]

Prázdný řetězec je NULL: Zda se má prázdný řetězec považovat za (NULL) nebo se má obsah jednoduše vymazat.

Požadovaný vstup: Tato podmínka by měla odpovídat podmínce v tabulce. Pokud uživatel nezadal žádnou hodnotu, grafické uživatelské rozhraní ho vyzve k zadání. [Model.InputRequired]

Návrh filtru: Obsah tohoto pole je při filtrování dat dočasně uložen jako návrh.  [Model.UserValueFilterProposal]

Upozornění

Upozornění – při velkém obsahu může tato volba spotřebovat hodně úložného prostoru.

Karta Události

Grafik47

Obrázek 15: Dialogové okno Vlastnosti (karta Události) pro textové pole

Změněno: Tato událost nastane, když je ovládací prvek upraven a poté ztratí aktivaci. Pokud se přepneme přímo na jiný záznam, událost se ztratí. Za těchto okolností je změna uložena, aniž by byla dříve zjištěna. [com.sun.star.lang.EventObject]

Text změněn: Odkazuje na obsah, který může být ve skutečnosti textový, číselný nebo jakýkoli jiný. Objeví se po zadání každého dalšího znaku. [com.sun.star.awt.TextEvent]

Při zaměření: Kurzor vstoupí do pole.

Upozornění

Makro v žádném případě nesmí na obrazovce vytvořit dialogové okno se zprávou; klepnutí v takovém dialogu způsobí, že formulářové pole ztratí zaměření a poté jej znovu získá, čímž se makro opět spustí. Vytvoří se smyčka, kterou lze přerušit pouze pomocí klávesnice.

Při ztrátě zaměření: Kurzor opustí pole. To může vést ke stejnému druhu souhry, kdy zpracování události způsobí její opakování.

Klávesa: Odkazuje na klávesnici. Klávesa se zadává například při pohybu ve formuláři pomocí klávesy Tab. To způsobí, že pole získá zaměření. Poté se klávesa uvolní.

Událost se předává pomocí keyCode nebo KeyChar uvolněné klávesy (písmeno, číslo, speciální klávesa). [com.sun.star.awt.KeyEvent]

Myš: Samozřejmé; tyto události se odehrají pouze tehdy, pokud se myš nachází nebo již nacházela v poli ("mimo" odpovídá javascriptovému onMouseOut). [com.sun.star.awt.MouseEvent]

Přenastavení:  Ve formuláři se vyprázdní všechna data (při vytváření nového záznamu) nebo se vrátí do původního stavu (při editaci existujícího záznamu). U formulářového pole se tato událost spustí pouze tehdy, když je zadání dat zrušeno pomocí tlačítka na liště navigace. [com.sun.star.lang.EventObject] Při prvním načtení formuláře se postupně vyskytnou dvě události Před přenastavenímPo přenastavení, a to ještě předtím, než je formulář k dispozici pro zadávání.

Aktualizace: Pokud je událost vázána na ovládací prvek formuláře, aktualizace proběhne při ztrátě zaměření a přeskočení na jiný ovládací prvek formuláře po změně obsahu pole. Změny ve formuláři jsou přijaty a zobrazeny. Při uzavření formuláře dojde postupně ke dvěma událostem Před aktualizacíPo aktualizaci. [com.sun.star.lang.EventObject]

Textové pole

Stejně jako vlastnosti uvedené v části "Výchozí nastavení mnoha ovládacích prvků". nad, mohou mít textová pole následující další vlastnosti:

Karta Obecné

Grafik48

Pokud je tato hodnota 0, vstup není povolen. Obvykle se zde používá délka databázového pole, kterému textové pole odpovídá.
[MaxTextLen]

Grafik49

Měl by být výchozí text vložen do prázdného pole? Tento text musí být vymazán, pokud má být úspěšně proveden jakýkoli další záznam.
[DefaultText]

Grafik50

Možné typy: (poslední dva typy se liší v chování při stisku tabulátoru a navíc pole se vzorem nelze vázat na databázi): Jednořádkový | Víceřádkový | Víceřádkový s formátováním. Svislé zarovnání není aktivní pro víceřádková pole.
[MultiLine]

Grafik51

Unix nebo Windows? To se týká především konců řádků. Interně jsou řádky systému Windows ukončeny dvěma řídicími znaky (CR a LF).
[LineEndFormat]

Grafik52

Pouze pro víceřádková pole:
Vodorovné | Svislé | Obojí.[HScroll], [VScroll]

Grafik53

Aktivní pouze pro jednořádková pole. Změní znaky tak, aby se zobrazovaly pouze body.
[EchoChar]

Karta Data

Nic významného.

Karta Události

Nic významného.

Číselné pole

Kromě již popsaných vlastností existují následující vlastnosti:

Karta Obecné

Grafik54

Minimální hodnota pole. Měla by souhlasit s minimální hodnotou definovanou v tabulce.
[ValueMin]

Grafik55

Maximální hodnota.
[ValueMax]

Grafik56

Přírůstek rolování při použití kolečka myši nebo v rámci rolovacího pole.
[ValueStep]

Grafik57

Hodnota zobrazená při vytváření nového záznamu.
[DefaultValue]

Grafik58

Počet desetinných míst, pro celá čísla nastaveno na 0.
[DecimalAccuracy]

Grafik59

Oddělovač tisíců, obvykle čárka.
[ShowThousandsSeparator]

Karta Data

Neexistuje žádná kontrola, zda pole může být NULL. Pokud neexistuje žádný záznam, bude pole NULL a nikoli 0.

Žádný návrh filtru se nenabízí.

Karta Události

Událost Změněno není přítomna. Změny je třeba provádět pomocí události Text změněn (slovo text zde nelze brát doslova).

Pole pro datum

Stejně jako vlastnosti popsané v části "Výchozí nastavení mnoha ovládacích prvků". nad, je třeba si uvědomit následující.

Karta Obecné

Grafik60

Minimální hodnota pole, kterou lze vybrat pomocí rozevíracího seznamu  kalendář.
[DateMin]

Grafik61

Maximální hodnota.
[DateMax]

Grafik62

Zkrácená forma jako 10.02.12 nebo různé formy s použitím '/' místo '.' nebo '-' v americkém stylu.
[DateFormat]

Grafik63

Zde můžeme zadat doslovné datum, nikoli však (zatím) aktuální datum (Today) v okamžiku otevření formuláře.
[DefaultDate]

Grafik64

Součástí může být měsíční kalendář pro výběr dat.
[DropDown]

Karta Data

Neexistuje žádná kontrola, zda pole může být NULL. Pokud neexistuje žádný záznam, bude pole NULL a nikoli 0. Žádný návrh filtru se nenabízí.

Karta Události

Událost Změněno není přítomna. Změny je třeba provádět pomocí události Text změněn (slovo text zde nelze brát doslova).

Pole pro čas

Stejně jako vlastnosti uvedené v části "Výchozí nastavení mnoha ovládacích prvků". nad, jsou k dispozici následující vlastnosti.

Karta Obecné

Grafik65

Minimální hodnota pole, ve výchozím nastavení nastavena na 0.
[TimeMin]

Grafik66

Maximální hodnota, standardně nastavená na 1 sekundu před 24:00.
[TimeMax]

Grafik67

Krátká forma bez sekund, dlouhá forma se sekundami a také 12hodinové formáty s AM a PM.
[TimeFormat]

Grafik68

Můžeme nastavit pevný čas, ale ne (zatím) skutečný čas uložení formuláře.
[DefaultTime]

Karta Data

Neexistuje žádná kontrola, zda pole může být NULL. Pokud neexistuje žádný záznam, bude pole NULL a nikoli 0.

Žádný návrh filtru se nenabízí.

Karta Události

Událost Změněno není přítomna. Změny je třeba provádět pomocí události Text změněn (slovo text zde nelze brát doslova).

Měnové pole

Kromě vlastností již uvedených v části "Výchozí nastavení mnoha ovládacích prvků". nad, jsou k dispozici následující vlastnosti:

Karta Obecné

Min. hodnota, Max. hodnota, Zvýšit/snížit hodnoty, Výchozí hodnota, Desetinná přesnost a Oddělovač tisíců. odpovídají obecným vlastnostem uvedeným v části "Číselné pole". nad. Kromě nich existuje pouze:

Grafik69

Symbol je zobrazen, ale není uložen v tabulce, která je základem formuláře.
[CurrencySymbol]

Grafik70

Má být symbol umístěn před nebo za číslem?
[PrependCurrencySymbol]

Karta Data

Neexistuje žádná kontrola, zda pole může být NULL. Pokud neexistuje žádný záznam, bude pole NULL a nikoli 0.

Žádný návrh filtru se nenabízí.

Karta Události

Událost Změněno není přítomna. Změny je třeba provádět pomocí události Text změněn (slovo text zde nelze brát doslova).

Formátované pole

Kromě vlastností uvedených v části "Výchozí nastavení mnoha ovládacích prvků". nad jsou nabízeny následující vlastnosti:

Karta Obecné

Minimální a maximální hodnota a výchozí hodnota závisí na formátování. Za tlačítkem Formátování se nachází flexibilní pole, díky kterému je většina měnových a číselných polí zbytečná. Na rozdíl od jednoduchého pole měny mohou být v poli vzorku záporné částky zobrazeny červeně.

Grafik71

Tlačítko vpravo se třemi tečkami nabízí volbu číselných formátů, jak je to obvyklé v aplikaci Calc.
[FormatKey]

Mezi číselnými formáty lze vedle formátu Datum, Čas, Měna nebo normálního číselného formátu vidět možnosti použití polí s měrnou jednotkou, například kg (viz obrázek 16). Viz také obecná nápověda k číselným kódům formátu.

Formátované pole umožňuje vytvářet a zapisovat do polí časových razítek v tabulkách pomocí jediného pole. Průvodce formulářem k tomu používá kombinaci pole data a času.

Pokud chceme do pole časového razítka zadat data ve tvaru minuty:sekundy:setiny sekundy, musíme použít makra.

Image16

Obrázek 16: Dialogové okno Formát čísla s vybraným obecným formátem čísla

Karta Data

Nic zvláštního.

Karta Události

Událost Změněno není přítomna. Změny je třeba provádět pomocí události Text změněn (slovo text zde nelze brát doslova).

Seznam

Při vytváření pole seznamu se ve výchozím nastavení zobrazí Průvodce seznamem. Tento automatický vzhled lze v případě potřeby vypnout pomocí ikony Přepnout průvodce ovládacími prvky na nástrojové liště Ovládací prvky formuláře (na obrázku 7).

Grafik73

Obrázek 17: Průvodce seznamem, výběr tabulky

Průvodce

Formulář je již definován. Je svázán s tabulkou s názvem Loans. Pole seznamu zobrazuje uživateli jiné údaje, než které se skutečně přenášejí do tabulky. Tato data obvykle pocházejí z jiné tabulky v databázi, nikoli z tabulky, ke které je formulář vázán.

Tabulka Loans má ukázat, který čtenář si vypůjčil která média. Tato tabulka však neukládá jméno čtenáře, ale odpovídající primární klíč z tabulky Reader. Proto je základem pole seznamu právě tabulka Reader.

V seznamu by mělo být viditelné pole LastName z tabulky Reader. Slouží jako pole Display.

Grafik74

Obrázek 18: Průvodce pole se seznamem, výběr pole

Pole Reader_ID se vyskytuje v tabulce Loan, která je základem formuláře. Tato tabulka je zde popsána jako tabulka Value. Na toto pole musí být navázán primární klíč ID z tabulky Reader. Tabulka Reader je zde popsána jako tabulka List.

Grafik75

Obrázek 19: Průvodce pole se seznamem, propojení polí v tabulkách hodnot a seznamů

Pole seznamu je nyní vytvořeno s daty a výchozí konfigurací a je plně funkční.

Kromě vlastností uvedených v části "Výchozí nastavení mnoha ovládacích prvků". nad, jsou k dispozici následující vlastnosti.

Karta Obecné

Grafik76

Položky seznamu již byly nastaveny pomocí Průvodce. Zde můžeme přidat další položky, které nejsou z žádné tabulky v databázi. Položky seznamu zde znamenají viditelné položky, nikoli ty, které formulář přenese do tabulky.
[StringItemList]

Grafik77

Pokud pole není zadáno jako rozevírací, zobrazí se po načtení formuláře na pravé straně pole seznamu rolovací šipky. Z pole seznamu se pak automaticky stane víceřádkové pole, ve kterém je zvýrazněna aktuální vybraná hodnota.
[Dropdown]

Grafik78

Pokud je pole rozevírací, udává tato vlastnost maximální viditelný počet řádků. Pokud obsah přesahuje více řádků, zobrazí se při poklesu seznamu posuvník.
[LineCount]

Grafik79

Lze vybrat více než jednu hodnotu? Ve výše uvedeném příkladu to není možné, protože se ukládá cizí klíč. Obvykle se tato funkce nepoužívá pro databáze, protože každé pole by mělo obsahovat pouze jednu hodnotu. V případě potřeby mohou makra pomoci při interpretaci více položek v poli seznamu.
[MultiSelection] [MultiSelectionSimpleMode]

Grafik80

Jak je z deaktivovaného tlačítka zřejmé, výchozí výběr nemá v kontextu vazby s databázovou tabulkou, jak ji vytvořil Průvodce polem seznamu, příliš smysl. Může se stát, že záznam odpovídající výchozímu výběru v příkladu v tabulce Readers již neexistuje.
[DefaultSelection]

Karta Data

Kromě obvyklých datových vlastností Datové pole a Vstupní pole jsou zde ještě další významné vlastnosti, které ovlivňují vazbu mezi zobrazenými daty a daty, která se mají zadat do tabulky, která je základem formuláře.

Grafik81

Obrázek 20: Dialogové okno Vlastnosti (karta Data) pro pole se seznamem

Druh obsahu seznamu: Seznam hodnot | Tabulka | Dotaz | SQL | SQL [Nativní] | Pole tabulky [ListSourceType]

Obsah seznamu: Pokud byly položky seznamu vytvořeny v části Obecné, zadávají se zde příslušné hodnoty, které se mají uložit. Obsah seznamu se načítá s jednotlivými položkami oddělenými pomocí Shift + Enter. V obsahovém poli Seznam se pak zobrazí jako "Hodnota1"; "Hodnota2"; "Hodnota3" ... Vlastnost Svázané pole je neaktivní.

Obsah seznamu Tabulka: Zde lze vybrat jednu z databázových tabulek. To je však možné jen zřídka, protože to vyžaduje, aby obsah tabulky byl strukturován tak, že první pole tabulky obsahuje hodnoty, které se mají zobrazit v poli seznamu, a jedno z následujících polí obsahuje primární klíč, který tabulka, na níž je formulář založen, používá jako cizí klíč. Pozice tohoto pole v rámci tabulky je uvedena v poli Bound Field, kde Číslování začíná 0 pro první pole databázové tabulky. Tato 0 je však vyhrazena pro zobrazovanou hodnotu, ve výše uvedeném příkladu Surname, zatímco 1 se vztahuje k poli ID.

Obsah seznamu Dotaz: Zde je dotaz nejprve vytvořen samostatně a uložen. Vytváření takových dotazů je popsáno v kapitole 5, Dotazy. Pomocí dotazu je možné přesunout pole ID z první pozice v podkladové tabulce na druhou pozici, kterou zde představuje vázané pole 1.

Obsah seznamu SQL: Toto pole vyplní Průvodce seznamem. Dotaz sestavený Průvodcem vypadá takto:

Grafik82

Obrázek 21: Typický kód SQL vygenerovaný Průvodce pole se seznamem

Dotaz je nejjednodušší možný. Pole Surname se vyskytuje na pozici 0, pole ID na pozici 1. Obojí se načítá z tabulky Reader. Vzhledem k tomu, že vázaným polem je pole 1, funguje tento vzorec SQL. Zde by mělo být přidáno ORDER BY "LastName" ASC. Abychom nemuseli dlouho procházet seznam, než někoho najdeme. Dalším problémem může být, že hodnota pole LastName může být stejná pro více než jednoho čtenáře. Proto musí být v zobrazení pole seznamu přidáno FirstName. Pokud existují čtenáři se stejným příjmením (LastName) a stejným jménem (FirstName), musí se zobrazit také ID primárního klíče. Informace o tom, jak to funguje, najdeme v kapitole 5, Dotazy.

Obsah seznamu SQL [Nativní]: Vzorec SQL se zadává přímo, nikoli pomocí Průvodce. Program Base dotaz nevyhodnotí. To je vhodné v případě, že dotaz obsahuje funkce, kterým by grafické uživatelské rozhraní aplikace Base nemuselo rozumět. V tomto případě se dotaz nekontroluje na přítomnost chyb. Více informací o přímém režimu SQL najdeme v kapitole 5, Dotazy.

Seznam obsahových polí tabulek: Zde jsou uvedeny názvy polí z tabulky, nikoli jejich obsah. Pro tabulku Reader by obsah seznamu byl ID, Given name, Surname, Lock, Gender_ID.

Poznámka

Pokud chceme pole času, které umí pracovat s časem v milisekundách, budeme potřebovat pole časové značky, jak je popsáno v části „Pole pro čas“. Reprezentace milisekund je nekompatibilní se způsobem, jakým jsou znaky sestavovány v polích seznamu. Chceme-li to obejít, musíme časové razítko převést na text:

SELECT REPLACE(LEFT(RIGHT(CONVERT(”Required_service(??).
”Time”, VARCHAR),15),8),.,,) AS “Listcontent”, “ID” FROM “Required_service”

Zobrazí se minuty:sekundy:setiny.

Svázané pole: Pole seznamu zobrazují obsah, který nemusí být nutně totožný s tím, co bude uloženo ve formuláři. Obvykle se zobrazí název nebo něco podobného a odpovídající primární klíč se stane uloženou hodnotou tohoto pole.

SELECT "Name", "ID" FROM "Table" ORDER BY "Name"

Pole ID je uloženo v podkladové tabulce jako cizí klíč, Počet polí v databázích začíná nulou, takže pole s ním spojené ve formuláři má číslo 1.

Pokud místo toho vybereme možnost „0“, obsah pole Název se uloží uvnitř formuláře. V takovém případě můžeme pole ID z dotazu odstranit.

Je možné zvolit i polohu  „-1“. Pak se nejedná o obsah dotazu, ale o pozici položky, která je uložena v seznamu. První záznam pak má pozici 1.

Výše uvedený dotaz vede k následujícímu výsledku:

Tabulka 2: Výsledek dotazu vybírajícího data z tabulky

Název

ID

Anneliese

2

Dorothea

3

Sieglinde

1

V polích seznamu lze vybrat pouze název. Pole seznamu je nastaveno na jméno „Dorothea“. Pro toto pole je možné uložit následující údaje:

Svázané pole=1 znamená, že je uložen „3“, obsah pole ID.

Svázané pole=0 znamená, že je uložen obsah pole Jméno „Dorothea“.

Svázané pole=-1 znamená, že je uloženo „2“, protože „Dorothea“ je v seznamu na druhém místě.

Poznámka

Změna svázaného pole na „0“ nebo „-1“ byla zavedena ve verzi LO 4.1. Dříve bylo možné vybrat pouze hodnoty >= 1.

Karta Události

Kromě standardních událostí jsou k dispozici následující události:

Provést akci: Pokud je hodnota vybrána pomocí klávesnice nebo myši, pole seznamu provede tuto akci.

Změna stavu položky: Může se jednat o změnu zobrazeného obsahu pole seznamu pomocí rozbalovacího tlačítka. Může to být také klepnutí na rozevírací tlačítko pole.

Došlo k chybě: Tato událost se nevyskytuje u seznamů.

Pole se seznamem

Jakmile je vytvořen prvek Pole se seznamem, zobrazí se ve výchozím nastavení Průvodce, stejně jako u seznamu. Toto automatické chování lze v případě potřeby vypnout pomocí tlačítka Průvodci zapnuto/vypnuto.

Pole se seznamem zapisují vybraný text přímo do tabulky, která je základem formuláře. Proto je v následujícím příkladu tabulka propojená s formulářem i tabulka vybraná pro ovládací prvek tabulka Reader.

Průvodce

Grafik83

Obrázek 22: Průvodce pole se seznamem, výběr tabulky

Formulář je opět předdefinován, tentokrát s tabulkou Reader. Vzhledem k tomu, že data, která se mají zobrazit v poli se seznamem, mají být také uložena v této tabulce, je zdrojem vybraných dat pro seznam rovněž tabulka Reader.

Grafik84

Obrázek 23: Průvodce výběrovým polem, výběr pole

V tabulce Reader se vyskytuje pole FirstName. Tato hodnota by se měla zobrazit v poli se seznamem.

Grafik85

Obrázek 24: Průvodce pole se seznamem, výběr, zda se má hodnota uložit do databázového pole

Zdá se, že v databázi nemá smysl ukládat hodnotu pole se seznamem v rámci pole. Chceme načíst daná jména z tabulky Reader a také je zpřístupnit novým čtenářům, aby nebylo nutné vytvářet nové záznamy pro dané jméno, které již v databázi existuje. Ve poli se seznamem se zobrazuje křestní jméno a není nutné zadávat text.

Pokud je třeba zadat novou hodnotu, lze to snadno provést v poli se seznamem, protože pole přesně zobrazuje, co se má do podkladové tabulky formuláře zadat.

Kromě vlastností uvedených v části "Výchozí nastavení mnoha ovládacích prvků". nad a popsaných pro pole se seznamem, jsou k dispozici následující vlastnosti.

Karta Obecné

Grafik86

Při zadávání nových hodnot se zobrazí seznam odpovídajících hodnot (pokud existují) pro případný výběr.
[AutoComplete]

Karta Data

Grafik87

Obrázek 25: Dialogové okno Vlastnosti (karta Data) pro pole se seznamem

Datová pole odpovídají stávajícímu výchozímu nastavení a nastavení pro pole seznamu. Příkaz SQL však vykazuje zvláštní vlastnost:

SELECT DISTINCT "FirstName" FROM "Reader"

Přidáním klíčového slova DISTINCT zajistíme, že se duplicitní zadaná jména zobrazí pouze jednou. Vytvoření pomocí Průvodce však opět znemožňuje třídění obsahu.

Karta Události

Události odpovídají událostem pro pole seznamu.

Zaškrtávací pole

Zaškrtávací políčko se okamžitě zobrazí jako kombinace zaškrtávacího pole a popisku políčka.

Kromě vlastností popsaných v části "Výchozí nastavení mnoha ovládacích prvků". nad jsou k dispozici následující vlastnosti.

Karta Obecné

Grafik88

Popisek tohoto pole se ve výchozím nastavení zobrazuje vpravo od pole. Kromě toho jej můžeme svázat se samostatným polem popisku.
[Label]

Grafik89

Zde jsou v závislosti na volbě v poli Trojstav k dispozici až tři možnosti: Není vybráno | Vybráno | Není definováno. Není definováno odpovídá položce NULL v tabulce, která je základem formuláře.  [State]

Grafik90

Ve výchozím nastavení není popisek rozdělen. Pokud pole není dostatečně velké, je popisek zkrácen.  
[MultiLine]

Grafik91

Zde můžeme zadat grafiku namísto popisku nebo jako doplněk k němu. Měli bychom si uvědomit, že tato grafika není ve výchozím nastavení vázána na dokument *.odb. U malých grafických prvků je vhodné grafiku vložit, nikoliv odkazovat.
[Graphic]

Grafik92

Pokud jsme se rozhodli použít grafiku, můžeme zde nastavit její zarovnání s popiskem.
[ImagePosition] (0=vlevo | 1=na střed | 2=vpravo)

Grafik93

Ve výchozím nastavení mají zaškrtávací políčka pouze dva stavy: Vybráno (Hodnota: 1) a Není vybráno (Hodnota: 0). U třístavového systému je přidána definice prázdného pole (NULL).
[TriState]

Karta Data

Grafik94

Obrázek 26: Dialogové okno Vlastnosti (karta Data) pro zaškrtávací políčko

Zaškrtávacímu políčku lze přiřadit referenční hodnotu. Do podkladového datového pole však lze přenést pouze hodnoty 1 (pro Zapnuto) nebo 0 (pro Vypnuto) (zaškrtávací políčka fungují jako pole pro volbu Ano a Ne).

Karta Události

Pole Změněno, Text změněn, Před aktualizacíPo aktualizaci schází.

Další pole pro zaškrtávací políčko jsou Provést akci (viz pole Seznam) a Změna stavu položky (odpovídá Změněno).

Přepínač

Přepínač je podobný výše popsanému zaškrtávacímu políčku, s výjimkou jeho obecných vlastností a vnějšího (kulatého) tvaru.

Pokud je několik přepínačů ve formuláři propojeno se stejným polem tabulky, lze vybrat pouze jednu z možností.

Karta Obecné

Grafik95

Přepínač je určen k použití ve skupinách. Poté lze vybrat jednu z několika možností. Proto se zde objevuje název skupiny, pod nímž lze tyto možnosti řešit.
[GroupName]

Karta Data

Viz část Zaškrtávací políčko. Zde se však zadané referenční hodnoty skutečně přenášejí do datového pole.

Karta Události

Viz část Zaškrtávací políčko.

Ovládací pole obrázku

Grafický (obrázkový) ovládací prvek spravuje zadávání a zobrazování obrázků pro databázi. Pokud má být obrázek uložen přímo, musí být podkladové datové pole binární. Může to být také textové pole, ve kterém je uložena relativní cesta k obrázku. V takovém případě je třeba dbát na to, aby cesta k obrázkům zůstala platná i v případě kopírování databáze.

Upozornění

Obrázky by měly být při ukládání do databáze v každém případě zmenšeny. U 3MB fotografií v interní databázi HSQLDB se velmi rychle objeví chyby Javy (NullpointerException), které znemožní uložení záznamů. To může vést ke ztrátě všech záznamů, které byly zadány v aktuální relaci.

Vstup do ovládacího prvku obrázku se provede buď dvojitým klepnutím myší, čímž se otevře dialogové okno pro výběr souboru, nebo klepnutím pravým tlačítkem myši, kterým se vybere, zda má být stávající grafika odstraněna nebo nahrazena.

Grafický ovládací prvek ve výchozím nastavení nemá krok tabulátoru.

Kromě vlastností popsaných v části "Výchozí nastavení mnoha ovládacích prvků". nad jsou k dispozici následující vlastnosti.

Karta Obecné

Grafik96

Zde vybraná grafika se zobrazuje pouze uvnitř ovládacího prvku, zatímco se formulář upravuje. Pro pozdější zadávání nemá žádný význam.
[Graphic]

Grafik97

Ne: Obrázek nebude přizpůsoben poli. Pokud je příliš velký, zobrazí se v poli pouze část obrázku. Obraz není zkreslený.
Zachovejte poměr: Obraz je přizpůsoben ovládacímu prvku, ale není deformován (poměr stran je zachován).
Autom. Velikost: Obrázek je přizpůsoben ovládacímu prvku a může být zobrazen ve zkreslené podobě.
[ScaleImage] [ScaleMode]

Karta Data

Nic zvláštního.

Karta Události

Schází události Změněno, Text změněn, Před aktualizacíPo aktualizaci.

Pole vzorku

Vstupní maska slouží ke kontrole vstupu do pole. Znaky jsou předem určeny pro konkrétní pozice a určují vlastnosti zadávaných znaků. Přednastavené znaky se ukládají společně se zadanými znaky.

Kromě vlastností popsaných v části "Výchozí nastavení mnoha ovládacích prvků". nad jsou k dispozici následující vlastnosti.

Karta Obecné

Grafik98

To určuje, jaké znaky lze zadat.
[EditMask]

Grafik99

To je to, co vidí uživatel formuláře.
[LiteralMask]

Délka masky úprav určuje, kolik znaků lze zadat. Pokud zadání uživatele neodpovídá masce, je zadání při opuštění kontroly odmítnuto. Pro definici masky úprav jsou k dispozici následující znaky.

Tabulka 3: Dostupné znaky pro definici masky úprav

Znak

Význam

L

Textová konstanta. Tuto pozici nelze upravovat. Skutečný znak se zobrazí na odpovídající pozici ve znakové masce.

a

Představuje libovolné písmeno a-z/A-Z. Velká písmena se nepřevádějí na malá.

A

Představuje libovolné písmeno od A do Z. Pokud jsou zadána malá písmena, budou automaticky převedena na velká.

c

Představuje libovolný znak a-z/A-Z a číslice 0-9. Velká písmena se nepřevádějí na malá.

C

Představuje libovolná písmena A-Z a číslice 0-9. Pokud jsou zadána malá písmena, budou automaticky převedena na velká.

N

Zadávat lze pouze číslice 0-9.

x

Povoleny jsou všechny tisknutelné znaky.

X

Povoleny jsou všechny tisknutelné znaky. Pokud jsou zadána malá písmena, budou automaticky převedena na velká.

Můžeme tedy například definovat znakovou masku jako  "__/__/2012" a masku upravit na "NNLNNLLLLL", aby uživatel mohl zadat pouze čtyři znaky pro datum.

Karta Data

Nic zvláštního.

Karta Události

Událost Změněno není přítomna.

Ovládací prvek tabulky

Jedná se o nejkomplexnější kontrolu. Poskytuje tabulku, která pak může být opatřena ovládacími prvky pro jednotlivé sloupce. To umožňuje zobrazit nejen aktuální data během zadávání, ale také dříve zadaná data, aniž by bylo nutné procházet záznamy pomocí Lišty navigace.

Grafik100

Obrázek 27: Průvodce prvkem tabulky, výběr pole

Ne každé pole, které je možné vložit do formuláře, lze vybrat jako kontrolní pole tabulky. Tlačítka, tlačítka obrázků a tlačítka možností vybrat nelze.

Průvodce ovládacími prvky tabulky sestaví v okně pole, která se poté v tabulce objeví.

Tabulka Loans je k dispozici k úpravám v ovládacím prvku. Kromě pole ID (primární klíč) a pole Media_ID_BC (zadávání médií pomocí snímače čárových kódů) se pro kontrolu použijí všechna pole.

Dříve vytvořenou kontrolu tabulky je nyní třeba dále rozvinout, aby bylo možné vstoupit do tabulky Loans. U polí, jako je Reader_ID nebo Media_ID, by bylo užitečnější, kdyby bylo možné vybrat přímo čtenáře nebo médium, a ne číslo představující čtenáře nebo médium. Za tímto účelem lze do ovládacího prvku tabulky umístit ovládací prvky, jako jsou seznamy. To je deklarováno později. Formátování pole Extension se dvěma desetinnými místy rozhodně nebylo zamýšleno.

Image17

Obrázek 28: Výstup Průvodce prvkem tabulky

Kromě vlastností uvedených v části "Výchozí nastavení mnoha ovládacích prvků". nad, jsou k dispozici následující vlastnosti.

Karta Obecné

Grafik102

Výška jednotlivých řádků. Pokud zde není uvedena žádná hodnota, výška se automaticky přizpůsobí velikosti písma. Víceřádková textová pole se pak zobrazují jako jednotlivé řádky, které lze posouvat.
[RowHeight]

Grafik103

Stejně jako u tabulek se na spodním okraji ovládacího prvku zobrazuje číslo záznamu a navigační pomůcky.
[HasNavigationBar]

Grafik104

Ve výchozím nastavení je značka záznamu na levém okraji ovládacího prvku. Označuje aktuální záznam. Pomocí značky záznamu můžeme přistupovat k funkci mazání celého záznamu.
[HasRecordMarker]

Karta Data

Protože se jedná o pole, které samo o sobě neobsahuje žádná data, ale spravuje jiná pole, nejsou zde žádné vlastnosti dat.

Karta Události

Chybí události ZměněnoText změněn. Je přidána událost Došlo k chybě.

Pole popisku

Kromě vlastností popsaných v části "Výchozí nastavení mnoha ovládacích prvků". nad jsou k dispozici následující vlastnosti.

Karta Obecné

Image9

Název slouží jako popis jiného ovládacího prvku. Pokud je nadpis vázán na ovládací prvek, lze jej použít jako jeho zkratku. Vložené „~“ označuje konkrétní písmeno, které se stane zkratkou „Na~me“ definuje „m“ jako písmeno zkratky. Pokud je kurzor kdekoli ve formuláři, přejdeme stiskem klávesové zkratka Alt + m přímo do pole Name.

Grafik105

Ve výchozím nastavení není popisek zabalen. Pokud je pro pole příliš dlouhý, je zkrácen. Pozor: obtékání slov nerozpoznává mezery, takže pokud je pole příliš malé, může dojít k přerušení uvnitř slova.  [MultiLine]

Karta Data

Není.

Karta Události

Pole popisku reaguje pouze na události spojené s myší, klávesou nebo fokusem.

Seskupení

Seskupení graficky seskupuje několik ovládacích prvků a opatřuje je společným označením.

Pokud je vytvořeno seskupení s aktivními Průvodci, vychází Průvodce z předpokladu, že se v tomto seskupení bude vyskytovat několik tlačítek možností společně.

Grafik106

Obrázek 29: Průvodce skupinovým prvkem, výběr volitelného pole

Tento formulář vychází z tabulky Reader. Zabýváme se volbou pohlaví. Tyto položky jsou popisky tlačítek možností.

 

Obrázek 30: Průvodce skupinovým prvkem, výběr výchozího pole volby

Zde je výchozí možností "female". Pokud nemá být výchozí pole, je výchozí položka v základní tabulce NULL.

 

Obrázek 31: Průvodce skupinovým prvkem, přiřazení hodnoty volitelného pole

Průvodce nabízí ve výchozím nastavení oddělené hodnoty tlačítek volby, zde 1 pro ženu a 2 pro muže. Tyto hodnoty odpovídají příkladům polí primárního klíče v tabulce Gender.

Hodnota vybraná klepnutím na tlačítko volby se přenese do pole Gender_ID základní tabulky formuláře Readers. Tímto způsobem je tabulka Readers opatřena odpovídajícím cizím klíčem z tabulky Gender pomocí tlačítka volby.

Grafik109

Obrázek 32: Průvodce skupinovým prvkem, výběr, zda se má hodnota uložit do databázového pole

Grafik110

Obrázek 33: Průvodce skupinovým prvkem, definice nadpisu

Skupině tlačítek možností je přiřazeno seskupení (rámeček) s označením Gender.

Grafik111

Obrázek 34: Příklad skupiny volitelných tlačítek

Pokud je v aktivním formuláři vybrána žena, výběr muže se zruší. Jedná se o vlastnost přepínačů, které jsou vázány na stejné pole v podkladové tabulce. Ve výše uvedeném příkladu nahrazují přepínače dvouprvkový seznam.

Kromě vlastností popsaných v části "Výchozí nastavení mnoha ovládacích prvků". nad jsou k dispozici následující vlastnosti.

Karta Obecné

Popisek lze změnit z výchozí hodnoty. V současné době nelze měnit vlastnosti rámečku (tloušťka čáry, barva čáry), ale můžeme změnit formátování písma.

Karta Data

Žádné, protože tento ovládací prvek slouží pouze k vizuálnímu seskupení polí.

Karta Události

Seskupení reaguje na události týkající se myši, klávesy nebo zaměření.

Tlačítko

Kromě vlastností popsaných v části "Výchozí nastavení mnoha ovládacích prvků". nad jsou k dispozici následující vlastnosti.

Karta Obecné

Grafik112

Popisek na tlačítku.

Vložením znaku „~“ lze určité písmeno popisku změnit na klávesovou zkratku. „Push ~Button“ definuje „b“ jako klávesovou zkratku. Pokud se kurzor nachází kdekoli ve formuláři, kombinace kláves Alt + b nás přenese na tlačítko.  
[Label]

Grafik113

Tlačítko získá zaměření, když na něj klepneme.

To nemusí být vždy žádoucí. Můžeme například chtít, aby se po klepnutí na tlačítko vložil nějaký obsah do jiného pole formuláře, a v takovém případě by měl kurzor po klepnutí na tlačítko zůstat v tomto poli.
[FocusOnClick]

Grafik114

Pokud ano, lze tlačítko zobrazit stisknuté. Stav tlačítka je zobrazen jako u přepínače. Po druhém stisknutí se zobrazí nestisknuté tlačítko.
[Toggle]

Grafik115

Aktivní, pokud je přepínač nastaven na hodnotu Ano. Vybrané odpovídá stisknutému tlačítku.
[DefaultState]

Grafik116

Obtékání slov, pokud je tlačítko příliš úzké.
[MultiLine]

Grafik117

K dispozici je celá řada akcí podobných těm, které se provádějí na navigačním panelu.

Pokud má akce otevřít dokument nebo webovou stránku, zadáme adresu URL do dalšího pole.

Grafik118

HTML: Soubor, který má být vyvolán tímto tlačítkem. Zde je třeba vybrat zdroj, který se má otevřít pomocí „Otevřít dokument/webovou stránku“ ve volbě „Činnost“.

Kromě HTML lze pomocí volby „Činnost“ otevřít i další moduly LO. Pokud zde tedy zadáme .uno:RecSearch, bude tlačítku přiřazena vyhledávací funkce navigátoru.

Můžeme také otevřít soubory aplikace Writer tak, že stisknutím tlačítka provedeme sloučení pošty pomocí záznamů z databáze.

Příkazy, které jsou zde k dispozici, lze zjistit pomocí záznamníku maker.
[TargetURL]

Grafik119

Pouze pro formuláře HTML:
Cílový rámec (uspořádání rámce pro různé stránky HTML), ve kterém se má soubor otevřít.[TargetFrame]

Grafik120

Pokud je tato možnost nastavena na Ano, je výchozí tlačítko orámováno. Pokud je na formuláři několik alternativních tlačítek, mělo by tuto vlastnost mít to, které se používá nejčastěji. Aktivuje se stisknutím klávesy Enter, pokud na této klávese nezávisí žádná jiná akce. Pouze jedno tlačítko na formuláři může být výchozím tlačítkem.
[DefaultButton]

Grafik121

Měl by se na tlačítku objevit obrázek?
[Graphic] [ImageURL]

Grafik122

Aktivní pouze v případě, že byl vybrán obrázek. Určuje zarovnání obrázku k textu.
[ImagePosition] [ImageAlign]

Karta Data

Není. Tlačítko pouze provádí akce.

Karta Události

Schválit akci, Provést akciZměna stavu položky.

Obrázkové tlačítko

Kromě vlastností již popsaných v části "Výchozí nastavení mnoha ovládacích prvků". nad, jsou k dispozici následující vlastnosti.

Karta Obecné

Podobně jako normální tlačítko. Toto tlačítko však nemá žádný text a samotné tlačítko není viditelné. Kolem grafiky se zobrazí pouze rámeček.

Ve výchozím nastavení nemá obrázkové tlačítko nastaven krok tabulátoru.

Upozornění: v době psaní tohoto text s tímto tlačítkem nefungují téměř žádné akce. Je prakticky použitelný pouze s makry.

Karta Data

Žádné; tento ovládací prvek pouze provádí akce.

Karta Události

Schválit akci a všechny události zahrnující myš, klávesu nebo zaměření.

Lišta navigace

Grafik123

Obrázek 35: Ovládání lišty navigace

Standardní lišta Navigátor formulářem se vkládá do formulářů na spodní okraj obrazovky. Vložení této nástrojové lišty může způsobit malý posun formuláře směrem doprava, jak se na obrazovce vytváří. To může být rušivé v případech, kdy je lišta navigace pro některé části viditelného formuláře opět vypnutá, například když jsou ve viditelném formuláři podformuláře nebo více než jeden formulář.

Naproti tomu ovládací prvek lišty navigace, který je součástí formuláře, oddělený od příslušných položek, umožňuje jasně určit, přes které položky se pomocí panelu nástrojů pohybujeme. Například formulář pro výpůjčky musí nejprve vyhledat čtenáře a poté zobrazit média, která jsou čtenáři půjčena. Ovládací prvek navigačního panelu je umístěn v blízkosti čtenáře, takže si uživatel všimne, že lišta navigace slouží pro čtenáře, a nikoli pro média, která jsou čtenáři zapůjčena.

Standardní navigační lišta formuláře zpřístupňuje tlačítka zobrazená na obrázku 36. Ovládací prvek navigační lišty zobrazuje stejná tlačítka kromě tlačítek Najít záznam, Filtry na základě formuláře a Zdroj dat, jako tabulka.

Kromě vlastností uvedených v části "Výchozí nastavení mnoha ovládacích prvků". nad jsou pro ovládací prvek Pruh navigátoru k dispozici následující vlastnosti.

Karta Obecné

Image11

Velikost ikony je nastavitelná. Kromě toho můžeme zvolit, které skupiny se zobrazí. Ty jsou zobrazeny na obrázku 35  zleva doprava pomocí svislé čáry jako oddělovače skupin: Umístění, Navigace, Akce na záznam a skupiny příkazů pro Filtrování a Třídění.
[IconSize]
[ShowPosition]
[ShowNavigation]
[ShowRecordActions]
[ShowFilterSort]

Grafik124

Obrázek 36: Výchozí rozdělení ikon na nástrojové liště Navigace na formuláři

Karta Data

Žádné, protože tento ovládací prvek pouze provádí akce.

Karta Události

Všechny události, které se týkají myši, klávesy nebo zaměření.

Nezávisle na tomto ovládacím prvku formuláře samozřejmě nadále existuje navigační lišta vložitelná se stejnými položkami jako na obrázku výše.

Tato vložitelná lišta navigace navíc umožňuje obecné vyhledávání záznamů, filtrování na základě formuláře a zobrazení základního zdroje dat formuláře v tabulkovém zobrazení nad formulářem.

Pokud pracujeme nejen s formulářem, ale i s podformuláři a pomocnými formuláři, musíme si dát pozor, aby tato vložitelná lišta navigace při přepínání formulářů nezmizela. To vytváří na obrazovce rušivý efekt.

Rolovací tlačítka a posuvníky

Žádné z těchto polí nemá přímé spojení s daty v databázi. Lze je využít pouze pomocí maker, kde je rolovací tlačítko integrováno například do číselného pole.

Posuvník se od rolovacího tlačítka liší tím, že má kromě tlačítek pro zvyšování a snižování hodnoty v pevně daném rozsahu také posuvník.

Při otevření formuláře musí být posuvníku sdělena aktuální hodnota pole, ke kterému je připojen. Toto makro je vázáno na Vlastnosti formuláře > Události > Po změně záznamu.

SUB scrollbar_form(oEvent AS OBJECT)

   DIM oForm AS OBJECT

   DIM oField AS OBJECT

   oForm = oEvent.Source

   oField = oForm.getByName("scrollbar")

   oFeld.ScrollValue = oForm.getInt(oForm.findColumn("numeric_value"))

END SUB

Nejprve se deklaruje proměnná. Událost, kterou bude zpracovávat, je zadána na formuláři, na který bude makro nakonec navázáno. Posuvník najdeme podle jeho názvu na formuláři. Jeho aktuální hodnota je nastavena na číslo uložené v poli numeric_field v základní tabulce.

Pokud je hodnota změněna pomocí posuvníku, musí být tato změna přenesena do podkladového pole. Toto makro je vázáno na Vlastnosti: Události > Při úpravě.

SUB Scrollbar_change(oEvent AS OBJECT)

   DIM oForm AS OBJECT

   DIM oField AS OBJECT

   DIM inValue AS INTEGER

   oField = oEvent.Source.Model

   inValue = oEvent.Value

   oForm = oField.Parent

   oForm.updateInt(oForm.findColumn("numeric_value"),inValue)

END SUB

Nejprve se deklarují proměnné. Vybraná hodnota se z pole načte jako celé číslo. Na tuto hodnotu se pak aktualizuje odpovídající pole v podkladové tabulce numeric_value.

Podrobný výklad tohoto druhu kódu je uveden v kapitole 9, Makra.

Skrytý ovládací prvek

Bild1

Obrázek 37: Vytvoření skrytého ovládacího prvku pomocí Navigátoru formulářem

Jedním z typů ovládacích prvků, které nelze vložit z panelu nástrojů ovládacích prvků, je skrytý ovládací prvek. Musí být vytvořen v navigátoru formulářem pomocí místní nabídky formuláře.

Bild2

Obrázek 38: Přístup k dialogovému oknu Vlastnosti skrytého ovládacího prvku

Stejně jako jakýkoli jiný ovládací prvek je i skrytý ovládací prvek součástí formuláře. V uživatelském rozhraní však není vidět.

Skrytý ovládací prvek má pouze několik vlastností. Název a doplňující informace mají stejný význam jako u ostatních ovládacích prvků. Kromě toho lze ovládacímu prvku přiřadit hodnotu [Hidden Value].

Pokud nepoužíváme makra, nemá skrytý ovládací prvek smysl. V případě maker je však často užitečné mít možnost ukládat mezihodnoty někde ve formuláři, aby bylo možné k nim přistupovat později. Příklad tohoto způsobu použití maker je popsán v kapitole 9, Makra, v části „Hierarchické seznamy“.

Bild3

Obrázek 39: Dialogové okno Vlastnosti pro skrytý ovládací prvek

Vícenásobný výběr

Pokud pomocí tlačítka Vybrat vybereme velkou oblast nebo několik prvků formuláře, mohou být provedeny následující úpravy.

Název bychom neměli měnit. To by způsobilo, že by všechny vybrané prvky náhle získaly stejný název. Ztížilo by to vyhledávání jednotlivých prvků pomocí nástroje Navigátor formulářem a znemožnilo by to správu formuláře pomocí pojmenovaných ovládacích prvků v makrech.

Vícenásobný výběr je užitečnější pro změnu písma, výšky nebo barvy pozadí ovládacích prvků. Všimneme si, že změna barvy pozadí má vliv i na popisky.

Pokud chceme změnit pouze popisky, podržíme klávesu Control a klepneme na tyto ovládací prvky přímo nebo v Navigátoru, případně klepneme pravým tlačítkem myši na pole a vyvoláme vlastnosti ovládacího prvku. Nyní je výběr vlastností, které můžeme měnit, větší, protože se jedná pouze o podobná pole. Zde můžeme změnit cokoli, co je k dispozici v poli popisku.

Možnosti vícenásobného výběru tedy závisí na výběru polí. Můžeme současně měnit ovládací prvky stejného druhu, které mají všechny vlastnosti, které existují pro jednu instanci.

Image18

Obrázek 40: Dialogové okno Vlastnosti pro vícenásobný výběr

Vyplněný jednoduchý formulář

Jednoduchý formulář má ovládací prvky formuláře pro zápis nebo čtení záznamů z jedné tabulky nebo dotazu. Jeho konstrukci ukazuje následující příklad.

Image3

Obrázek 41: Schematické znázornění jednoduchého tvaru

Příklad jednoduchého formuláře pro výpůjčky v knihovně je zde uveden v několika variantách. Rychlý způsob použití Průvodce formulářem je popsán v kapitole 8, Začínáme s aplikací Base v příručce Začínáme s LibreOffice. Zde popíšeme vytvoření v Zobrazení návrhu.

Grafik128

Obrázek 42: Vložení štítku pro nadpis formuláře

Záhlaví formuláře bylo vytvořeno pomocí pole popisku. Písmo bylo změněno. Pole popisku je ukotveno k odstavci v levém horním rohu dokumentu. Pomocí místní nabídky pole popisku byl vytvořen formulář, který byl propojen s tabulkou Loans (viz „Vlastnosti formulářenad). Stránka má také jednotně barevné pozadí.

Přidání skupin polí

Rychlou variantou přímého zadání polí s popisky je použití funkce Přidat pole.

Grafik129

Obrázek 43: Ikona Přidat pole na nástrojové liště Návrh vzorce

Tato funkce, dostupná na nástrojové liště Návrh formuláře (viz obrázek 5), umožňuje vybrat všechna pole podkladové tabulky.

Grafik130

Obrázek 44: Použití dialogového okna Přidat pole pro výběr pole podkladové tabulky, které má být přidáno

Dvojitým klepnutím na pole je vložíme do formuláře jako skupinu s popisky, zpočátku všechna naskládaná na stejném místě. Skupinu je třeba oddělit tak, aby formulář nakonec vypadal jako na obrázku 45. Pro lepší přehlednost byly z okna odstraněny všechny nepotřebné nástrojové lišty a okno bylo také zkomprimováno, takže nejsou vidět všechny prvky lišty navigace.

Byla vybrána všechna pole kromě pole Media_ID_BC, které je určeno pouze pro použití se snímačem čárových kódů.

Image19

Obrázek 45: Jednoduchý formulář vytvořený pomocí funkce Přidat pole

Pro každé pole tabulky byl automaticky vybrán vhodný ovládací prvek formuláře. Čísla jsou v číselných polích a jsou deklarována jako celá čísla bez desetinných míst. Pole s datem jsou správně reprezentována jako ovládací prvky data. Všechna pole mají stejnou šířku. Pokud by bylo zahrnuto grafické ovládání, bylo by mu přiděleno čtvercové pole.

Úprava proporcí pole

Nyní můžeme provádět některé kreativní činnosti, včetně úpravy délky polí a vytvoření dat jako rozevíracích polí. Ještě důležitější je, aby pole Media_ID a Reader_ID byla uživatelsky přívětivější, pokud každý uživatel knihovny nemá čtenářský průkaz a každé médium není při příjmu opatřeno ID. To se v následujícím textu nepředpokládá.

Chceme-li upravit jednotlivá pole, musíme upravit skupinu. To lze provést klepnutím pravým tlačítkem myši na skupinu a následným vyvoláním místní nabídky (obrázek 47). Pro budoucí práci bude přehlednější, pokud použijeme Navigátor formulářem.

Grafik133

Obrázek 46: Ikona Navigátor formuláře na nástrojové liště Návrh formuláře

Image20

Obrázek 47: Použití místní nabídky pro rozřazení do skupin nebo vstup/výstup ze skupiny ovládacích prvků formuláře

Navigátor formulářem zobrazuje všechny prvky formuláře s jejich popisky. U ovládacích prvků jsou názvy převzaty přímo z názvů polí v podkladové tabulce. Názvy popisků mají příponu Label.

Klepnutím na Media_ID se toto pole vybere (obrázek 48). Klepnutím pravým tlačítkem myši můžeme vybrané pole nahradit jiným typem pole pomocí místní nabídky (obrázek 49).

Image21

Obrázek 48: Výběr ovládacích prvků formuláře přímo pomocí Navigátoru formulářem

Image22

Obrázek 49: Nahrazení jednoho typu ovládacího prvku jiným pomocí Navigátoru formulářem

Tato výměna se provádí pro ovládací prvky Media_ID a Reader_ID.

Grafik136

Obrázek 50: Media_ID a Reader_ID nahrazeny seznamem polí

Změna je v Navigátoru formulářem viditelná změnou doprovodné ikony.

Grafik137

Obrázek 51: Dialogové okno Vlastnosti (karta Data) pro pole se seznamem

Dotaz SQL pro pole se seznamem lze nyní vytvořit prostřednictvím grafického uživatelského rozhraní klepnutím na tlačítko vpravo. To se provádí automaticky, pokud je rámeček seznamu vytvořen přímo, ale ne, pokud je vytvořen konverzí z jiného typu ovládacího prvku. Příkaz SQL nalezneme v kapitole 5, Dotazy.

Vzhledem k tomu, že pole seznamu mají být rozbalovací, lze současně opravit následující závady:

Přidání jednotlivých polí

Přidání jednotlivých polí je o něco složitější. Pole je třeba vybrat, přetáhnout na plochu formuláře a zadat příslušné pole z podkladové tabulky. Kromě toho je třeba správně zvolit typ pole; například číselná pole mají standardně dvě desetinná místa.

Pouze při vytváření polí seznamu se do hry zapojí Průvodce, který začátečníkům usnadňuje provádění kroků pro vytvoření správných polí – do určité míry. Po překročení tohoto bodu přestává Průvodce splňovat požadavky, protože:

I zde je třeba provést zpětná vylepšení, aby bylo možné potřebný kód SQL vytvořit poměrně rychle pomocí vestavěného editoru dotazů.

Při přidávání jednotlivých ovládacích prvků musí být pole a jeho popisek explicitně přiřazeny (viz „Výchozí nastavení mnoha ovládacích prvkůnad). V praxi by mohlo být lepší, kdybychom pole nepřiřazovali k popiskům, abychom před změnou vlastností pole nemuseli použít skupinu úprav.

Ovládací prvek tabulky

Použití Průvodce tabulkou k vytvoření ovládacího prvku tabulky již bylo popsáno v části "Ovládací prvek tabulky". nad. Má však některé nedostatky, které je třeba zlepšit:

Grafik138

Obrázek 52: Ovládací prvek tabulky zobrazený v nástroji Form Navigator

Změna polí v ovládacím prvku tabulka není možná stejným způsobem, jaký je popsán u ostatních ovládacích prvků. Popis polí v Navigátoru končí u ovládacího prvku tabulky. Navigátor neví nic o ovládacích prvcích, které se nacházejí uvnitř ovládacího prvku tabulky a odkazují na pole v podkladové tabulce. To platí i později při pokusech o přístup k polím pomocí maker. Nelze k nim přistupovat podle názvu.

Grafik139

Obrázek 53: Nahrazení jednoho typu ovládacího prvku jiným pro sloupec v ovládacím prvku tabulky

Ovládací prvky v rámci ovládacího prvku tabulky se nazývají sloupce. Pomocí místní nabídky je nyní možné nahradit jeden typ pole jiným. Není však k dispozici celá řada typů. Nejsou zde žádná tlačítka, pole možností ani grafické ovládací prvky.

Grafik140

Obrázek 54: Přístup k dialogovému oknu Vlastnosti pro sloupec v ovládacím prvku tabulky

Vlastnosti polí jsou skryty v místní nabídce za konceptem sloupců. Zde lze například změnit číselné pole Extension tak, aby se nezobrazovala desetinná místa. Také minimální výchozí hodnota –1 000 000,00 sotva dává smysl pro prodloužení úvěru. Číslo by mělo zůstat vždy malé a kladné.

Jakmile jsou vlastnosti sloupce vyvolány, můžeme vybrat jiný sloupec, aniž by se dialogové okno vlastností zavřelo. Tímto způsobem můžeme pracovat se všemi poli postupně, aniž bychom museli mezitím ukládat.

Poznámka

Hodnota se v dialogu uloží, jakmile dojde k pohybu mezi vlastnostmi. Tak je tomu i při přechodu z jednoho sloupce do druhého.

Nakonec uložíme celý formulář a nakonec i samotnou databázi.

Vlastnosti polí zabudovaných do ovládacího prvku tabulky nejsou tak komplexní jako u polí mimo něj. Například písmo lze nastavit pouze pro celý ovládací prvek tabulky. Kromě toho nemáme možnost přeskočit jednotlivé sloupce odstraněním kroků tabulátoru.

Tip

Ve formuláři se můžeme pohybovat pomocí myši nebo klávesy Tab. Pokud do ovládacího prvku tabulky vložíme tabulátor, kurzor se při každém dalším tabulátoru posune o jedno pole doprava; na konci řádku se přesune zpět na první pole dalšího záznamu v ovládacím prvku tabulky. Chceme-li ovládání tabulky ukončit, použijeme klávesovou zkratku Ctrl + Tab.

Pokud mají být během používání viditelná pouze některá pole, můžeme ve formuláři použít několik různých ovládacích prvků tabulky, protože tabulátor je ve výchozím nastavení zachycen každým ovládacím prvkem tabulky.

Formulář uvedený na obrázku 55 je určen pro výpůjčku médií. V horním ovládacím prvku tabulky jsou zobrazena pouze bezprostředně potřebná pole. V dolní části se zobrazují všechna pole, aby bylo zřejmé, pro kterou osobu a médium je přiznání určeno.

Image23

Obrázek 55: Formulář s více ovládacími prvky tabulky

Tento obrázek ukazuje estetický nedostatek, kterému je třeba věnovat naléhavou pozornost. V ovládacím prvku horní tabulky se stejné médium někdy vyskytuje více než jednou. K tomu dochází proto, že tabulka zobrazuje i média, která byla vrácena dříve. Proto je třeba data filtrovat, aby se zobrazovaly pouze zápůjčky. Záznamy s datem vrácení by se zobrazovat neměly.

Toto filtrování je možné buď pomocí dotazu, nebo přímo pomocí vlastností formuláře. Pokud je to provedeno pomocí vlastností formuláře, lze filtr během zadávání dočasně vypnout. Filtrování pomocí dotazu je popsáno v kapitole 5, Dotazy. Zde popíšeme, jak to provést pomocí vlastností formuláře.

Grafik143

Obrázek 56: Klepneme na ikonu elipsy vedle pole Filtr na kartě Data v dialogovém okně Vlastnosti formuláře.

Filtrování se provádí pomocí tlačítka se třemi tečkami (elipsou), které otevře níže uvedený dialog. Pokud známe kódování jazyka SQL, můžeme filtr zadat také přímo do textového pole Filtr.

Grafik144

Obrázek 57: Dialog filtru

Pomocí grafického uživatelského rozhraní nyní můžeme vybrat pole s názvem Return_Date. Zobrazí pouze záznamy, u nichž je pole prázdné, přičemž „empty“ znamená označení NULL v jazyce SQL.

Vyčištěný formulář (na obrázku 58) nyní vypadá poněkud jednodušeji.

Samozřejmě je stále co zlepšovat, ale ve srovnání s dřívější podobou má tato verze jasnou výhodu v tom, že všechna média jsou vidět na první pohled.

Zpracování dat pomocí ovládacích prvků tabulky je podobné jako u skutečné tabulky. Klepnutí pravým tlačítkem myši na záhlaví existujícího záznamu způsobí jeho smazání a v případě nových záznamů lze záznam zrušit nebo uložit.

Po opuštění řádku se záznam automaticky uloží.

Image24

Obrázek 58: Upravený formulář s více ovládacími prvky tabulky

Formulář Loan of Media můžeme ještě několika způsoby vylepšit.

Taková řešení jsou k dispozici pomocí dalších formulářů, které jsou hierarchicky uspořádány a umožňují oddělené pohledy na data.

Tip

Ovládací prvky tabulky lze kombinovat s jinými poli ve formuláři. Například ovládací pole tabulky zobrazuje pouze názvy těch médií, u nichž byly provedeny změny v základních polích formuláře.

Při kombinaci ovládacích prvků tabulky s jinými formulářovými poli se objevuje drobný problém, který lze snadno obejít. Pokud se ve formuláři vyskytují oba typy polí společně, kurzor se automaticky přesune z ostatních polí do ovládacího prvku tabulky, přestože ve výchozím nastavení má tento typ pole nastavení Krok tabulátoru > Ne. To lze napravit přepnutím vlastnosti tabelátoru na Ano a poté zpět na Ne. Tím se zaregistruje hodnota „Ne“.

Hlavní formuláře a podformuláře

Podformulář leží uvnitř formuláře stejně jako ovládací prvek formuláře. Stejně jako ovládací prvek formuláře je vázán na data z hlavního formuláře. Zdrojem dat však může být jiná tabulka nebo dotaz (nebo příkaz SQL). Důležité pro dílčí formulář je, aby byl jeho zdroj dat nějakým způsobem propojen se zdrojem dat hlavního formuláře.

Image4

Obrázek 59: Schematické znázornění formuláře s podformulářem

Typickou strukturou tabulek, které lze použít jako dílčí formuláře, jsou tabulky s relací jeden k více (viz kapitola 3, Tabulky). Hlavní formulář zobrazuje tabulku se záznamy, ke které lze připojit a zobrazit mnoho závislých záznamů v podformuláři.

Nejprve použijeme vztah tabulky Reader k tabulce Loan (viz kapitola 3, Tabulky). Tabulka Reader bude tvořit základ hlavního formuláře a tabulka Loan bude zobrazována v podformuláři.

Grafik147

Obrázek 60: Dialogové okno Vlastnosti formuláře (karta Data) pro formulář propojený s tabulkou Reader, která je řazena abecedně

Zde je hlavní formulář propojen s tabulkou Reader. Pro urychlení vyhledávání čtenářů je tabulka řazena abecedně. Obejdeme se bez lišty navigace, protože obsah podformuláře by se nacházel mezi hlavním formulářem a lištou navigace. Místo toho použijeme vestavěný ovládací prvek formuláře (obrázek 35).

Grafik148

Obrázek 61: Vytvoření nového podformuláře pomocí Navigátoru formulářem

Klepneme pravým tlačítkem myši na hlavní formulář v Navigátoru formulářem a pomocí místní nabídky vytvoříme nový formulář. Tento formulář má opět výchozí název Form, ale nyní je prvkem v podsložce hlavního formuláře.

Grafik149

Obrázek 62: Jeden formulář v podsložce jiného formuláře

Nyní je třeba nastavit vlastnosti podformuláře tak, aby mu byl přidělen správný zdroj dat, aby bylo možné reprodukovat data pro správného čtenáře.

Grafik150

Obrázek 63: Dialogové okno Vlastnosti formuláře (karta Data) pro dílčí formulář

Pro podformulář je vybrána tabulka Loans. Pro filtr určíme, že pole Return_Date má být prázdné ("Return_Date" IS NULL). Tím se zabrání zobrazení již vrácených médií. Záznamy by měly být seřazeny podle data výpůjčky. Vzestupné řazení zobrazuje nahoře médium vypůjčené na nejdelší dobu.

Propojení hlavních polí a propojení závislých polí slouží k vytvoření vazby na hlavní hlavní formulář, ve kterém se podformulář nachází. Tlačítko se třemi tečkami opět ukazuje, že je k dispozici užitečný dialog pro jejich vytvoření.

Grafik151

Obrázek 64: Použití dialogového okna Propojit pole k propojení sloupců v hlavním formuláři a dílčím formuláři

V části Loans se zobrazují pole tabulky Loans, v části Readers se zobrazují pole tabulky Reader. Reader_ID z tabulky Loans by mělo být nastaveno jako ekvivalent ID z tabulky Reader.

Přestože toto propojení již bylo v databázi vytvořeno pomocí Nástroje > Relace (viz kapitola 3, Tabulky), funkce, která se skrývá za tlačítkem Doporučit v tomto dialogovém okně, na něj neodkazuje a navrhuje, aby byl první cizí klíč v tabulce Loans, tedy Media_ID, propojen s polem ID z tabulky Reader. Průvodce vytvořením formuláře to řeší lépe tím, že načte relaci z relace databáze.

Grafik152

Obrázek 65: Pole ID v tabulce Reader propojené s polem Reader_ID v tabulce Loan

Zvolené propojení mezi tabulkou pro podformulář a tabulkou pro hlavní formulář je nyní zadáno pomocí polí z tabulek.

Abychom mohli vytvořit ovládací prvek tabulky pro hlavní formulář, musíme nyní vybrat hlavní formulář v Navigátoru formulářem. Pokud je povolen Průvodce ovládáním tabulky, zobrazí pole dostupná v hlavním formuláři. Podobným způsobem pracujeme s podformulářem.

Po nastavení ovládacích prvků tabulky je třeba provést úpravy, o kterých jsme již hovořili při vytváření jednoduššího formuláře:

Funkce řazení a filtrování jsou v hlavním formuláři doplněny o lištu navigace. Ostatní pole na liště navigace nejsou potřeba, protože jsou většinou dostupná z ovládacího prvku tabulky (zobrazení záznamu, navigace po záznamu) nebo se provádějí pohybem přes ovládací prvek tabulky (ukládání dat). Konečný tvar může vypadat jako na obrázku 66.

Image25

Obrázek 66: Formulář sestávající z hlavního formuláře (nahoře) a dílčího formuláře (dole)

Pokud je nyní v hlavním formuláři vybrán čtenář, zobrazí se v podformuláři média půjčená tomuto čtenáři. Když je položka vrácena, zobrazuje se ve formuláři až do obnovení formuláře. K tomu dojde automaticky při načtení dalšího záznamu do hlavního formuláře. Pokud je opět vybrána původní čtenář, vrácená média se již nezobrazují.

Tato zpožděná aktualizace je v tomto případě vlastně žádoucí, protože umožňuje zkontrolovat média, která právě leží na pultu knihovny, a ihned zjistit, zda byla zaregistrována.

Tato struktura formulářů je podstatně jednodušší než předchozí struktura s jediným formulářem. Stále však existují detaily, které lze vylepšit:

Nejprve zlepšíme výběr čtenářů. To by nás mělo ochránit před změnami v záznamech o výpůjčkách. Jednoduchým řešením by bylo nepovolit žádné změny s výjimkou vkládání nových záznamů. To stále vyžaduje funkci vyhledávání, když si čtenář přeje vypůjčit položku. Lepší by bylo použít k vyhledání čtenáře pole seznamu a operace vydávání a vracení provádět v samostatných ovládacích prvcích tabulky.

Pro hlavní formulář potřebujeme tabulku, do které může pole seznamu zapsat hodnotu navázanou na tuto tabulku. Tabulka vyžaduje pole celých čísel a primární klíč. Vždy bude obsahovat pouze jeden záznam, takže pole primárního klíče ID může být bezpečně deklarováno jako Tiny Integer. Proto by měla být vytvořena následující tabulka s názvem Filter.

Tabulka 4: Definice tabulky filtrů

Název tabulky: Filter

Název pole

Typ pole

ID

Tiny Integer, primární klíč

Integer

Integer

Tabulka má primární klíč s hodnotou 0. Tento záznam bude opakovaně načítán a přepisován hlavním formulářem.

Grafik154

Obrázek 67: Dialogové okno Vlastnosti formuláře (karta Data) pro hlavní formulář

Hlavní formulář je založen na tabulce Filter. Z tabulky se pouze načte hodnota, která je spojena s primárním klíčem (ID) 0. Žádná data nebudou přidána, aktuální záznam bude pouze opakovaně přepsán. Jelikož jsou povoleny pouze úpravy jednoho záznamu, byla by lišta navigace zbytečná.

Grafik155

Obrázek 68: Pole Integer v tabulce Filter propojené s polem Reader_ID v tabulce Loan

Tento hlavní formulář je propojen s dílčím formulářem tak, že hodnota pole Integer v tabulce Filter je stejná jako hodnota pole Reader_ID v tabulce Loan. Vlastnosti podformuláře se oproti výše uvedené verzi nezměnily.

Před vytvořením pole seznamu v hlavním formuláři musíme vypnout průvodce. Průvodce seznamem umožňuje vytvořit pouze pole, které zobrazuje obsah jediného pole; nebylo by možné mít v oblasti zobrazení pole seznamu příjmení, jméno a další číslo. Stejně jako v jednodušším formuláři nyní zadáme pro obsah pole seznamu Příjmení, Jméno – číslo ID. Pole seznamu přenáší ID do podkladové tabulky.

Grafik156

Obrázek 69: Dialogové okno Vlastnosti pro pole seznamu zobrazující obsah pole Obsah seznamu na kartě Data

Vedle pole seznamu se vytvoří tlačítko. Toto tlačítko je ve skutečnosti součástí podformuláře. Převezme dvě funkce: uložení záznamu v hlavním formuláři a aktualizaci tabulky v podformuláři. Stačí svěřit aktualizaci tlačítku v podformuláři. Proces uložení upraveného hlavního formuláře se pak provede automaticky.

Tlačítko může být jednoduše označeno jako OK. V obecných vlastnostech tlačítka je mu přiřazena akce Obnovit formulář.

Image26

Obrázek 70: Hlavní formulář jako filtr pro dílčí formulář

Hlavní formulář se skládá pouze ze záhlaví a pole seznamu; podformulář obsahuje další záhlaví, ovládací prvek tabulky z předchozí verze a tlačítko.

Formulář nyní funguje lépe:

Pro větší funkčnost (návraty bez změny předchozích dat) je třeba vytvořit druhý podformulář, který bude propojen se stejnou tabulkou Loans. Aby byla zajištěna funkčnost seznamu na obrázku 70, musí být oba dílčí formuláře umístěny o úroveň níže, jako dílčí formuláře dílčího formuláře. Data jsou aktualizována hierarchicky od hlavního formuláře směrem dolů přes podformuláře. Tlačítko v dříve popsaném formuláři musí být nyní umístěno v prvním podformuláři, nikoli ve dvou podformulářích, které jsou pod ním.

Grafik158

Obrázek 71: Hierarchie formulářů a podformulářů v nástroji Form Navigátor

Zde se k zobrazení různých úrovní používá Navigátor formulářem. V hlavním formuláři máme textové pole pro název formuláře a pole seznamu pro vyhledání čtenáře. Pole seznamu se zobrazí v dolní části formuláře, protože je deklarováno po podformulářem. Tuto sekvenci zobrazení nelze změnit. Podformulář má pouze jedno tlačítko, které slouží k aktualizaci jeho obsahu a zároveň k uložení hlavního formuláře. O úroveň níže se nacházejí další dva podformuláře. Ty jsou při vytváření pojmenovány různě, aby nedošlo k záměně v žádné úrovni stromu.

Poznámka

Názvy formulářů a ovládacích prvků jsou v podstatě bez významu. Pokud však mají být tyto názvy přístupné pomocí maker, musí být rozlišitelné. Nelze rozlišit shodné názvy na stejné úrovni.

Při vytváření rozsáhlejších struktur formulářů má samozřejmě smysl používat smysluplné názvy formulářů a jejich ovládacích prvků. V opačném případě by se hledání správného pole mohlo rychle stát problematickým.

Grafik159

Obrázek 72: Dialogové okno Vlastnosti formuláře (karta Data) pro dílčí formulář, kde je mnoho polí nastaveno na hodnotu Ne

Hlavní formulář a podformulář používají stejnou tabulku. V dílčím formuláři se nezadávají žádná data. Proto jsou všechna pole tohoto formuláře nastavena na hodnotu Ne. Hlavní formulář a podformulář jsou propojeny polem, jehož hodnota se má přenášet do podformulářů: pole Integer v tabulce Filter.

Grafik160

Obrázek 73: Podmínka filtru pro hodnotu přenášenou do dílčího formuláře

V prvním podformuláři se nezobrazují žádná existující data; slouží pouze k vytváření nových dat. K tomu je vhodný navrhovaný filtr. Zobrazí se pouze záznamy odpovídající poli Reader_ID a s prázdným polem data výpůjčky ("Loan_Date" IS NULL). V praxi to znamená prázdný ovládací prvek tabulky. Protože ovládací prvek tabulky není průběžně aktualizován, nově zapůjčená média v něm zůstanou, dokud se pomocí aktualizačního tlačítka OK nevybere nový název nebo se data nepřenesou do druhého podformuláře.

Grafik161

Obrázek 74: Dialogové okno Vlastnosti formuláře (karta Data) pro druhý dílčí formulář

Druhý podformulář vyžaduje více nastavení. I tento formulář obsahuje údaje z tabulky "Loans". Zde jsou data filtrována pro prázdné datum vrácení. ("Return_Date" IS NULL). Údaje jsou seřazeny stejně jako v předchozím formuláři tak, aby byla okamžitě vidět média, která jsou zapůjčena nejdéle.

Důležité jsou také následující body. Staré záznamy lze měnit, ale nelze přidávat nové. Vymazání je rovněž nemožné. Jedná se o první nezbytný krok, který zabrání pozdějšímu jednoduchému vymazání záznamů o výpůjčkách. Stále by však bylo možné změnit médium a datum výpůjčky. Proto bude nutné upravit vlastnosti sloupců. Nakonec by se mělo zobrazit médium a datum půjčky, ale mělo by být chráněno před změnou.

Ovládací prvek tabulky se po vytvoření formuláře jednoduše duplikuje. To se provádí tak, že jej vybereme, zkopírujeme, zrušíme výběr a poté jej vložíme ze schránky. Kopie se bude nacházet na stejném místě jako originál, a proto ji bude třeba odtáhnout. Poté lze oba ovládací prvky tabulky upravovat samostatně. Ovládací prvek tabulky pro návrat médií lze ponechat prakticky stejné. Je třeba změnit pouze přístup k zápisu pro sloupce Media a Loan date.

Zatímco pro Loan_Date je nutné zvolit pouze Jen pro čtení, pro pole seznamu to nestačí. Toto nastavení nebrání tomu, aby bylo pole seznamu použito k provádění změn. Pokud je však možnost Zapnuto nastavena na hodnotu Ne, nelze zde provést volbu. Pole seznamu obsažené v ovládacím prvku tabulky se pak zobrazí jako textové pole určené pouze pro čtení.

Ve výše uvedeném ovládacím prvku tabulky jsou odstraněna všechna pole, která nemají s výpůjčkou nic společného. Zůstává pouze médium jako výběrové pole a datum výpůjčky Loan_Date.

Pokud je nakonec vybrán dotaz pro pole seznamu v horním ovládacím prvku tabulky, zobrazí se pouze ta média, která lze skutečně vypůjčit. Více informací o této problematice najdeme v kapitole 5, Dotazy.

Grafik162

Obrázek 75: Dialogové okno Vlastnosti (karta Obecné) pro sloupec Media zobrazuje hodnotu Povoleno nastavenou na Ne

Image27

Obrázek 76: Výběrové pole v horním podformuláři zobrazuje pouze položky médií, které nejsou vypůjčené.

Formulář pro výpůjčku médií je již výrazně užitečnější. Když čtenář přijde k výpůjční přepážce, vyhledá se jeho jméno. Média, která mají být zapůjčena, lze vybrat pomocí seznamu a zadat datum zapůjčení. Klávesou Tab přejdeme na další záznam.

Žádoucí je také poslední vylepšení: v současné době je třeba pokaždé zvolit datum výpůjčky. Představme si den v knihovně, kdy se uskuteční třeba 200 výpůjčních transakcí, třeba jen s jednou osobou, která musí pokaždé půjčit asi 10 médií. To by vyžadovalo opakované zadávání stejného pole data. Musí existovat způsob, jak to zjednodušit.

Náš hlavní formulář je propojen s tabulkou Filter. Hlavní formulář pracuje pouze se záznamem, který má jako primární klíč "ID" 0. Do tabulky Filter lze však zabudovat další pole. V současné době neexistuje žádné pole, které by mohlo ukládat datum, ale můžeme snadno vytvořit nové pole s názvem Date a typem pole Date. V tabulce Filter máme nyní uloženo nejen Reader_ID ("Filter". "Integer"), ale také Loan_Date ("Filter". "Date").

Grafik164

Obrázek 77: Dodatečné pole data v hlavním formuláři

V hlavním formuláři se objeví další pole s datem a popisek odkazující na jeho obsah. Hodnota z pole datum je uložena v tabulce Filter a přenáší se pomocí vazeb z podformuláře do podformuláře.

Grafik165

Obrázek 78: Pole Celé číslo a Datum v tabulce Filter propojená s poli Reader_ID a Loan_Date v tabulce Loan

Vazba mezi oběma formuláři se nyní týká dvou polí. Pole Integer je vázáno na pole Reader_ID podformuláře. Pole Date je vázáno na pole Loan_Date. Tím je zajištěno, že se údaj Loan_Date automaticky přenese z tabulky Filter do tabulky Loans při vytvoření zápůjčky.

Image28

Obrázek 79: Datum výpůjčky se zadává pouze jednou; při změně čtenáře je třeba jej zadat znovu.

Z ovládacího prvku tabulky je nyní odstraněno pole s datem, takže tabulka obsahuje pouze jedno vyhledávací pole. To by byl ideální požadavek pro ještě větší urychlení práce knihovny. Každé médium bude mít totiž vytištěné identifikační číslo, tak proč se musí hledat? Číslo můžeme zadat přímo. Nebo, ještě lépe, je možné jej naskenovat pomocí čtečky čárových kódů. Média pak mohou být půjčována tak rychle, jak rychle si je vypůjčitel dokáže uložit do tašky.

To je znázorněno v příkladu databáze. Výše uvedený příklad by měl stačit pro pochopení počátečního návrhu formuláře, ale protože v příkladu databáze Media_without_Macros.odb je formulář dále rozvíjen, jsou níže stručně uvedena další vylepšení.

Grafik167

Obrázek 80: Výpůjční formulář

Formulář Loan zobrazuje následující vlastnosti:

Tento formulář, vytvořený pomocí dotazů, má podstatně složitější strukturu než dříve zobrazená verze. Více informací o tomto najdeme v kapitole 5, Dotazy.

Jeden pohled – více formulářů

Zatímco příklad formuláře Loans zahrnuje pouze vstupy do jedné tabulky (tabulka Loans) a navíc umožňuje vstup do podformuláře pro nové čtenáře, postup zadávání pro média je podstatně rozsáhlejší. V konečné podobě je tabulka médií obklopena celkem osmi dalšími tabulkami (viz kapitola 3, Tabulky).

Tabulky Subtitle a rel_Media_author jsou propojeny s podformuláři formuláře Media prostřednictvím relace n:1. Naproti tomu tabulky s relací 1:n k tabulce Media by měly být reprezentovány formuláři, které leží nad tabulkou Media. Protože takových tabulek je několik, jejich hodnoty se do hlavního formuláře zadávají pomocí polí seznamu.

Tabulka hlavního formuláře a tabulka podformuláře jsou v relaci 1:n nebo v některých výjimečných případech 1:1. Proto po delším používání databáze hlavní formulář obvykle spravuje tabulku, která má podstatně méně záznamů než tabulka patřící podformuláři.

Více hlavních formulářů nemůže obsahovat stejný podformulář. Proto není možné vytvořit uspořádání formuláře pro mnoho souběžných relací 1:n, ve kterých má podformulář stejný obsah. Pokud existuje relace 1:n pro tabulku patřící k formuláři, můžeme použít pole seznamu. Zde je z jiné tabulky k dispozici pouze několik termínů, jejichž cizí klíče lze tímto způsobem zadat do tabulky hlavního formuláře.

Image5

Obrázek 81: Schematické znázornění, které ukazuje, jak se pracuje se vztahy 1:n a n:1.

Pomocí polí seznamu lze hlavnímu formuláři založenému na tabulce Media přiřadit hodnoty z tabulek Category, Town nebo Publisher. Podformuláře slouží k propojení tabulek rel_Media_Author a Subtitle s hlavním formulářem a jeho prostřednictvím s tabulkou Media.

Podformulář pro tabulku rel_Media_Author se opět skládá ze dvou polí seznamu, aby nebylo nutné zadávat cizí klíče z polí Authors a Author_Add_ID (doplňky mohou být například editor, fotograf atd.) přímo jako čísla.

V případě formuláře pro zadávání médií je obvykle třeba postupně vyplňovat políčka seznamu v průběhu zadávání. Za tímto účelem jsou vedle hlavního formuláře zabudovány další formuláře. Existují nezávisle na hlavním formuláři.

Image6

Obrázek 82: Schematické znázornění uspořádání vícenásobného formuláře

Celkový formulář pro zadávání médií vypadá takto:

Grafik170

Obrázek 83: Formulář Media

Na levé straně je hlavní formulář s ohledem na vyhledávání a zadávání nových médií. Na pravé straně se nachází skupinové pole s popisem pole seznamu Editing Contents (Úprava obsahu, pozn. překl.), které poskytuje samostatnou oblast určenou pro vyplňování polí seznamu v hlavním formuláři. Pokud databáze neexistuje dlouho, bude často nutné do těchto polí provést záznamy. Čím více položek je však k dispozici pro pole seznamu hlavního formuláře, tím méně často je třeba přistupovat k ovládacím prvkům tabulky ve skupinovém poli.

Všechny následující ovládací prvky tabulky jsou podřízeny hlavnímu formuláři, vstupnímu formuláři, jako jednotlivé podformuláře.

Grafik171

Obrázek 84: Ovládací prvky tabulky na pravé straně formuláře Media

Zde se v každém případě zadávají kompletní údaje pro tabulku. V počátečních fázích je často nutné využít těchto vedlejších formulářů, protože v příslušné tabulce ještě není uloženo mnoho autorů.

Pokud je v některém z ovládacích prvků tabulky uložen nový záznam, je třeba v hlavním formuláři vyhledat příslušné pole seznamu a pomocí ovládacího prvku Aktualizovat (viz navigační panel) načíst nové hodnoty.

Navigátor formulářem zobrazuje odpovídající velký seznam formulářů.

Grafik172

Obrázek 85: Navigátor formulářem zobrazující komponenty nejvyšší úrovně formuláře Media

Formuláře byly jednotlivě pojmenovány, aby se usnadnilo jejich rozpoznání. Pouze hlavní formulář má stále název MainForm, který mu byl přidělen Průvodcem. Celkem existuje osm paralelních formulářů. Formulář Filter je hostitelem vyhledávací funkce, zatímco formulář MainForm je hlavním vstupním rozhraním. Všechny ostatní formuláře se vztahují k jednomu nebo druhému z výše uvedených ovládacích prvků tabulky.

Bez ovládacích prvků tabulky vypadá hlavní formulář poněkud jednodušeji.

Grafik173

Obrázek 86: Formulář médií bez šesti ovládacích prvků tabulky umístěných vpravo

Pole pro hledaný výraz se nachází ve formuláři Filter, dva ovládací prvky tabulky (pro autora a podtitul) se nacházejí v podformuláři hlavního formuláře Media Entry.

V okně Navigátor formulářem vypadá tento formulář mnohem složitěji, protože se zde zobrazují všechny ovládací prvky a popisky. V předchozím formuláři byla většina polí ve skutečnosti sloupci v ovládacích prvcích tabulky, a proto byla pro Navigátor formulářem neviditelná.

Grafik174

Obrázek 87: Navigátor formulářem zobrazující strukturu formuláře MainForm

Pořadí v Navigátoru formulářem nelze snadno změnit. Proto by se například zdálo rozumnější umístit podformuláře Subtitle a Author jako větve MainForm hned na začátku. V Navigátoru formuláře se však jednotlivé ovládací prvky a podformuláře zobrazují v pořadí, v jakém byly vytvořeny.

Průvodce formulářem opatřuje ovládací prvky určitými zkratkami, které se zobrazují vedle ikon a označují, o jaký typ ovládacího prvku se jedná. Popisky začínají písmenem 'lbl', textová pole písmenem 'txt' atd. Celkově poskytují popisky pouze sekundární informace pro zadávání údajů. Lze je také umístit přímo nad textové rámečky, které se pak v Navigátoru formulářem nezobrazují.

Pořadí prvků v navigátoru nemá nic společného s pořadím tabulátorů. To je určeno aktivačním příkazem.

Grafik175

Obrázek 88: Ikona Aktivační příkaz na nástrojové liště Návrh formuláře

Aktivační sekvence pro určitý formulář se vyvolá po výběru prvku formuláře a následném klepnutí na tlačítko Pořadí aktivace. U jednoduchého formuláře není nutné provádět úkony v tomto pořadí, ale pokud existuje mnoho paralelních formulářů, musí funkce vědět, který formulář je určen. Jinak je ve výchozím nastavení prvním formulářem v Navigátoru formulářem. Ve výše uvedeném příkladu obsahuje pouze jedno textové pole.

Grafik176

Obrázek 89: Dialog Pořadí na kartě

Pořadí aktivace umožňuje seřadit všechny prvky, které přenášejí data do podkladové tabulky formuláře nebo mohou provádět akce. To odpovídá nastavení aktivační sekvence ve vlastnostech ovládacího prvku uvedených v části "Výchozí nastavení mnoha ovládacích prvků". nad.

Všimneme si, že v pořadí aktivace se objeví některé ovládací prvky, u kterých je krok tabulátoru ve skutečnosti vypnutý. Jsou sice zahrnuty v seznamu, ale ve skutečnosti nejsou při práci s formulářem přístupné z klávesnice.

Pole lze automaticky řadit v pořadí, v jakém se zobrazují na pozadí formuláře. Čím výše pole leží, tím dříve je v pořadí při použití automatického řazení. U polí se stejnou výškou je na prvním místě pole nejvíce vlevo. Toto třídění funguje bezchybně pouze tehdy, pokud byly prvky při vytváření formuláře přesně umístěny pomocí mřížky. V opačném případě je budeme muset upravit. Stačí vybrat ovládací prvek a pomocí tlačítka Přesunout nahoru nebo Přesunout dolů jej posunout v sekvenci výše nebo níže.

Pokud je k dispozici podformulář, přejde automatické řazení po dokončení hlavního formuláře přímo do podformuláře. V případě ovládacího prvku tabulky to způsobí, že kurzor je při zadávání z klávesnice uvězněn v tomto podformuláři; uvolnit jej lze pouze pomocí myši nebo stisknutím kláves Ctrl + Tab.

Funkce Automaticky seřadit funguje pro ovládací prvek tabulky pouze jednou. Následný podformulář s ovládacím prvkem tabulky nebude zahrnut. V úvahu se neberou ani paralelní formuláře. Automaticky seřadit nelze provést dodatečně pro podformulář s ovládacím prvkem tabulky. Podformulář musí být zcela odstraněn (dočasně přesunut do jiného formuláře).

Grafik177

Obrázek 90: Dialogové okno Vlastnosti formuláře (karta Data) pro formulář MainForm, zobrazující typ obsahu dotazu

Datovým podkladem pro formulář pro zadávání médií není v tomto případě tabulka, ale dotaz. To je nezbytné, protože formulář má sloužit nejen k zadávání záznamů, ale také k vyhledávání. Formulář obsahuje také textové pole, které po uložení zobrazuje, zda bylo zadané číslo ISBN správné. I to je možné pouze pomocí komplexního dotazu. Pro pochopení souvislostí je proto nutné probrat základy dotazů, které jsou popsány v kapitole 5.

Chybové zprávy při zadávání do formulářů

Zde jsou stručně vysvětleny některé chybové zprávy, které se běžně vyskytují při prvním návrhu formuláře.

Pokus o vložení nuly do nenulovatelného sloupce: sloupec: ID tabulky: Název tabulky v příkazu ...

Některá pole nesmějí být prázdná. Pokud jsou v tabulce takto definovány (NOT NULL), zobrazí se toto chybové hlášení. Pokud je ve formuláři také deklarováno jako nenulové, zobrazí se také zpráva v mateřském jazyce s přesným názvem pole, které je třeba vyplnit.

Výše uvedená zpráva se velmi často objevuje v případě, že primární klíč, v tomto případě ID, nebyl do formuláře importován. Bylo navrženo jako automaticky přírůstkové pole, ale bohužel jej návrhář zapomněl definovat jako Automatická hodnota.  Takže je třeba to buď opravit, nebo se pole musí objevit ve formuláři, aby bylo možné zadat hodnotu.

Definovat pole zpětně jako Automatickou hodnotu je někdy problematické, pokud má tabulka relace s jinými tabulkami nebo pokud se k tabulce přistupuje pomocí zobrazení. Aby bylo pole primárního klíče tabulky editovatelné, je třeba odstranit všechny odkazy. Obsah příkazu SQL, který byl použit k vytvoření zobrazení, lze dočasně uložit do dotazu.

Porušení omezení integrity – neexistuje nadřazená tabulka SYS_FK_95: Název tabulky v příkazu ...

Zde máme odkaz mezi tabulkou, která je základem formuláře, a jinou tabulkou. Tato tabulka má poskytnout svůj primární klíč pro použití v poli cizího klíče. Obvykle se to provádí pomocí pole se seznamem, které provede správný dotaz pro získání klíče. Pokud nepoužíváme pole se seznamem nebo pokud bylo pole se seznamem nesprávně zkonstruováno, může pole cizího klíče získat nesprávnou hodnotu, která ve zdrojové tabulce jako primární klíč ve skutečnosti není. To je to, co je míněno "Integritní porušení omezení". 'no parent SYS_FK_95' znamená, že ve druhé tabulce, zdrojové tabulce „Parents„, není odpovídající hodnota indexu s názvem 'SYS_FK_95'.

.Chyby při zadávání nových záznamů
Chyby při spouštění funkcí

Předpokládejme, že formulář poskytuje data podformuláři. Aplikace Base to nepovažuje za změnu hodnoty pole. Grafické uživatelské rozhraní nabízí uložení hodnoty, ale záznam se zobrazí jako prázdný. Řešením je zahrnout do základní tabulky jednoduché pole, například pole ano/ne. Nyní před uložením toto pole odstraníme a záznam bude možné bez problémů uložit.

Hodnoty předávané prostřednictvím jiných formulářů se zřejmě do příslušných polí zadávají pouze tehdy, když je ve formuláři alespoň jedna další akce.

Vyhledávání a filtrování ve formulářích pomocí navigační lišty

Lišta navigace formuláře nabízí různé možnosti vyhledávání a filtrování. Jednotlivé prvky na liště navigace již byly uvedeny výše.

Vyhledávání záznamů pomocí parametrů

Bild4

Obrázek 91: Vyhledávání v podformuláři Author formuláře MainForm pomocí dialogového okna Vyhledávání záznamů

Jednoduché vyhledávání záznamů s parametry je popsáno v kapitole 3, Tabulky. Nabízí značné množství nastavení. Charakteristickým rysem tohoto typu vyhledávání je, že se v podstatě prosívají všechny záznamy, místo aby se zobrazovaly pouze záznamy obsahující parametry vyhledávání.

Vyhledávání záznamů ve formulářích umožňuje prohledávat jak formulář, tak všechny podformuláře, ale není možné prohledávat všechny formuláře najednou.

Obrázek ukazuje přístup k podformuláři Form_author v hlavním formuláři MainForm. Jedná se o pole seznamu obsahující jména autorů. Nehledá se však text v poli seznamu, ale hodnoty, které jsou při použití pole zadány jako cizí klíče.

Tento typ vyhledávání má následující nedostatky:

Filtrování pomocí automatického filtru

Automatický filtr lze vybrat přímo na liště navigace. Klepnutím na pole v hlavním formuláři se provede filtrování obsahu tohoto pole. Automatický filtr funguje také s poli seznamu a má zjevnou výhodu oproti ručnímu zadávání cizích klíčů.

Bild5

Obrázek 92: Použití automatického filtru

Ve výše uvedeném příkladu je načten záznam, který má v poli Mediastyle hodnotu „CD“. Pak se přepne tlačítko automatického filtru. Z původních 9 záznamů v tabulce Media se nyní v počítadle záznamů zobrazují pouze 3 záznamy.

Bild6

Obrázek 93: Výstup automatického filtru

Přestože pouze dva záznamy mají v poli číslo „3“ , hlavní formuláře všech ostatních záznamů se budou zobrazovat i nadále. V podformuláři se zobrazí pouze záznamy, které odpovídají hodnotě „3“.

Použitím automatického filtru však nelze vyřešit následující problémy:

Filtrování pomocí filtru založeného na formuláři

Filtr založený na formuláři nabízí formulář pro vložení skutečných hodnot, které se použijí pro filtrování, a nikoli pouze tlačítko filtru. Zde můžeme filtrovat několik hodnot najednou. Tyto hodnoty lze kombinovat buď jako společnou podmínku (AND) nebo jako alternativy (OR).

Image1

Obrázek 94: Ikona Filtry na základě formuláře na nástrojové liště Navigaceformulářem

Zadané hodnoty filtru nemusí být jedinečné. Zde tedy můžeme formulovat podmínky podobné těm, které jsou popsány ve filtrování tabulek. Takže LIKE'%eye%'   zadané do pole pro název média poskytne všechny záznamy, jejichž název obsahuje slovo „eye“.

Filtrování polí seznamu se provádí přímým výběrem obsahu zobrazeného pole seznamu. Podkladové cizí klíče není třeba zadávat.

Bild8

Obrázek 95: Nastavení filtru založeného na formuláři

Zde hledáme všechny záznamy s mediastylem „CD“ (odpovídá hodnotě cizího klíče „1“) a zároveň mají někde v názvu sekvenci znaků „eye“. Při zadání LIKE '*eye*' nahradí grafické uživatelské rozhraní obvyklé zástupné symboly SQL „%“ znakem „*“, který je většině uživatelů známější.

Přidáme také podmínku, že se zobrazí všechny záznamy, u nichž je rok vydání „1980“.

Autor „Edmunds, Dave“ je vybrán z pole seznamu v podformuláři. Odpovídající hodnota cizího klíče je „8“.

Při zadávání se ve formulářovém filtru zobrazí pouze pole, která mají před tlačítkem NEBO zatržítko.  Tímto způsobem lze pro pole nastavit několik podmínek. Filtr však potlačí zobrazení obsahu pole seznamu Mediastyle, zatímco v ovládacím prvku tabulky podformuláře to funguje.

Během vytváření filtru se nezobrazuje lišta navigace, ale volby filtru založené na formuláři. Filtrujeme podle svých požadavků, vložíme hodnoty filtru a pak jednoduše zavřeme zobrazení.

Bild9

Obrázek 96: Ikona Použít filtr na základě formuláře na nástrojové liště Filtr formuláře

Filtr se použije a formulář se filtruje podle zadání.

Bild11

Obrázek 97: Výsledky filtru založeného na formuláři

Je-li zapnuto filtrování, počet záznamů je omezen na ty, které odpovídají. V tomto případě existuje pět shod. Na obrázku se neshoduje ani název, ani typ média; podmínka, že rok vydání je menší než 1980, poskytuje shodu.

Podformulář ukazuje něco zajímavého. Protože i to má být filtrováno, autor knihy „Malý Hobit“ není zobrazen. Hodnota filtru je spojena s autorem Dave Edmunds. To opět zobrazuje logiku filtrování: používá vlastnosti filtru aktuálního formuláře. Podformuláře jsou filtrovány samostatně a filtrování podformuláře nemá vliv na hlavní formulář – a naopak.

Tento poměrně úspěšný filtr má stále následující nevýhody:

Filtrování pomocí výchozího filtru

Výchozího filtru lze dosáhnout vyžádáním zobrazení zdroje dat jako tabulky. Pak jsou postupy stejné jako při použití výchozího filtru v tabulce.

Image10

Obrázek 98: Zdroj dat jako ikona tabulky na nástrojové liště Navigace formulářem

Bild13

Obrázek 99: Použití standardního filtru

V pravé části navigátoru formulářem se nachází tlačítko Zdroj dat jako tabulka. V pohledu na tabulku je k dispozici výchozí filtr. Na rozdíl od zobrazení skutečné tabulky Media jsou cizí klíče zobrazeny nikoli se svými skutečnými hodnotami, ale s obsahem, který jim odpovídá. Klepnutím na pole Mediastyle se ukáže, že se jedná o zdroj pole seznamu, který se zobrazí ve formuláři.

Poznámka

Výše uvedené zobrazení upozorňuje na chybu, protože 13místné číslo ISBN není správně naformátováno. Místo toho je v příslušném poli uveden minimální možný počet číslic. Pokud má číslo více než 9 číslic, musíme být opatrní: úpravy mohou vést ke ztrátě dat (chyba 82411).

Tato chyba se projevuje také v ovládacích prvcích tabulky. Správně se zobrazí, pokud místo číselného pole použijeme pole formátované.

Zobrazení tabulky formuláře má pro tuto metodu vyhledávání následující nevýhody:

Souhrn

Funkce vyhledávání a filtrování jsou pro formuláře použitelné jen v omezené míře. Vyhledávání je příliš pomalé a neomezuje celkový počet záznamů na ty, které se skutečně shodují. Filtry fungují vždy pouze v rámci jednoho formuláře. Pokud chceme filtrovat v podformuláři, ovlivní to pouze tento podformulář. Správný počet odpovídajících záznamů jednoduše nelze získat.

Proto byla do formulářů ukázkové databáze integrována uživatelsky přívětivá funkce vyhledávání, což je postup, který je třeba vypracovat ručně a vyžaduje určité znalosti jazyka SQL.

Zadávání záznamů a navigace

Pokud je formulář navržen tak, že jeho otevření aktivuje zaměření ovládacího prvku, kurzor se zobrazí v prvním vstupním poli. Místo toho, abychom se myší přesouvali z pole do pole, přejdeme na další pole v pořadí pomocí klávesy tabulátoru.

Někdy formulář umožňuje přejít na jiné pole buď myší, nebo pomocí klávesové zkratky.

Bild14

Obrázek 100: Pole Label zobrazující podtržený znak „m“

Pomocí Vlastnosti: Textové pole > Popisek je popisek přiřazen. Popisek tohoto pole se změní z „Name“ na „Na~me“. Ve formuláři je nyní písmeno „m“ na popisku podtrženo. Nyní můžeme na toto textové pole okamžitě přejít pomocí klávesové zkratky Alt+m. To funguje pouze v případě, že se kurzor již nachází v některém poli formuláře.

Jako zkratku lze v zásadě použít libovolné písmeno, protože skok se odehrává výhradně v rámci formuláře. Pokud však kurzor není zpočátku v ovládacím prvku formuláře, aktivují zkratky místo toho uživatelské rozhraní LibreOffice. Například klávesová zkratka „a“ by tedy nevedla ke skoku do pole Název, ale otevřela by nabídku Tabulka.

Přeskoky polí fungují pouze v rámci jednoho formuláře, nikoli ve strukturách, které zahrnují dílčí formuláře. V současné době není možné přejít z podformuláře zpět do hlavního formuláře.

Pokud je kurzor v ovládacím prvku tabulky, měl by vyskočit při použití Ctrl + Tab. Někdy se stává, že tato kombinace kláves nemá požadovaný účinek.

Poznámka

Viz také příklad databáze Example_cursorjump_subform_mainform.odb

Zde je tedy alternativa:

V podformuláři se vytvoří tlačítko. Jeho název je „~New“. Znak tilda ("~") se používá, jak je popsáno výše, pro vytvoření klávesové zkratky. Takže Alt + N lze použít k aktivaci tlačítka. Pole Doplňkové informace pro tlačítko pojmenovává pole v hlavním formuláři, do kterého se má kurzor při aktivaci přenést. Tlačítko je vázáno na následující makro pomocí Vlastnosti > Události > Provést akci:

SUB JumpToMainform(oEvent AS OBJECT)

   DIM oField AS OBJECT

   DIM oForm AS OBJECT

   DIM oDoc AS OBJECT

   DIM oController AS OBJECT

   DIM oView AS OBJECT

   DIM stShortcut AS STRING

   oField = oEvent.Source.Model

   stShortcut = Mid(oField.Label, InStr(oField.Label, "~") + 1, 1)

   oForm = oField.Parent.Parent

   SELECT CASE stShortcut

      CASE "n"

         oForm.MoveToInsertRow()

      CASE "a"

         IF oForm.isLast() THEN

            oForm.MoveToInsertRow()

         ELSE

            oForm.Next()

         END IF

   END SELECT

   oDoc = thisComponent

   oController = oDoc.getCurrentController()

   oView = oController.getControl(oForm.getByname(oField.Tag))

   oView.setFocus

END SUB

Makro lze použít pouze pro přechod zpět do hlavního formuláře. Lze jej také použít s výše uvedenými nastaveními k okamžitému vytvoření nového záznamu nebo pomocí dalšího tlačítka na navigačním panelu Další záznam k přeskočení na další záznam. Pokud se kurzor v hlavním formuláři nachází na posledním záznamu, skok povede na nový záznam. Další informace o makrech nalezneme v kapitole 9.

Přeskočení na tlačítko vyžaduje, aby bylo tlačítko viditelné. Může však být poměrně malé nebo mít dokonce šířku a výšku 0 cm. Pokud šířka a výška nejsou definovány, může se stát, že se tlačítko zobrazí jako čára přes celou obrazovku.

Tisk z formulářů

Formuláře mohou být konstruovány tak, aby je bylo možné přímo vytisknout. Chceme-li dosáhnout použitelných výsledků, musíme dbát na to, abychom prvky neumístili mimo tisknutelnou oblast. Zvolíme Zobrazení > Normální. Poté lze nastavit vlastnosti stránky. Barevné pozadí zde není výhodou.

Každý jednotlivý prvek lze z tisku vyloučit pomocí Vlastnosti > Obecné > Tisknutelná.

Pokud je databáze zaregistrována v LibreOffice (pomocí Nástroje > Možnosti > LibreOffice Base > Databáze nebo přímo v rámci procesu vytváření), lze formulář použít pro hromadnou korespondenci. Formulář se otevře k úpravám. Zdroje dat jsou přístupné pomocí Pohled > Zdroje dat nebo stisknutím F4. Databázová pole lze nyní přetáhnout do formuláře podle jejich záhlaví tabulky. Poté se formulář uloží. Pokud je nyní otevřen stejný formulář pro zadání, LibreOffice rozpozná, že se jedná o pole pro hromadnou korespondenci, a zeptá se, zda chceme dopisy vytisknout.

Podrobnosti o tom, jak zpracovat hromadnou korespondenci, jsou uvedeny v kapitole 7, Propojení s databázemi.

Image7

Obrázek 101: Dialogové okno Vlastnosti (karta Obecné) pro textové pole, kde je vlastnost Tisknutelné nastavena na hodnotu Ano.

Obsah