- Stahuj zápisky z přednášek a ostatní studijní materiály
- Zapisuj si jen kvalitní vyučující (obsáhlá databáze referencí)
- Nastav si své předměty a buď stále v obraze
- Zapoj se svojí aktivitou do soutěže o ceny
- Založ si svůj profil, aby tě tví spolužáci mohli najít
- Najdi své přátele podle místa kde bydlíš nebo školy kterou studuješ
- Diskutuj ve skupinách o tématech, které tě zajímají
Studijní materiály
Zjednodušená ukázka:
Stáhnout celý tento materiálvky umísťované na formuláře přichy-
ceny k mřížce.
Obr. 6 Dialog pro nastavení mřížky
Nyní nastavte některé vlastnosti ovládacího prvku TextBox:
Vlastnost Hodnota
(Name) txtText
MultiLine True
Text (prázdný řetěz)
Name (jméno) je vlastnost určující název ovládacího prvku, pod kterým se bude daný pr−
vek ovládat programovým kódem.
MultiLine – pokud je nastaveno na hodotu True, je povoleno vkládat do TextBoxu více−
řádkový text.
Text – jedná se o textový řetězec, který je obsažen v TextBoxu. Pokud bude hodnotou
prázdný řetězec, nebude při prvním zobrazení formuláře v poli žádný text.
UČEBNICE VISUAL BASICU 6.0
12
Dalším krokem bude přidání příkazového tlačítka CommandButton na plochu formulá−
ře. Proveďte to stejným způsobem jako u TextBoxu. Potom u tohoto tlačítka nastavte ná−
sledující vlastnosti:
Vlastnost Hodnota
(Name) cmdZobraz
Caption Zobraz text
Textová hodnota vlastnost Caption představuje titulek, který se zobrazí na příkazovém
tlačítku.
Stejně jako u TextBoxu můžete i u CommandButtonu nastavit jeho velikost buď tažením
za úchyty nebo definicí vlastností Width a Height.
Celý formulář nyní vypadá tak jako na obr. 7.
Obr. 7 Hotový návrh formuláře
Nyní přistoupíme k definování programového kódu spojeného s formulářem. V našem
případě nebudeme zakládat žádný samostatný programový modul, ale vystačíme s mo−
dulem formuláře. Jediným kódem bude kód, který zajistí, že při klepnutí na tlačítko
cmdZobraz se otevře okno se zprávou (Message Box), kde textem zprávy bude text ob−
sažený v TexBoxu txtText.
Pro otevření modulu formuláře poklepejte kamkoli na plochu formuláře Form1 mimo
ovládací prvky, které obsahuje. Otevře se okno kódu, které vidíte na obr. 8.
Popišme si nyní organizaci tohoto okna. V levem rozbalovacím poli jsou vyjmenovány
názvy všech ovládacích prvků umístěných na formuláři. Pouze formulář (jenž je na ob−
rázku právě vybrán) je identifikován slovem Form a nikoli svým názvem. Důvod je zřej−
mý – zatímco ovládacích prvků jednoho druhu může být na formuláři více, je nutné je−
jich rozlišení podle vlastnosti Name. Formulář však může být jen jeden, protože se po−
hybujeme v programovém modulu právě jednoho formuláře.
V pravém rozbalovacím menu je uveden výčet událostí, které mohou na zvoleném ovlá−
dacím prvku vzniknout a které je tudíž možné programově ošetřit. Aktuálně zvolená je
událost Load formuláře. Událostní procedura Form_Load může obsahovat kód, který
se provede při natažení formuláře do paměti počítače, tedy těsně před jeho zobrazením
na monitoru. Tato událostní procedura nás ovšem nezajímá – tu tentokrát programovat
nebudeme.
ČÁST 1 – OBECNÉ ZÁSADY PROGRAMOVÁNÍ
13
Obr. 8 Okno pro definici programového kódu příslušného k formuláři
TIP:
Událostní procedurou označujeme ucelenou část programového kódu, která se provede jako
odezva na výskyt události, ke které je procedura připojena.
Potřebujeme naprogramovat činnost aplikace po kliknutí na tlačítko cmdZobraz. Proto
z levého sloupce vybereme ovládací prvek cmdZobraz a z pravého jeho událost Click.
Do událostní procedury cmdZobraz_Click zaneseme následující kód:
Private Sub cmdZobraz_Click()
MsgBox txtText.Text
End Sub
Popišme si, co znamená programový text, který jsme právě zapsali. Popisem procedur
a jejich použitím se budeme podrobněji zabývat v následující lekci. Zde je popsán pou−
ze základ nezbytný k porozumění uváděného příkladu.
První řádek je definice hlavičky procedury. Klíčová slova Private Sub uvozují proceduru.
Jejich přesný význam bude popsán později. Následuje název procedury. Pro událostní
procedury je zavedena neměnná konvence tak, že její název se skládá:
• z názvu ovládacího prvku, na němž může událost vzniknout
• z podtržítka
• z názvu události, která je programovaná.
UČEBNICE VISUAL BASICU 6.0
14
Za názvem procedury následuje tzv. seznam parametrů, které do procedury vstupují.
Vzhledem k tomu, že tato procedura žádné parametry nemá, následují za názvem už jen
levá a pravá závorka.
Pod prvním řádkem v proceduře následuje vždy tzv. tělo, které představuje samotný kód
Visual Basicu. V našem případě se jedná o jediný řádek. Klíčové slovo MsgBox zobrazí
okno se zprávou. Zpráva, která bude zobrazena, následuje za klíčovým slovem. Podle
zadání úlohy to má být textový řetězec zapsaný v TextBoxu txtText. Jak již víme, tento
řetězec je zapsán ve vlastnosti Text příslušného ovládacího prvku.
Jak tedy programově zjistit hodnotu vlastnosti ovládacího prvku? Vždy tak, že zapíšeme
název příslušného ovládacího prvku, který je následován tečkou a názvem vlastnosti.
Posledním řádkem procedury je End Sub, který standardně ukončuje proceduru.
Nyní spusťte celý program příkazem Run/Start z nabídky nebo klávesou F5.Vytvořený
formulář se zobrazí na obrazovce s kurzorem blikajícím v textovém poli. Vepište tedy do
textového pole libovolný textový řetězec a klepněte na tlačítko s nápisem Zobraz text.
Výsledek by měl vypadat podobně jako na obrázku 9.
Obr. 9 Takto funguje náš první program
TIP:
Aplikaci zastavíte příkazem Run/End z nabídky. Před tím ovšem musíte zavřít okno se zprávou
klepnutím na tlačítko OK tohoto okna.
Funkce volání okna se zprávou MsgBox
U této funkce se zastavme hned v začátku, protože její použití je velmi časté. Okno se
zprávou se používá vždy, když program potřebuje uživatele na něco upozornit nebo
o něčem informovat. Typickým příkladem může být zobrazení chybového hlášení.
Funkce MsgBox zobrazí dialogové okno se zprávou a čeká dokud uživatel nestiskne tla−
čítko. Vrací hodnotu, která určuje, které tlačítko uživatel stiskl. Kromě textu zprávy uži−
vatel také definuje, jaká tlačítka se mají zobrazit, které z nich bude předvoleno a která
ikona bude zprávu graficky doplňovat.
ČÁST 1 – OBECNÉ ZÁSADY PROGRAMOVÁNÍ
15
Syntaxe funkce je následující:
MsgBox(prompt[, buttons][,title][, helpfile, context])
TIP:
Argumenty uvedené v hranatých závorkách znamenají, že jejich definice je nepovinná. V našem
příkladu z lekce 1 je definován pouze argument prompt.
Popis argumentů:
prompt Řetězcový výraz zobrazený jako dialogová zpráva. Maximální délka
promptu je závislá na šířce znaků písma, které je použito (cca 1024 zna−
ků). Má−li prompt více než jednu řádku, je možné jej rozdělit pomocí zna−
ků konce odstavce (Chr(13)), přesunu na další řádek (Chr(10)) nebo je−
jich kombinací (Chr(13) + Chr(10)) mezi všemi řádky. Více si o této tech−
nice povíme v lekci věnované práci s řetězci.
buttons Číselný výraz sestávající ze součtů identifikačních čísel tlačítek, které mají
být zobrazeny, ikon a předvoleného tlačítka (viz dále). Implicitní hodnota
(pokud vynecháte tuto volbu) je 0.
title Řetězcový výraz zobrazený v titulkovém pruhu dialogu. Pokud title vyne−
cháte, je do titulkového pruhu vloženo jméno aplikace. V našem případě
byl názvem aplikace text Project1.
helpfile Řetězcový výraz určující název souboru, který obsahuje text nápovědy k di−
alogu. Je−li argument helpfile určen, musí být také určen argument context.
context Číselný výraz, který je přiřazen k tématu nápovědy.
Hodnota argumentu buttons vzniká jako součet hodnot vybraných po jedné z následují−
cích částí (zkušenější z Vás správně poznávají vztah těchto dekadických čísel k binární
soustavě). V prvním sloupci je určen název konstanty, který lze použít místo číselné hod−
noty, dále hodnota a popis:
1.část určuje tlačítka zobrazená v dialogu:
Identifikátor Hodnota Popis:
vbOKOnly 0 Zobrazí pouze tlačítko ”OK”.
vbOKCancel 1 Zobrazí tlačítka “OK” a “Storno”.
vbAbortRetryIgnore 2 Zobrazí tlačítka ”Zpět”, ”Znovu” a ”Ignorovat”.
vbYesNoCancel 3 Zobrazí tlačítka ”Ano”, ”Ne” a ”Storno”.
vbYesNo 4 Zobrazí tlačítka ”Ano” a ”Ne”.
vbRetryCancel 5 Zobrazí tlačítka ”Znovu” a ”Storno”.
2.část určuje styl ikony:
Identifikátor Hodnota Popis:
vbCritical 16 Zobrazí ikonu kritické zprávy.
vbQuestion 32 Zobrazí ikonu varovného dotazu.
UČEBNICE VISUAL BASICU 6.0
16
vbExclamation 48 Zobrazí ikonu varovné zprávy.
vbInformation 64 Zobrazí ikonu informační zprávy.
3.část určuje, které tlačítko je výchozí:
Identifikátor Hodnota Popis:
vbDefaultButton1 0 Výchozí tlačítko je první.
vbDefaultButton2 256 Výchozí tlačítko je druhé.
vbDefaultButton3 512 Výchozí tlačítko je třetí.
4.část určuje režim dialogu:
Identifikátor Hodnota Popis:
vbApplicationModal 0 Aplikační režim – uživatel musí před pokračo−
váním další práce ve zvolené aplikaci odpově−
dět na zprávu. Hodnota 0 je implicitně předvo−
lena. Pokud vynecháte zadání argumentu but−
tons, budou informační okna pracovat v tomto
režimu.
vbSystemModal 4096 Systémový režim – všechny aplikace jsou po−
zastaveny, dokud uživatel neodpoví na zobra−
zenou zprávu.
A jaké hodnoty funkce MsgBox vrací? V prvním sloupci je název vrácené konstanty, ve
druhém její číselná hodnota a v posledním název tlačítka, které bylo stisknuto.
Identifikátor Hodnota Popis:
vbOK 1 OK
vbCancel 2 Storno
vbAbort 3 Zpět
vbRetry 4 Znovu
vbIgnore 5 Ignorovat
vbYes 6 Ano
vbNo 7 Ne
V případě, že v TextBoxu nebude zapsán žádný text, zobrazí se hlášení „Není zadán žád−
ný text“
obr. 10 MsgBox “Toto je okno se zprávou.”, vbInformation + vbOKOnly, “Zpráva”
ČÁST 1 – OBECNÉ ZÁSADY PROGRAMOVÁNÍ
17
Lekce 3
Začínáme programovat
Cíle lekce:
Vysvětlit základní možnosti tvorby progra−
mového kódu, popis a použití procedur,
proměnných akonstant.
Než začneme vytvářet první program ve Visual Basicu, je nutné si říci základní filozofii
vytváření takového programu a to, jaké nástroje máme pro tvorbu kódu k dispozici.
Programový kód Visual Basicu netvoří jeden ucelený program, jako je tomu v některých
jiných programovacích jazycích. Náš program se skládá ze souboru procedur a funkcí.
S událostními procedurami jsme se již seznámili v první lekci – tyto procedury patří ve
Visual Basicu mezi nejdůležitější. Jsou připojeny k událostem jednotlivých ovládacích
prvků a jsou aktivovány aplikací samotnou vždy ve chvíli, kdy příslušná událost nasta−
ne. (Událostí může být např. klepnutí nebo poklepání myší na ovládací prvek, otevření
formuláře, ztráta nebo získání zaměření ovládacího prvku a mnoho dalších.) Kromě udá−
lostních procedur lze definovat i procedury obecné, které nejsou připojeny k žádné udá−
losti, ale na které se mohou ostatní událostní i obecné procedury odvolávat. Všechny
procedury (událostní i obecné) se uchovávají v tzv. programových modulech. Rozezná−
váme dva druhy modulů:
• Modul připojený k formuláři – v modulech tohoto typu jsou uloženy všechny
událostní procedury a mohou v něm být i procedury obecné. Tento modul se
automaticky zakládá spolu se svým formulářem a už ho neopouští.
• Standardní modul – tento modul může obsahovat pouze obecné procedury a je
nutné ho před použitím explicitně založit. K tomu slouží příkaz nabídky Pro−
ject/Add Module. Název každého standardního modulu zahrnutého do projektu
se objeví v okně projektu (viz obr. 4).
Popis okna modulu, do kterého se ukládají procedury a vůbec veškerý programový kód,
byl uveden již v první lekci. Proto jen stručně:
• Mezi procedurami v každém modulu se lze pohybovat pomocí rozbalovacích se−
znamů v horní části okna modulu (viz obr. 8).
• Levé pole slouží k vybrání konkrétní procedury pro editaci.
• Zobrazuje−li levé pole položku (General), pak nabídka pravého pole obsahuje
názvy všech obecných procedur. Pokud levé pole obsahuje název některého
z ovládacích prvků formuláře, v pravém poli se objeví název události pro aktuál−
ně editovanou událostní proceduru.
19
TIP:
Události, ke kterým jsou již přiřazeny událostní procedury, se v nabídce pravého pole zobrazují
tučně.
Začněme tedy se seriózním a úplným popisem programovacího jazyka Visual Basic. Nej−
důležitější jednotkou programového kódu je procedura. Proto začneme nejprve s popi−
sem procedur.
Procedury
Spustitelný kód je v modulech uložen ve formě procedur. Událostní procedura reagující
na výskyt události, ke které je připojena, je vždy uvozena klíčovým slovem Sub auklá−
dá se do modulu připojeného k formuláři. Obecné procedury se netýkají konkrétního
objektu, a proto se mohou vyskytovat v obou druzích modulů popsaných výše. Mohou
být uvozeny klíčovým slovem Sub (tyto procedury nevracejí při svém ukončení žádnou
hodnotu) nebo slovem Function (procedury vracející hodnotu využitelnou v dalším bě−
hu programu). V příštím výkladu budeme nazývat procedury uvozené slovem Funktion
jako funkce.
Obecné procedury se spustí, pouze pokud je explicitně vyvoláte (v jiné obecné nebo
událostní proceduře). Důvodů pro tvorbu obecných procedur je hned několik. Prvním
z nich je možnost výpočtu a vrácení hodnoty procedurou – obecné procedury se tedy
dají naprogramovat jako uživatelem definované funkce a používat je třeba ve výrazech.
TIP:
Klasickým přikladem může být výpočet DPH. Do takové funkce vstupuje cena bez DPH, případně
příznak definující procentuální výši DPH. Funkce pak vrací cenu s DPH.
Další situací, kdy je dobré použít obecnou proceduru, je případ, kdy několik událostních
procedur vykonává stejnou činnost. Tuto činnost je výhodné naprogramovat ve formě
obecné procedury, která bude volána ze všech událostních procedur. Zabrání se tak
duplikaci kódu a zjednoduší se údržba a případné další změny této části aplikace.
Uveďme si nyní obecnou syntaxi procedur a funkcí.
[Static] [Private] [Friend] Sub názevprocedury (seznam argumentů)
příkazy
End Sub
Klíčová slova Static, Private a Friend jsou v syntaxi nepovinná a definují, zda se jedná
o tzv. statickou, soukromou nebo ??? proceduru. Tato klíčová slova budou popsána poz−
ději. Název procedury nesmí obsahovat mezery. Pokud se jedná o událostní proceduru,
řídí se název procedury Sub přesnými pravidly: skládá se z kombinace názvu ovládacího
prvku, k jehož události je procedura připojena (např. Form, je−li událostní procedura při−
pojena k formuláři), dále znaku podtržítko (_) a názvu události. Např. Form_DblClick je
UČEBNICE VISUAL BASICU 6.0
20
název událostní procedury určené pro spuštění při poklepání (dvojitém kliknutí) myší na
plochu formuláře mimo jeho záhlaví a kterýkoli ovládací prvek umístěný na formuláři.
TIP:
Jak již víme, pokud je událostní procedura připojena k ovládacímu prvku formuláře, nahrazuje slo-
vo Form název ovládacího prvku.
TIP:
Název ovládacího prvku je uveden v poli vlastnosti Name (název) a nemusí souhlasit s vlastností
Caption (titulek). Pokud později změníte název ovládacího prvku, je nutné stejně změnit i názvy
všech událostních procedur. Jinak se spojení mezi ovládacím prvkem a událostními procedurami
ztratí.
Procedura typu Function má podobnou syntaxi:
[Static] [Private] Function názevprocedury (seznam argumentů) [As typ]
Klíčová slova zde mají stejný význam jako u procedury Sub. Mezi oběma typy procedur
je však několik rozdílů:
1.Procedury Function vracejí při ukončení hodnotu do názvu procedury, a proto má
procedura Function udaný datový typ. Implicitně je funkce typu Variant.
2.Argumenty procedury Function se uvádějí v závorkách nejen při deklaraci, ale také
při volání procedury.
3.Procedura Function nemůže v aplikaci figurovat jako událostní procedura a musí
být proto definována jako obecná.
4.Zatímco procedury Sub často nepotřebují žádný seznam argumentů, funkce jsou ur−
čeny především pro zpracování těchto argumentů. Proto je deklarace funkce bez
udaného seznamu argumentů spíše výjimkou.
Popišme si nyní, jak vypadá tento seznam argumentů:
Proceduře nebo funkci lze předávat jeden nebo více argumentů. Předává−li se více než
jeden argument, jsou argumenty navzájem odděleny čárkou. Syntaxe každého argumen−
tu je následující:
[Optional] [ByVal] názevproměnné [()] [As typ]
Implicitní způsob předávání argumentů je tzv. odkazem (někdy se uvádí jménem). To
znamená, že procedura může měnit hodnotu této proměnné a nová hodnota zůstane za−
chována i po skončení procedury při dalším běhu programu. Pokud chcete předávat ar−
gument hodnotou, musíte uvést před argument klíčové slovo ByVal. Klíčové slovo Opti−
onal bude popsáno později. Případné závorky za názvem proměnné určují, že předáva−
ným argumentem je indexové pole. Typ proměnné se uvádí za klíčové slovo As. Visual
Basic používá následující datové typy: Byte, Boolean, Integer, Long, Single, Double,
Date, Currency, String, Variant, Object nebo uživatelem definovaný typ. Popis datových
typů bude uveden později. Pokud datový typ argumentu není explicitně uveden, stává se
ČÁST 1 – OBECNÉ ZÁSADY PROGRAMOVÁNÍ
21
datovým typem Variant, což znamená, že proměnná může obsahovat jakýkoli typ dat. Při
volání procedury se její argumenty (na rozdíl od její definice) neuvádějí v závorkách.
Příklad:
Na volání procedury Alfa nejsnáze pochopíte rozdíl, mezi předáváním argumentů odka−
zem a hodnotou. Procedura Alfa má argument intA volaný odkazem a intB volaný hod−
notou. Po zavolání procedury Alfa z procedury Main bude v proměnné a hodnota 4
a v proměnné b hodnota 2. K tomuto příkladu se vrátíme v dalším výkladu, až si vysvě−
tlíme další pojmy nezbytné k pochopení tohoto kódu.
Sub Alfa (intA As Integer, ByVal intB As Integer)
intA = 2*intA
intB = 2*intB
End Sub
Sub Main ()
Dim a As Integer
a=2
b=2
Alfa a,b
Debug.Print a
Debug.Print b
End Sub
Příklad:
Funkce vypočte, kolik je x procent (hodnota proměnné dbProcenta) ze zadaného celku
(hodnota proměnné dbCelek). Oba argumenty jsou volány hodnotou. Výsledná hodno−
ta se přiřadí do proměnné vysledek v proceduře Main.
Function Counter ( ByVal dbCelek, dbProcenta As Double) As Double
Counter= dbCelek/100*dbProcenta
End Function
Sub Main ()
vysledek = Counter (300, 10)
End Sub
TIP:
Vidíte, že tělo procedury se ukončuje klíčovým slovem End Function, jedná-li se o proceduru
Function a End Sub, pokud jde o proceduru Sub.
TIP:
Pokud vás nezajímá hodnota, kterou procedura vrací, můžete ji vyvolat i bez přiřazení této hod-
noty jiné proměnné.
UČEBNICE VISUAL BASICU 6.0
22
TIP:
Pokud je argument volán odkazem, musejí být obě proměnné (volaná – intA a volající – a) dekla-
rovány jako stejný datový typ. U proměnných volaných hodnotou je jejich použití volnější. Jak
ukazuje funkce Counter, volající nemusí být vůbec proměnná, ale může se předávat konstanta.
Funkce (jak sám název napovídá) jsou určeny pro provádění výpočtů. Výpočty se pro−
vádějí pomocí výrazů, jejichž součásti a povolené operace závisejí na tom, s jakými ope−
randy výraz nakládá a jakého typu má být výsledek. Pokud chcete, aby funkce vracela
výsledek výpočtu, musí tělo funkce obsahovat řádek, na kterém se názvu funkce (jako
proměnné výše definovaného typu) přiřadí příslušná hodnota. Tato hodnota musí být
stejného datového typu, jako je deklarovaná funkce.
TIP:
„Výpočty“ lze provádět nejen s čísly, ale s daty všech datových typů – Tj. např. s textovými ře-
tězci nebo daty typu Currency (peněžními položkami – jejich datový typ se od běžných čísel ta-
ké liší).
Zapsáním kódu procedury do modulu často pravé programátorské trampoty teprve začí−
nají. Zapsaný kód funkcí a obecných procedur typu Sub je nutné zkompilovat a všech−
ny procedury pak odladit.
TIP:
Syntaxe vkládaného kódu se ověřuje již při jeho zadávání po jednotlivých řádcích (při přechodu
na nový řádek pomocí klávesy ENTER), a proto je kompilace procedur většinou rychlou záležitos-
tí. Pokud však nechcete, aby byla syntaxe kontrolována již při psaní, zrušte zatržení položky Au-
to Syntax Check v dialogu na obr. 11. Tento dialog otevřete příkazem nabídky Tools/Options.
obr. 11 Zde můžete zrušit automatickou kontrolu syntaxe psaného kódu.
ČÁST 1 – OBECNÉ ZÁSADY PROGRAMOVÁNÍ
23
Kompilace převádí vámi zapsané procedury do strojového kódu. Ve formě stro
Vloženo: 26.04.2009
Velikost: 5,82 MB
Komentáře
Tento materiál neobsahuje žádné komentáře.
Copyright 2024 unium.cz