8.1 Procedury
8.2 Vkládání a používání více formulářů
8.3 Používaní „Me“
8.4 With . . . a end with
8.5 CommonDialog – Barvy a Font
8.6 MSDN
8.7 Prvky na prolistování obsahu disku
8.8 Domácí úkol
8.9 V další lekci
8.1 Procedury
Procedury jsou velmi podobné funkcím, ale ve svém názvu nevracejí žádnou hodnotu, avšak vstupní parametry jim můžeme zadávat také. Stejně jako funkce je záhodno i vlastní procedury psát do modulů. Můžeme je zapsat třemi způsoby:
Private Sub pozdrav()
Form1.Print "ahoj"
End Sub
Sub pozdrav()
Form1.Print "ahoj"
End Sub
Public Sub pozdrav()
Form1.Print "ahoj"
End Sub
První je privátní funkce a je použitelná pouze ve formuláři nebo v modulu, ve kterém je zapsaná. Další dvě jsou potom veřejné a fungují globálně v celém programu. Pokud to vaše bystré oko nepostřehlo, tak zápis je prakticky stejný jako u funkcí. Pokud budeme používat proceduru, které chceme dát nějaké parametry, potom je zapisujeme stejně jako u funkcí. Rozdíl mezi použitím funkce tkví nejen v možnosti použít návratové hodnoty v jejím názvu, ale také v tom, že funkce se používá především pro výpočty a jednodušší operace, zatímco procedura se používá na kódy, které bývají mnohem delší, které pracují s objekty a velmi často také používají dalších funkcí. Tedy procedury v sobě mohou obsahovat ještě další volání funkcí. Naopak je to méně časté. Většina ostatních věcí je stejných jako u funkcí.
8.2 Vkládání a používání více formulářů
Formuláře se vkládají pomocí: Projekt > Add Project. Tím se zobrazí další formulář. Na ten můžete vkládat další objekty. Formulářů může být mnoho. Na každý můžete vkládat mnoho objektů. Formuláře si mezi sebou předávají proměnné pomocí globálních proměnných. Víc nic k tomu není. Všechno najdete v okně projektu.
8.3 Používaní „Me“ a
Me… Me se používá místo Form1, pokud s tímto formulářem právě pracujete - je aktuální. Pokud pracujete ve formuláři Form2, tak Me nahrazuje Form2. Použití:
Místo
Form1.Caption = "Program"
lze napsat:
Me.Caption = "Program"
Takže nám to trochu zjednodušší kód. Ale žádný zázrak to není.
8.4 With . . . a End With
Tohle je trochu zajímavější a použitelnější. Pokud některému objektu upravujete víc vlastností nebo s ním pracujete ve větším rozsahu, tak je vhodné použití tohoto zápisu. Příklad uvedu opět na formulář:
With Form1
.Left = 100
.Top = 100
.Height = 10000
.Width = 10000
.Caption = "Program"
End With
Takto vypadá kód ošetřený With a takto bez něj:
Form1.Left = 100
Form1.Top = 100
Form1.Height = 10000
Form1.Width = 10000
Form1.Caption = "Program"
Tedy ne že by to byla nějaká ohromná úspora kódu, ale program je potom mnohem přehlednější. Používání vřele doporučuji. To by bylo taky vše, myslím, že není potřeba říct nic víc.
8.5 CommonDialog – Barvy a Font
Věřte nevěřte, tato maličkost dokáže zjednodušit vaši práci. Obsahuje totiž pár dialogů, které byste jinak museli sami vytvářet jako samostatné formuláře a nejspíš by vám daly zabrat. Dokáže totiž zobrazit dialog pro výběr barvy fontu, dialog pro uložení a otevření souboru, můžete pomocí něj vybírat tiskárnu a zobrazovat help. Začneme Dialogem pro výběr barev. Než se do něj pustíme, tak potřebujeme na formulář vložit CommonDialog. Ale v ToolBoxu není, takže na ToolBox klikneme pravým tlačítkem myši a z nabídky vybereme Components… V okně Components, které se nám zobrazí, tak v záložce Controls vybereme ze seznamu Microsoft CommonDialog Control 6.0. Zaškrtneme CheckBox o něj a klikneme na OK. Tím se nám v ToolBoxu zobrazí jeho zástupce a my ho vložíme na formulář. Vložíme na něj také tlačítko, na tlačítko poklikáme a do procedury napíšeme, že po kliknutí se nám zobrazí CommonDialog, který nám dá možnost výběru barvy pozadí formuláře. Kód bude vypadat následovně:
Private Sub Command1_Click()
CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color
End Sub
Kliknete na tlačítko a kód CommonDialog1.ShowColor zobrazí CommonDialog pro výběr barev a čeká na vaši reakci. Poté, co vyberete nějakou barvu, se následujícím řádkem kódu přemístí do vlastnosti BackColor, což je barva pozadí. Pro ukázku ještě jednou na něčem jiném, třeba na našem tlačítku.
Private Sub Command1_Click()
CommonDialog1.ShowColor
Command1.BackColor = CommonDialog1.Color
End Sub
A nezapomeňte nastavit vlastnost tlačítka Style na Graphical. To je tak k barvám a teď se podíváme na fonty.
Zde je kousek kódu, který nám umožní výběr fontu, barvy, velikosti a dalších vlastností písma.
Private Sub Label1_Click()
CommonDialog1.Flags = cdlCFEffects Or cdlCFBoth
CommonDialog1.ShowFont
Label1.FontSize = CommonDialog1.FontSize
Label1.FontBold = CommonDialog1.FontBold
Label1.FontItalic = CommonDialog1.FontItalic
Label1.FontStrikethru = CommonDialog1.FontStrikethru
Label1.FontUnderline = CommonDialog1.FontUnderline
Label1.FontName = CommonDialog1.FontName
Label1.ForeColor = CommonDialog1.Color
End Sub
Tento kód nám po kliknutí na Label umožní změnit vlastnosti jeho písma, ale první řádek nás trochu zdrží. Obsahuje vlastně nastavení toho, co se má v CommonDialogu zobrazit a jak Flags znamená v překladu vlajka, ale to není důležité. Důležité je, že tato vlastnost nám umožňuje nastavit, co a jak se má zobrazit, nebo co a jak má být. Tento CommonDialog jako jediný musí mít Flag, aby se zobrazil. Zde jsou ale zapsány dva Flagy, první sice ne první, ale ten důležitější cdlCFBoth umožní načtení písem, a ten druhý cdlCFEffects zvětší možnosti nastavení písma. Oba jsou od sebe odděleny slovíčkem OR. Těchto Flagů je mnohem víc, ale zabývat se jimi teď nebudeme. Pokud byste měli zájem a máte přístup k internetu, je dobré využít nápovědy MSDN. O ní se zmíním v další části kapitoly. Další vlastnosti CommonDialogu si popíšeme až časem, kdy je budeme potřebovat a kdy je budeme moci použít.
8.6 MSDN – Nápověda Online
MSDN - pokud jste šťastnými majiteli 2CD, na kterých je nápověda k celému Visual Studiu, tak jich můžete využít. Pokud k nim ale nepatříte, tak můžete využít nápovědy on-line. Adresa je: http://msdn.microsoft.com/vbasic/. Je tam prakticky vše, nevýhodou je angličtina. Je tam pole pro vyhledávání, do kterého stačí zadat klíčové slovo nebo sentenci, a povětšinou se podaří najít hledané. Je zde nápověda i pro ostatní jazyky Visual Studia. Tato nápověda může pomoci jak profesionálům a pokročilým, tak i začátečníkům. Ještě bych se chtěl vrátit k možnostem Flagů, protože není problém další Flagy najít na MSDN.
8.7 Prvky na prolistování obsahu disku
Dostáváme se do závěrečné části dnešní lekce a tu tvoří prvky k prolistování obsahu disku, k nim si přidáme ještě drobnou ukázku využití ImageBoxu, protože si uděláme prohlížeč obrázků. Není to nic složitého, stačí myslet. Tak se pusťme do myšlení a začněme rozebráním následujícího kódu. Prvky se jmenují DriveListBox DirListBox a FileListBox. Každý z nich si po jednom umístíme na formulář, přidejte jeden ImageBox a jeden Label. Zapište následující kód.
Private Sub Dir1_Change()
File1.Path = Dir1.Path 'pokud změníte složku
'tak se změní i obsah FileListBoxu
Label1.Caption = File1.Path 'změna v obsahu ukazatele plné
'cesty kterým je Label1
End Sub
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive 'Vyberete mechaniku a tím
'se změní obsah složek v
'DirlistBoxu
File1.Path = Dir1.Path 'A následně se změní i obsah
'FileListBoxu
Label1.Caption = File1.Path 'změna v obsahu ukazatele
'plné cesty kterým je Label1
End Sub
Private Sub File1_Click()
Image1.Stretch = True 'zapnte možnost ať se obrázek
'přizpůsobí velikosti ImageBoxu
Image1.Picture = LoadPicture(File1.Path & "\" & _
File1.FileName) 'Tímto zadáte celou cestu k
'obráku i se jménem souboru.
'obrázek se načte do Image.
Label1.Caption = File1.Path & "\" & _
File1.FileName 'změna v obsahu ukazatele plné cesty kterým
'je Label1
End Sub
Private Sub Form_Load()
File1.Pattern = "*.jpg; *.gif; *.bmp; _
*.dib; *.wmf" 'Omezíte možnost výběru
'složky pouze na tyto druhy
'obrázků. Jiné Visual Basic
'bez zvláštních knihoven
'nepodporuje.
Label1.Caption = File1.Path & "\" & _
File1.FileName 'načtete prvotní informaci do
'ukazatele cesty
End Sub
To by byl kód jednoduchého prohlížeče obrázků. Zde je ukázáno využití prvků FileListBox, DirListBox a DriveListBox. Já osobně tyto prvky moc nedoporučuji a radil bych spíš využití CommonDialogu. Ušetříte si tak spoustu kódů. No ale už vás nehodlám zdržovat výkladem, tak se pustíme do domácího úkolu. Bacha na chybu, pokud se třeba přepnete na mechaniku E a nemáte v ní disk, tak vám to vyhodí chybu, ale o tom v příští lekci.
Ještě jsem téměř zapomněl, a tak se vrátím k funkci Pattern. Ta nám umožňuje zobrazovat pouze vybrané typy souborů. Můžeme jich použít i několik. Všechny jsou v jedněch uvozovkách a oddělují se středníkem. Takto:
File1.Pattern = "*.jpg; *.gif; *.bmp; *.dib; *.wmf"
Můžeme použít i otazníky, které nahrazují každý jeden znak, anebo hvězdičky, které zastupují různý počet znaků. Třeba B*.??F je každý soubor, který začíná na B a jeho přípona je na tři písmena a končí na F.
8.8 Domácí úkol
Za domácí úkol bude vytvoření prohlížeče obrázků, ale nebude ledajaký. Zaprvé - pokud kliknete na Label, tak budete moci pomoci CommonDialogu změnit jeho barvu. Prvky se na formuláři rozmístí až po startu programu, a to pomocí procedury, kterou zavoláte z Form_Load tak, že když já si váš program pustím, tak uvidím prvky přesně tak rozmístěné, jako je máte vy. Budete si moci změnit barvu pozadí formuláře, a to též pomocí CommonDialogu.
8.9 V další lekci
CommonDialog pokračování, odchytávání chyb, barvy, datum a čas, reakce na stisknutí různých tlačítek myši nebo kláves a Pop up Menu.