8. Formulář
8.1. Způsoby zobrazení
8.2. Vzhled formuláře
9. Základní ovládací prvky
9.1. Label
9.2. TextBox
9.3. CommandButton
Bavíme-li se o formuláři, musíme rozlišovat 2 typy. Tzv. normální formulář (form) a MDI formulář (MDI form). V této kapitole se budeme zabývat pouze normálním formulářem.
Aby mohl být formulář zobrazen, musí být nejdříve nahrán do paměti. Nahrát formulář (i jiné
objekty) neboli vytvořit instanci objektu Form lze pomocí funkce Load
.
Load Form1
Funkce Load
způsobí nahrátí formuláře do paměti (je vyvolána událost Form_Load
).
V této chvíli již s formulářem můžeme normálně pracovat, nepůjde však vidět. Zobrazit
lze pomocí metody Show
.
Show [Modal], [OwnerForm]
Oba parametry Modal
i OwnerForm
jsou nepovinné. Modal
určuje způsob zobrazení formuláře. Pokud zadáte 1, bude formulář tzv. modální, tzn. program
nebude pokračovat dále, dokud nebude formulář schován. Druhý parametr OwnerForm
určuje formulář, který je vlastníkem formuláře. To je výhodné např. tehdy, chcete-li formulář
zobrazit uprostřed jiného. Nastavíte jeho vlastnost StartUpPosition
na
vbStartUpOwner
neboli 1 a jako vlastníka nastavíte formulář, v jehož středu má být
zobrazen. VB udělá vše za vás.
Příklad:
Vytvořte nový projekt a v něm dva formuláře, Form1
a Form2
.
Vlastnost StartUpPosition
formuláře Form2
nastavte v okně
Properties na CenterOwner
(v kódu nelze nastavovat). Do
události Form_Click
formuláře Form1
vložte tento řádek:
Load Form2
Form2.Show , Form1
Parametr Modal
není zadán, ale musí být "jako" zapsán, protože zadáváme druhý parametr. Proto je tam čárka.
Také jde zapsat takto:
Form2.Show OwnerForm:=Form1
Formulář Form1
bude zobrazen a "vystředěn" vzhledem k Form1
. Zkuste
místo výše uvedeného řádku tento
Form2.Show vbModal, Form1
spusťte program a klikněte na Form1
. Zobrazí se Form2
. Teď se
pokuste kliknout někde na Form1
. Dokud bude Form2
vidět,
nepůjde to.
Aby vám VB ulehčil práci, umožňuje pracovat s formulářem i bez použití funkce Load
.
Pokud chcete formulář zobrazit, stačí použít metodu Show
. Automaticky je
nahrán do paměti a zobrazen. Pokud ho nechcete zobrazit, ale přesto s ním pracovat,
je situace stejná. nemusíte použít Load
.
Form1.Caption = "První formulář"
Formulář je automaticky nahrán do paměti a titulek je nastaven na "První formulář".
Jak a kde bude formulář vytvořen určují dvě vlastnosti, WindowState
a StartUpPosition
. První určuje, zda bude formulář při vytvoření
minimalizovaný, maximalizovaný nebo normální. Druhá určuje pozici na obrazovce. Může být
bez určení (manual), vycentrován vzhledem k jinému formuláři, vycentrován vzhledem
k obrazovce, nebo v levém horním rohu obrazovky.
Po skončení práce je třeba formulář z paměti uvolnit. To lze pomocí funkce Unload
.
Unload Form1
Formulář Form1
bude schován a paměť uvolněna pro jiné použití (při použití
této funkce je vyvolána událost Form_UnLoad
). Pokud takto paměť neuvolníte,
provede to VB za vás při ukončení programu nebo při skončení platnosti proměnné, která
představuje formulář. Není však dobré na to spoléhat. Nahrajete-li při běhu programu
několik formulářů a necháváte je zbytečně v paměti, zabíráte systémové prostředky počítače,
kterých není nikdy dost.
Formulář lze také pouze schovat. To provádí metoda Hide
.
Form1.Hide 'schova formular, zustane vsak v pameti
To je výhodné v případě, že používáte formulář na vstup nějakých hodnot. Po té, co uživatel
stiskne OK, nejdříve formulář shováte Hide
, přečtete hodnoty z prvků, které
se na něm nachází a až potom jej uvolníte z paměti Unload
. Např.:
Dim jmeno As string, prijmeni As string
frmOsUdaje.Show vbModal 'protoze je modalni, kod pokracuje dal az po jeho schovani
'schovani je provedeno v kodu frmOsUdaje pod tlacitkem OK, frmOsUdaje.Hide
jmeno = frmOsUdaje.txtJmeno
prijmeni = frmOsUdaje.txtPrijmeni
Unload frmOsUdaje
Vzhled formuláře určuje mnoho vlastností. U každé uvedeme její možnosti tak, jak jsou nabízeny v okně Properties. Pokud chcete vlastnost nastavit v kódu, použijte číselné hodnoty nebo konstanty, které najdete v nápovědě k vlastnosti.
Vlastnost | Význam | Hodnoty |
BorderStyle | Určuje styl formuláře (okraje, tlačítka). | None - pouze plocha bez tlačítek, okrajů a titulkové lišty. Fixed Single - formulář, jehož velikost nelze v programu měnit. Může obsahovat minimalizační a maximalizační tlačítko. Sizable - klasický formulář. Fixed Dialog - formulář, jehož velikost nelze v programu měnit. Nemůže obsahovat minimalizační a maximalizační tlačítko. Fixed Tool Window - formulář, jehož velikost nelze měnit. Titulková lišta i tlačítko X jsou menší. Sizable Tool Window - stejně jako Fixed Tool Window, lze však měnit jeho velikost. |
Caption | Titulek formuláře (text zobrazený v titulkové liště). Tento text je také zobrazen v hlavním panelu. | Jakýkoliv text. |
ControlBox | Určuje, zda budou v titulkové liště zobrazena tlačítka a vlevo ikona se systémovou nabídkou (menu). | True, False |
Icon | Ikona, která bude zobrazena v titulkové liště (standardně ikona z VB). | Soubor ICO. |
Height, Width, Left, Top | Výška, délka, levý horní roh zleva a zhora. | Hodnoty od 0 až do .... ve speciálních jednotkách VB, nazývaných Twipy (Twips). |
MaxButton | Určuje, zda bude zobrazeno maximalizační tlačítko. | True, False |
MinButton | Určuje, zda bude zobrazeno minimalizační tlačítko. | True, False |
Picture | Obrázek, který bude na pozadí formuláře. | Bitmapy, Gif, Jpeg, Metafile (WMF, EMF), ikony a kurzory. |
ShowInTaskBar | Určuje, zda se formulář objeví v hlavním panelu. | True, False |
Visible | Určuje, jestli bude formulář vidět nebo ne. | True, False |
V této kapitole bychom Vás chtěli seznámit s třemi, podle nás, nejběžnějšími prvky, které se používají ve Windows. Jde o Label (popisek), TextBox (textové pole) a CommandButton (tlačítko). Se všemi třemi se denně setkáváme snad ve všech programech, aniž bychom si to uvědomovali.
Slouží k prostému zobrazení textu, který ovšem není přímo měnitelný uživatelem. Hodí se
především jako popisek před textové pole nebo pro účely, kde má být text uživatelem neměnný. Tam kde to je možné, používejte jej přednostně před TextBoxem, který je poněkud náročnějším prvkem co se týče systémových zdrojů. Potřebujete-li mít vzhled TextBoxu, dosáhnete toho jednoduchou úpravou vlastností (nastavíte BorderStyle
na FixedSingle
a BackColor
na systémovou barvu Window BackGround
).
Pokud používáte Label jen při návrhu, tj. v kódu s ním nepracujete, jsou pro Vás důležité
pouze 2 vlastnosti, které se týkají vzhledu. Např. Caption
, což je text, který se zobrazí, Font
, která určuje typ použitého fontu, BackColor
pro
barvu pozadí apod. (nemá smysl všechny vyjmenovávat, lepší bude si vše vyzkoušet).
Pokud měníte text Labelu v kódu, např. pro zobrazování počtu zpracovaných záznamů, jsou
důležité další dvě vlastnosti. AutoSize
, která mění automaticky velikost prvku
v závislosti na délce textu a WordWrap
, která určuje, zda se bude nebo nebude text
zalamovat na více řádků.
Název tohoto prvku by se dal do češtiny přeložit jako textové pole. Slouží k tomu, aby mohl uživatel interaktivně měnit nebo zadávat hodnoty. Rozdíl od Label je jasně vidět, TextBox nejen zobrazuje, ale je možné jej i měnit uživatelem. Tam kde potřebujete získat libovolné údaje, ať už je užíváte v kódu nebo je třeba ukládáte do databáze (pro to má VB přímou podporu, o té si však řekneme v některém pozdějším díle) proto používáme nejčastěji TextBox.
Vložíme-li na formulář TextBox pro vstup dat od uživatele, chceme mít možnost tato data nějak přečíst. To umožňuje vlastnost Text
. V ní je obsažen veškerý text v TextBoxu
(umožňuje text nejen číst, ale i nastavovat). Př.
If Text1.Text="" Then
MsgBox "Zadejte spravny text"
Else
MsgBox Text1.Text
End If
Chceme-li zabránit aby uživatel po zadání špatné hodnoty neopustil TextBox, můžeme k tomu využít události Validate
. Tato nastane před ztrátou ohniska. Má jeden parametr,
Cancel
typu Boolean
. Jeho nastavením na True
můžete ztrátu ohniska zakázat . Uživatel tak stále zůstane na místě a vy ho můžete přinutit hodnotu opravit.
Private Sub Text1_Validate(Cancel As Boolean)
If Not IsDate(Text1.Text) Then
MsgBox "Chybně zadané datum", vbCritical, "Chyba"
Cancel = True
End If
End Sub
Standardně lze v TextBoxu psát text vždy jen na jeden řádek. To můžeme změnit nastavením vlastnosti MultiLine
na True
. Délku uživatelem vkládaného textu omezíte pomocí vlastnosti MaxLength
, kterou nastavíte na číslo odpovídající maximálnímu počtu znaků.
CoomandButton, neboli tlačítko, je používán pouze k jedné věci a tou je vždy potvrzení
nějaké akce. Uživatel třeba vyplní formulář a musí stiknout tlačítko, jinak se nedovíme, že
skončil. Proto je u něj nejdůležitější událost Click
. Nastává, jak je patrno
už z jejího názvu, jakmile uživatel na tlačítko klikne myší. Např.:
'Na stisk tlacitka Command1 se ukaze formular Form2
Private Sub Command1_Click()
Form2.Show
End Sub
Důležitými vlastnostmi u tlačítek jsou Cancel
a Default
.
Nastavíme-li Cancel = True
, a uživatel stikne klávesu Esc (samozřejmě
pouze pokud je aktivní formulář, na kterém se tlačítko nachází), je proveden kód
v události Click
. Default
je hodně podobné, ale reaguje na klávesu
Enter. Stikne-li tedy uživatel Enter, spustí se kód v události Click
. Na formuláři
je možno nastavit Cancel = True
pouze pro jedno tlačítko (stejně tak i
Default
.
Protože vše je nejlepší vidět na vlastní oči a také vyzkoušet, připravili jsme pro Vás příklad, který ukazuje většinu z toho, co jsme si v těchto dvou kapitolách vysvětlili. Jak funguje, naleznete v něm.