Pedagogická Fakult Masarykovy univerzity

 

 

 

 

 

 

 

 

 

 

 

 

Visual Basic 6.0

 

 

Jiří Strach

 

 

 

 

 

 

 

1997

 

        

Úvod   3

2.    Objektově orientované programování  4

2.1.    Události  6

3.    Popis vývojového prostředí  7

3.1.    Charakteristiky dodávaných edicí Visual Basicu. 7

3.2.    Nároky na instalovaný hardware a software. 7

3.3.    Pomocné vývojové prostředky   8

3.4.    Spuštění Visual Basicu z Windows. 8

3.5.    Integrované vývojové prostředí Visual Basicu (IDE - Integrated Development Environment ) 8

Okna Visual Basicu   10

Hlavní panel  10

Okno formy   11

Okno zdrojových textů   12

Okno Debug   13

Okno projektu   14

Okno vlastností (Propertis) 15

Okno nástrojů (Toolbox) 15

Režimy činnosti Visual Basicu   16

Příprava nového projektu   18

Návrh uživatelského rozhraní (User Interface) 19

Základy programování ve Visual Basicu   20

Struktura aplikace   20

Jak pracuje událostí řízená aplikace  20

Kód pro spuštění aplikace  21

Ukončení aplikace  21

Prvky jazyka   22

Moduly   23

Podprogramy (procedury) událostí (Event procedues) 23

Podprogramy (General procedures) 24

Zdrojové texty procedur (Code in Procedures) 27

Instrukce podprogramu (Steatements) . 28

Nastavení a změna vlastností objektů   28

Proměnné  30

Datové typy   31

Základní typy proměnných   32

Uživatelsky definované typy   36

Objektové typy   37

Výrazy, operátory, operandy   39

Operátory   39

1.6.    Příkazy jazyka   43

1.6.1.    Deklarační příkazy   43

1.6.2.    Přiřazovací příkazy   46

1.6.3.    Příkazy cyklu   47

1.6.4.    Příkazy pro řízení běhu aplikace  49

1.6.5.    Příkazy pro ošetření chyb. 51

1.7.    Použití objektů v aplikací  52

1.7.1.    Formy (Form) 52

1.7.2.    Objekty typu Control  58

Help VB 5.0

 

Úvod

Programovací jazyk Visual Basic 6.0 se nazývá  Visual protože je v něm použita metoda vizuální tvorby grafického uživatelského prostředí (GUI - Graphical User Interface). Místo toho, aby bylo třeba psát desítky a stovky řádků programu popisující uživatelské prostředí tvořeného programu , programátor jednoduše uchopí  a vtáhne potřebný objekt do patřičného místa na obrazovce, kde se bude při běhu programu vyskytovat (Drag and drop technologie). Slovo Basic znamená , že tento objektově orientovaný jazyk zahrnuje jako podmnožinu svých příkazů originální jazyk BASIC který byl obohacen o stovky příkazů a klíčových slov z nichž mnohé přímo ovládají grafické rozhraní Windows. Začátečník může pomocí tohoto jazyka vytvářet použitelné aplikace pro Windows , získáním znalosti nemnoha klíčových slov, ale současně tento jazyk dovoluje profesionálům vytvářet velmi náročné aplikace na příklad třívrstvé architektury client server. Tento programovací jazyk neslouží pouze pro vytváření aplikací v tomto jazyce, ale tak zvaná  Applications Edition umožňuje programovat makra v systémech jako je EXEL a ACCESS a v dalších programech  obsažených v Microsoft Office. Část Visual Basicu nazvaná Scripting Edition (VBScript) je určena pro programování Internetových stránek a použitá syntaxe i klíčová slova svým významem odpovídají použití v ostatních aplikacích.

Z výše uvedeného plyne, že programovací jazyk Visual Basic uspokojí celou širokou škálu tvůrců programového vybavení od  těch, kteří si přejí vytvořit malou utilitu  pro zlepšení užitné hodnoty některého s programů balíku Microsoft Office až po pracovní skupiny vytvářející náročné síťové aplikace. Vedle výše popsaných vlastností umožňuje Visual Basic :

·      Připojení databází umožňuje vytvářet front - end aplikace prakticky pro všechny populární databázové formáty, včetně Microsoft SQL Serveru a dalších enterprise-level databází.

·      Technologie ActiveX  umožňuje vkládat do vytvářených programů vlastnosti jiných aplikací jako jsou na příklad MSWord nebo Excel. 

·      Využitím vlastností Internetu můžete jednoduše propojovat dokumenty a aplikace obsažené na vašem počítači i v Intranetu a Internetu.

·      Výsledkem vaší tvorby jsou .EXE soubory které můžete pomocí  Applications Setup Wizardu volně distribuovat včetné run -time dynamic-link librery (DLL)

2.      Objektově orientované programování

 

 

 

 

 

 

                       

Obr.1

Současné metody programování lze rozdělit na procedurální a objektově orientované.  K procedurálnímu programování se využívali programovací jazyky Cobol, Fortran, C, Basic, Pascal. V posledních letech většina jazyků byla doplněna moduly pro objektově orientované programování Objekt CC+, TurboVision. Vznikla však také zcela nová generace objektově orientovaných jazyků, která sice čístečně používá některé části starších jazyků ale představuje zcela nvý nástroj. Jsou to na příklad  Delphi - Turbopascal a také Visiual Basic - Basic.

Každý program je v nejobecnějším případě možno považovat za funkci, která prostřednictvím hardwaru počítače transformuje vstupní data  na výstupní. V důsledku vývoje tvorby programů a růstu jejich složitosti byl nejprve jednolitý program rozdělen na části, které se nazývají podprogramy nebo také procedury. Jak je patrno z obr.1 je při procedurálním programování interakce mezi daty a procedurami tím složitější čím je projekt programu komplexnější.

obr.2

 

Přístup různých procedur k stejným datům může způsobit chyby, které se ve složitých programech těžko vyhledávají a odstraňují. Na rozdíl od procedurálního programování, objektivně orientovaná metoda programování vytváří speciální celek  - objekt , který obsahuje data zapouzdřená do objektu procedurami které s daty pracují. (obr.2)

Stejně jako objekt v reálném světě tak objekt v programu má znaky, které ho charakterizují  a má vlastnosti, kterými disponuje. Na příklad objekt TLAČÍTK obsahuje data a kód , který generuje jeho zobrazení na obrazovce a kód , který pro­vede akci s daty. Stejně tak objekt reprezentující tabulku databáze obsahuje data a

všechny kódy procedur pro práci s tabulkou a s jednotlivými záznamy, metody jak s daty pracovat a cestu pro přístup k datům.

Při využití  těchto vlastností objektů může být objektově orientovaný program rozdělen na programové celky, které reprezentují jednotlivé objekty pro specifická data a činnosti. Jednotlivé objekty pak na sebe vzájemně působí vyvoláním určité události na kterou ostatní objekty reagují. ( Událostí je na př. STISKNUTÍ TLAČÍTKA). 

Pokud hovoříme o objektově orientovaném programování (OOP), je nutné si pod tímto pojmem představit nový způsob vytváření programu. Nejedná se o zcela nový způsob na úrovni jazyka , jedná se zejména o nový způsob logického přístupu ke stavbě programu. Programováním technologií OOP se snažíme o abstrakci daného problému a jeho logické rozčlenění. Přínos OOP je také ve větší strukturovanosti a modularitě vytvářeného programu. Program se stává přehlednější, což  je přínosem zejména při vytváření velkých programových celků a týmové práci. Tím , že program sestavujeme z objektů, dáváme ostatním možnost tyto objekty sdílet a nenutíme je zacházet při programování do zbytečných detailů.

obr.3

 

Uložení dat do celků s procedurami  obalení - encapsulation a modularita  přináší relativně jednoduché programové struktury Uložení dat do celků s procedurami  obalení - encapsulation a modularita  přináší relativně jednoduché programové struktury

Poznámka:

obalení - encapsulation  ... Datový objekt obsahuje množinu datových prvků a metod, které pracují s datovými prvky.Objekt obsahuje datoví struktury a jim příslušející řídící struktury, navenek však vystupuje jako jeden samostatný typ

OOP může být vytvořen jako síť objektů, které spolu navzájem spolupracují vysáláním zpráv o událostech

 

Dalším důležitým  přínosem OOP je inheritance - dědičnost

Poznámka:

inheritance - dědičnost ... Pojem dědičnosti si můžeme vysvětlit stejným způsobem jako v živé přírodě. Vlastnosti typu objekt se přenášejí ”dědí” z typu ”předka”  na nově vytvořený typ objektu  ”potomka” . Přenášejí se jak datové složky, tak jejich metody. Nově vytvořený objekt může získané vlastnosti rozšiřovat nebo modifikovat.

 

 

Polymorphism - polymorfie je další charakteristicko vlastností OOP.

Poznámka:

Polymorfismus znamená, že objekty které obdrží zprávu na ni odpovídají různým způsobem daným jejich vlastnosmi.

2.1.      Události

Operační systém Windows i všechny aplikace pod ním pracující  jsou řízeny pomocí událostí.Každý objekt ve Windows (okno, tlačítko, ikona, obrazovka, počírač) může generovat zprávy (messages), které způsobí vznik události. A naopak každý objekt se za přesně řízených okolností zúčastňuje přijímání zpráv a reaguje na vzniklé události.Jeden z objektů Windows má v daném okamžiku v systému specifické postavení: je zaměřený (focused) , to je , že právě jemu budou směrovány všechny zaměřené události. To jsou události vzniklé většinou ”nečekaně” bez přičinění systému (např. stisk klávesy, pohyb myši, atd.).  Tyto pak bývají prvotním impulsem pro vznik celého řetězce událostí. Analogicky existují ještě události ”očekávané” na  příklad   události následující po spuštění operačního systému (připojení se do počítačové sítě atd.). Pokud zaměřený objekt není schopen událost zpracovat může postoupit událost ke zpracování jiným objektům podle daného pořadí. Toto pořadí může stanovit tvůrce aplikace. Üdálostně řízený systém je velmi pružný a efektivní

 

3.      Popis vývojového prostředí

3.1.      Charakteristiky dodávaných edicí Visual Basicu.

Visual Basic je možno získat ve třech verzích, z nichž každá obsahuje specifický soubor vývojových nástrojů:

·      Visula Basic Learning  edition umožňuje programátorům snadno vytvářet výkonné aplikace pro MS Windows 95 a Windows NT. Tato edice obsahuje všechny ve Windows obsažené ovládací prvky (Control), plus tabulky, datové tabulky a prvky pro připojování databází. Edice je dodávána na CD-ROM. Na disku je dále uložen  multimediální program Learn VB Now , online Help, a Visual Basic Books Online.

·      Visula Basic Professional edition vybavuje profesionální programátory úplným souborem nástrojů pro vývoj profesionálních aplikací pro jiné uživatele. Tato edice obsahuje všechno co je obsaženo v Learning edition plus, řadu dalších  ovládacích prvků ActiveX obsahujících ovládací prvky pro Interet a program pro tvorbu výstupních sestav Crystal Report Writer.

·      Visula BasicEnterprise edition umožňuje týmům profesionálů vytvářet robustní distribuované aplikace. Obsahuje plně Professional edition, plus  Automation Manager, Component Manager, Database managment tools , Visual Source Safe - projektově orientovanou verzi kontrolního systému tvorby projektu, a mnoho dalšího.

3.2.      Nároky na instalovaný hardware a software.

Visual Basic 5.0 vyžaduje PC vybavené procesorem 80486 a vyššším. Pro instalaci je potřeba nejméně 50 megabytů diskové kapacity. Počítač musí pro individuální instalaci být vybaven CD - ROM mechanikou, VGA, 16MB RAM, myš.

Operační systém MS Windows 95 nebo Windows NT  3.51 nebo pozdější.

3.3.      Pomocné vývojové prostředky

Programovací balík Visual Basic obsahuje stovky příkazů, desítky objektů a knihoven. Práci s tímto náročným prostředím usnadňují následující pomocné prostředky:

·  Visual Basic Books Online, je program, který umožňuje získávat a tisknout podrobné informace z dokumentů uložených v přehledné databázi.

·  Online Help obsahuje rozsáhlé informace o jazyce i prostředí Visual Basicu včetně příkladů.

·  Visual Basic Online Links, obsahující adresy připojující zdroje informací o Visual Basicu v WWW.

3.4.      Spuštění Visual Basicu z Windows.

ad a.)

1.   Ťukněte  (Click) na tlačítko Start na dolní liště

2.   Vyhledejte skupinu Programy a pak skupinu Visual Basic 6.0

3.   Ťukněte  dvakrát (DoubleClick) dvakrát na ikonu Visual Basic 6.0

 

 

ad b.)

1.   Vyhledejte na příklad pomocí  Průzkumníka soubor VB5.exe a  ťukněte dvakrát na jeho ikonu.

 

3.5.      Integrované vývojové prostředí Visual Basicu (IDE - Integrated Development Environment )

 

Obr. 5.

Jak je patrno z obrázku Obr.5 sestává IDE následujících elementů:

·      Hlavního menu které zobrazuje příkazy umožňující práci s Visual Basicem. To obsahuje standardní příkazy jako File (Soubor), Edit (Úpravy), Viev (Zobrzit), Window (Okna), Help (Pomoc), a dále specifické jako Project, Format, Debug a další.

·      Kontextová menu zprostředkovávají zkrácenou cestu k často vyžadovaným akcím. Jejich obsah je závislý na kontextu a na častí prostředí na které ukazuje kurzor myši. Otevírají s ťuknutím na pravé tlačítko myši.

·      ástrojová lišta (Toolbar) zprostředkovává rychlé provádění příkazů v IDE . Ťuknutím na ikonu v liště se vykoná akce která je tlačítkem reprezentována. Obsah nástrojů v nasrojové liště je možno individuálně upravovat.

Poznámka : Visual Basic používá pro název objektu, který bude ve vytvořené aplikaci vytvářet jedno okno ve kterém aplikace poběží pojem Form do  češtiny se tnto pojem překládá různě Formulář nebo Okno. Protože prostředí Visual Basicu není lokalizováno do češtiny budu v dalším textu používat anglický pojem Form.

·      Okno násrtojů (Toolbox)  nabízí  soubor nástrojů, které můžete využít v době návrhu pro umístění ovládacích prvků do vytvářené formy . Okno nástrojů je možno pro konkrétní projekt doplňovat o další nástroje.

·      Okno projektového průzkumníka (Project Explorer Window) Obsahuje seznam forem a modulů obsažených v právě otevřeném projektu.

·      Okno vlastností (Properties Window) Obsahuje seznam vlastností nastavených pro vybrané formy a ovládací prvky. Vlastnosti jsou na příklad velikost objektu, barva, název atd,

·      Prohlížeč objektů (Object Browser) Obsahuje seznam objektů které jsou v daném okamžiku k dispozici pro tvorbu projektu. (Obr.6.)

·      Formu pro vývoj Forem (Form Designer ) Poskytuje okno pro vývoj uživatelského prostředí vyvíjené aplikace. Každá vytvářená forma ve vaší aplikaci má svoji vlastní formu pro vývoj.

Okno pro tvorbu kódu (Code Editor Window) poskytuje textový editor pro psaní kódu aplikací. (Obr. 7 )

Okno pro rozvržení obrazovky(Form Layout Window) zobrazuje pozici navrhované Formy vaší aplikace na obrazovce monitoru. Je reprezentována malou obrazovkou . (Obr. 8.)

Okna Visual Basicu

 

Programátor využívá při práci  s Visual Basicem více oken. V jeden okamžik je aktivní pouze jedno okno. Aktivní okno na sebe přebírá a zpracovává všechny události jduocí od klávesnice a myši. Výběr aktivního okna lze provést kliknutím na vybrané okno.

Hlavní panel

 

 

 

 

obr.7

Hlavní panel Visual Basicu (obr.7)je v systému vždy k dispozici, může však být překryt

 


běžící aplikací. Hlavní panel je z hlediska Windows normální okno, proto také obsahuje ovládací prvky používané v jinách oknech Windows. Jsou to především ikona ukládání okna na ovládací lištu, ikona na přepínání celoobrazovkového režimu a ikona na ukončení aplikace.

           Okno formy

Okno formy je vždy přístupné v režimu návrh (design).  Po spuštění Visual Basicu se automaticky otevře Project1 a na obrazovce se objeví formulář Form1. Pokud není ve vlastnostech objektu Visual Basicu nastaven jiný pracovní adresář otevře se soubor Project1 umístěný v tomto adresáři. V okně formy je možno umístit různé objekty. Příklady  některých objektů jsou na obr.8

obr.8.

 

 

 

 

Objekty do formy se vkládají pomocí okna nástrojů Visual Basicu které se nazývá Toolbox.. Toto okno je zobrazeno na obr .9. Pokud se po spuštění Visual Basicu toto okno neobjeví na obrazovce je možno přikázat jeho zobrazení v položce VIew závěsního menu. Každému objektu Visual Basicu je možno nastavit jeho vlastnosti pomocí okna vlastností Properties (obr.10.).

 

     

         obr.9                                                                                       obr.10

 

Vlastnosti je možno nastavovat přímo při tvorbě programu v uvedeném okně vlastností, nebo změnou vlastností v průběhu chodu programu na základě některé z událostí. Odstranění prvků z formy je možné označením prvku kliknutím myši a stisknutím tlačítka  Delete na klávesnici.

           Okno zdrojových textů

V režimu design  po stisku tlačítka View Code  v okně Project (obr.11) se otevře okno zdrojového kódu aktivního objektu (formy, tlačítka, textového okna atd.) . Okno zdrojového textu (obr. 12.) má tři hlavní části:

obr.11

1.    .Combo box se seznamem všech objektů formy. Při přidání objektu z Toolboxu do formy automaticky přibude položka do seznamu tohoto boxu. Pokud je Forma  prázdná obsahuje Combo box  dvě položky Form a general . Položka Form zahrnuje obslužné rutiny událostí týkajících se aktuální formy, položka general zahrnuje texty týkající se všech udalostí a popisů formy.(Obr.12)

2.    Editační plochu - v této části okna se zobrazují zdrojové texty podprogramů, rutin událostí a definic. Stejně jako u textových editorů je možno editační plochu rozdělit na dvě části pomocí myši.(Rozdělovací tlačítko Obr. 13)

 

Combo box se seznamem událostí

 

Rozdělovací tlačítko

 

Combo box se seznamem objektů

 

Editační plocha

 

                                           obr.12

 

3.    Combo box  se seznamem událostí spojených s daným objektem. Pro v combu objektů vybraný objekt se zde nabízí seznam všech událostí týkajících se vybraného objektu. Pro položku general se  v seznamu nabízejí názvy obecných podprogramů a deklarace položka declaration.

Okno Debug

Umožňuje interaktivní odlaďování programů. Okno představuje obrazovku ve které je možno interaktivně zkoušet jednotlivé příkazy jazyka. Pokud chceme zkusit delší sekvenci je možno jednotlivé příkazy oddělit dvojtečkou jak je patrno na obr.13. Příkazy se vykonají po odeslání řádku klávesou Enter.

obr.13

Okno Debug je  k dispozici v režimu  break  Do režimu break se můžeme dostat při chybě odlaďovaného programu nebo úmyslným přerušením programu z menu nebo pravítka nástrojů.

Okno projektu

obr.14

Okno projektu (obr. 12 a obr.14) je k dispozici v režimu návrh (design) Projekt je uložen v souboru s příponou VBP. Název okna projektu je shodný s názvem souboru. Okno obsahuje  jak je patrno z obrázku 14 seznam všech formulářů, modulů a souborů připojených k aplikaci. Jak je patrno z obrázku v každém řádku seznamu jsou uvedeny údaje o souboru případě modulu.:

·      ikona prvku - formulář, modul

·      název souboru s příponou FRM, BAS, OCX, CLS,VBX, RES

·      Jméno formy

Na aktuální vybraný řádek pak lze aplikovat některé z tlačítek umístěných v okně projektu nebo v hlavním menu Visual Basicu obr. 7

Tlačítko View Code otevře okno se zdrojovým textem formy nebo modulu definice třídy nebo basickového modulu. Tlačítko View Form  je možno použít pouze pro otevření formy. Sejného účinku je možno dosáhnout pomocí myši dvojím kliknutém na patřično ikonu formy. Při dvojím kliknutí na modul se otevře zdrojový text v příslušném okně.

obr.15

Okno vlastností (Propertis)

Toto okno je možno otevřít v případě, že je otevřena některá forma projektu. Pokud není okno otevřeno jeho možno otevřít z hlavního menu  z položky View nebo klávesou F4 nebo ukízáním myši na formu a stisknutím pravého tlačítka  a po objevení menu (obr.15) klepnutím na položku Propertis.  Poslední uvedený způsob je nejlepší a dá se použit pro nastavování vlastností libovolného objektu ve Windows 95.. Typický tvar okna Propertis  je na obrázku 10. Okno má dvě čísti :

1.    Seznam všech dostupných vlastností vybraného objektu. Vlastnosti lze vybírat myší, nebo pomocí klávesnice.

Vybraná položka se seznamu vlastností se stává polem ve kterém je možno vlastnosti přepsáním nebo výběrem z nabízených měnit.

2.    Combo box  se seznamem všech řídících prvků umístěných ve formuláři. Vybrání požadovaného prvku v Combo boxu a kliknutím myši na vybranou položku je možno přepínat okna vlastností jednotlivých řídících prvků aktivního formy.

Okno nástrojů (Toolbox)

Okno Toolbox je přístupné pouze v režimu design . Objevi se po spuštění Visual Basicu a jeho

Rám obrázku

 

Vstupní pole

 

Dialogové tlačítko

Přepínač -volba

 

Seznam

 

Svislý posuvník

 

Disk

 

Soubor

 

Čára

 

Data - připojení

 

OLE objekt

 

DB seznam

 

 

Kurzor

 

Pevný text

 

Rám

 

Spínač

 

Combo box

 

Vodorovný posuvník

 

Časovač

 

Adresář

 

Tvar

 

Obraz

 

Objekt OLE

 

DBCombo box

Mřížka

 

kurzor

 

            obr.16

 možno ho vyvolat z hlavního menu z položky View  , Toolbox jak je patrno z obrázku 16. Okno Toolbox obsahuje ikony všech v otevřeném projektu dosažitelných ovládacích prvků. Na obrázku 16 jsou popsány významy jednotlivých ikon. Použití jednotlivých ovládacích prvků bude popsáno v další časti publikace. Výběr určitého ovládacího prvku se provádí  aktivací okna nástrojů a poklepáním na určitou ikonu, nebo postupným stiskem klávesy TAB . Aktivovaná ikona změní barvu, a tím je vše připraveno pro instalaci daného ovládacího prvku do formy. (obr.8.) Instalace ovládacího prvku se provede dvojím stisknutím levého tlačítka  myši na vybranou ikonu.

Režimy činnosti Visual Basicu

Visual Basic pracuje jak je patrno z obrázků 17,18 a 19 ve třech různých režimech. Systém práce je možno řídit u hlavního menu v položce Run nebo ikonami z pravítka nástrojů.

1.    Režim design

Po spuštění programu se nachází systém v režimu design, ten se využívá pro vytváření a úpravu aplikací. V tomto režimu lze využívat všechny vlastnosti vývojového prostředí jazyka pro torbu projektů, forem a modulů.

obr.17.

Start

 

 

 

 

 

 

2.    Režim Run

Po vyvolání příkazu Start z menu Run (také klávesa F5), nebo klepnutím na ikonu Start pravítka nástrojů je  možno spustit zkušební běh aplikace, stejně jako by se jednalo o běh vytvořené aplikace. Pokud je v aplikaci chyba běh programu se zastaví. Tomu je možno předejít použitím příkazu Start With Full Compile z menu nebo stiskem kombinace kláves Ctrl +F5.zkušební běh aplikace, stejně jako by se jednalo o běh vytvořené aplikace.

End

 

 

 

obr.18.  

 

Break

 
re

 

 

3.    Režim break

Tento režim může být aktivován dvěma způsoby:

a)   úmyslně stiskem kláves Ctrl +Break, nebo z menu položkou Break,  nebo kliknutím na tlačítko Break z pravítka nástrojů. Jak je patrno z obrázku 19 v režimu Break se aktivuje okno Debug , (obr.13) pomocí kterého lze pak sledovat stav aplikace například vypisovat obsahy proměnných.

b)   vlivem systému např. Po chybě při výpočtu nebo účinkem příkazu Stop , který může programátor úmyslně zapsat do kódu, aby v určitém místě chod aplikace přerušil k ladícím účelům. V tom případě lze okno Debug aktivovat klávesami Ctrl + B nebo výběrem z hlavního menu z položky View . Z příkazu break se lze vrátit do režimu Run stiskem klávesy F5 nebo z menu příkazem Continue ne stiskem tlačítka Continue z pravítka nástrojů. Do režimu design se přechází pomocí tlačítka End nebo položky End z hlavního menu

 

 

 

 

 

 

 

obr. 19

 

Příprava nového projektu

Při přípravě nového projektu ve Visual Basicu je si třeba uvědomit, že jde o zcela jiný přístup k přípravě programu než při procedurálním programování. Programátor připravující klasickou procedurální aplikaci se snaží nejprve připravit dokonalý algoritmus problému, který má program řešit. Snaží se postupným dělením problému na podproblémy vytvořit takové nezávislé bloky algoritmů pro které by bylo možno použít procedury z uživatelských knihoven po případě pro ty podproblémy pro, které neexistují hotové programy vytvoří nové algoritmy. Teprve pak píše pro navržené algoritmy zdrojový text procedur.

Visual Basic je vývojový systém pro přípravu objektově orientovaných aplikací řízených událostmi. Většinu událostí, které je nucena aplikace rešit vyvolává uživatel při práci s aplikací. Návrhář proto začíná soupisem událostí které bude aplikace rešit a pak návrhem  uživatelského rozhraní (interface ) aplikace, které uživateli umožní události vyvolávat. Teprve po ukončení této části práce píše podprogramy pro navržené události a objekty, přitom maximálně využívá knihoven DLL a objektů OLE.

Návrh uživatelského rozhraní (User Interface)

Ještě dnes mnoho programátorů považuje návrh uživatelského rozhraní za pouze kosmetickou záležitost. To plyne s výše popsaného procedurálního způsobu programování. Pro návrhaře pracujícího s Visual Basicem a vůbec při tvorbě programů pro moderní operační systémy jako je Windows 95 nebo Windows NT je naopak návrh uživatelského rozhraní velmi důležitá část práce na projektu. S dobrým uživatelským rozhraním bude váš program uživatelsky přívětivý a bude práce s ním bude efektivní. Proto je nutno po celou dobu návrhu postupovat tak aby:

jste stále mysleli na uživatele;

jste si uvědomili, kdy máte postupovat podle tradice a kdy inovovat;

jste pro aplikaci  využívali standardní formy menu a dialogových boxů;

jste  vybírali správné kontroly pro řízení správných událostí.

Úspěšný návrhář rozhraní se musí naučit vidět program z pozice uživatele, což představuje poměrně velmi rozdílný pohled od toho, na který je na základě svých vědomostí zvyklý. Může být obtížné vžít se do postavení naivního uživatele anticipovat jeho požadavky a potenciální chybné postupy, kterých se může dopustit. Tento pohled je zvláště důležitý při vytváření výukových programů pro děti a studenty. Na rozdíl od dřívějších způsobů programování, kdy se snažil programátor  přinutit uživatele aby přijal logiku počítače se musí dnešní programátor snažit aby počítač přijal logiku práce uživatele. Příkladem může být  uživatelské rozhraní Windows 95, které se snaží navodit v uživateli dojem , že obrazovka je vlastně pracovní plocha stolu. Objekty na této pracovní ploše jsou representovány obrázky (ikonami) připomínajícími reálné předměty (na př. koš na odpadky, telefon atd.) Objekty je možno na ploše přesouvat uspořádávat.

Tuto filosofii je možno přenést do nového projektu, ve kterém je dokonce možno řadů existujících ikon, a principů přímo použít.Při návrhu projektu je třeba mít neustále na mysli, že čím více obvyklých objektů a kontrol uživatel najde v nové aplikacím snadněji práci s ním zvládne. Tato konzervativnost nesmí ale bránit projektantovi v návrhu smysluplných inovací.

Základy programování ve Visual Basicu

Struktura aplikace

Jak již bylo řečeno aplikace může obsahovat moduly forem jsou to soubory s příponou .FRM, moduly kódů (.BAS ) a moduly kontrol  (.OCX). Modul forma  obsahuje vizuální elementy formy včetně kontol a kódů ve Visual Basicu, které jsou s formou sdruženy. Aplikace musí obsahovat nejméně jeden kódový modul nebo formu. Bez nastavování (default) nový projekt obsahu jeden formu, ale je možno postupně při vytváření projektu další formy i moduly přidávat.

Jak pracuje událostí řízená aplikace

Událost  je  akce, kterou rozezná forma nebo kontrola. Událostí řízená aplikace rozpozná událost a na základě ní spustí program napsaný v jazyce Visual Basic (VB). Každá forma a kontrola ve VB má předefinovánu množinu událostí. Když se některá z těchto událostí vyskytne , VB vyvolá kód který je k události přiřazen.

Tedy objekty ve VB automaticky rozeznávají předdefinované události z uvedené množiny, vy pak musíte při projektování určit kdy a jak mají vámi použité objekty na událost reagovat. Když  si tedy přejete, aby určitý objekt reagoval na určitou událost (na příklad na stisknutí klávesy na klávesnici) musíte pro tuto událost napsat kód ve VB který se nazývá event procedure   - procedura události.

Mnoho objektů rozeznává stejnou událost , tedy řada objektů může vykonávat různé procedury událostí pro stejnou událost. Na příklad Click Event -(klepnutí)  nastane když uživatel krátce stiskne tlačítko myši  Pokud kurzor myši ukazuje na formu pak se provede událost Form_Clic  pokud ukazuje kurzor na př. na objekt Tlačítko  (obr.8.) provede se událost přiřazená k tomuto tlačítku.

Při spuštění typické událostmi řízené  aplikace proběhnou následující události:

1.    Po startu aplikace automaticky načte a zobrazí Satrovací formu (Startup Form)

2.    Forma a kontroly očekávají událost. Událost může být vyvolána uživatlem aplikace (na příklad pohyb myši), operačním systémem (na příklad časovačem Timer), nebo nepřímo kódem aplikace (např. událostí Form_Load() )

3.    Událost se vykoná

4.    Aplikace čeká na další událost.

Kód pro spuštění aplikace

Výchozí (default) nastavení stanoví jako Sartup Form první v aplikaci vytvářenou formu. Když se aplikace spustí tato forma se zobrazí na monitoru a vykoná se událost , která je v proceduře Form_Load(). Pokud má být spuštěna jiná forma je nutno provést její nastavení menu Option obr.20 , které se volá z položky Tools hlavního menu obr. 7

Ukončení aplikace

Událostmi řízená aplikace je ukončena, když její formy jsou zavřeny a nevykonává se žádný kód. Je nutno si uvědomit , že je rozdíl mezi zavřenou formu nebo ukrytou (neviditelnou). Jestli je tato skrytá forma poslední pak aplikace je zdánlivě ukončena, ale ve skutečnosti pokračuje ve své činnosti, až do té doby až je i poslední forma uzavřena. Uzavřít takovou formu může být obtížné, protože neexistuje žádný přístup k jejímu ovládání.

Existuje cesta jak řešit tento problém a jak ukončit program  je jí příkaz End . Tento příkaz zastaví všechny procesy spojené s během aplikace, zavře všechny otevřené soubory, a zavře všechny otevřené formy.

 

obr.20

 

Prvky jazyka

Prvky jazyka Visual Basic jsou :

1.    Symboly Visual Basic používá  písmena, číslice a některé speciální symboly např. pro  označení operátorů, typových přípon apod.

2.    Literály Jsou to skupiny symbolů. Mohou být číselné nebo řetězcové a reprezentují konkrétní číselnou hodnotu nebo identifikátor.

3.    ¨Rezervovaná slova, též klíčová slova. Určité symboly nebo skupiny symbolů mají ve VB jednoznačný význam a nelze je užít k jinému účelu, než ke kterému byly definovány. Jedná se obecně o názvy operátorů, příkazů, funkcí, standardních metod atd.

4.    Datové typy resp. jejich identifikátory. VB rozeznává devět základních datových typů  a typ Variant. Kromě nich může programátor definovat vlastní datové typy.

5.    Objektové typy, respektive jejich identifikátory. VB pracuje s objekty, pro které zavádí objektové typy, pomocí nichž pak může programátor deklarovat konkrétní instance případně pole instancí. Ve VB lze používat

·      obecné objektové typy Object, MDIForm, Form, Control;

·      objektové typy odvozené od těchto obecných typů dělěním;

·      objektové typy definované pomocí objeku Class Module v modulech definice třídy  (moduly CLS)

·      objektové typy definované v OCX resp. VBX modulech.

I když pro deklaraci instancí objektových  typů se používá stejných mechanizmů jako pro deklarace datových proměnných (příkazy Dim, Global, Static), manipulace s instancemi se liší od manipulace s proměnnými.

6.    Konstanty a proměnné, případně jejich identifikátory. Jsou to nejednodušší instance daného datového nebo objektového typu. U každé konstanty i proměnné musí být v každém okamžiku jasné jakého je datového nebo objektového typu, a to buď explicitně (deklarací nebo uvedením typové přípony), nebo implicitně pomocí některého z příkazů Def Type.

7.    Procedury a funkce, nebo jejich identifikátory. Jsou to logicky sdružené sekvence příkazů jazyka VB, nebo volání metod objektů , případně procedur. Celá aplikace je rozčleněna  do procedur a funkcí  (souhrnně podprogramů). Kromě nich se mohou v aplikaci vyskytovat pouze deklarační moduly.

8.    Výrazy, jsou to kombinace funkcí, operátorů proměnných a konstant dávající (po vyhodnocení výrazu ) hodnotu  numerického nebo řetězcového typu. Výrazy jsou používány většinou jako skutečné parametry příkazů , funkcé nebo metod.

Moduly

Jednoduché aplikace mohou obsahovat pouze jeden formulář (Form) všechny kódy aplikace jsou pak obsaženy v jeho modulu. Je-li vytvářená aplikace velká a více složitá, pak se připojí další formy. Pokud je nutno některé kódy používat ve více formulářích, vytváří se speciální modul procedur, který obsahuje společné kódy a zabrání tomu aby stejné procedury musely být vytvořeny v každém modulu. Postupem času je tak možno si vytvořit vlastní knihovny procedur.

Každý modul kódů nebo Forem (formulářů) musí obsahovat:

·      Deklarace (Declaration) do této části modulu se ukládají konstanty, deklarace typů, deklarace proměnných a DLL procedur, které jsou platné na  úrovni modulu. Do této části modulu nelze vložit spustitelné kódy.

·      Podprogramy událostí (Event procedues)  to jsou podprogramy Sub  které jsou spouštěny, v závislosti na událostech vyvolaných uživatelem nebo systémem. Procedury  událostí jsou platné pouze na úrovni modulu.

·      Podprogramy (General procedures)  to jsou podprogramy, které nejsou přímo spojeny s událostmi. General procedures v modulu forem mají lokalní platnost pouze v daném modulu; nemohou být volány v ostatních modulech aplikace. Všechny podprogramy (procedury) v kódovém  modulu (code mdule) jsou podprogramy (General procedures) které mohou být volány z libovolného kódového nebo modulu nebo formy v aplikaci. Tyto podprogramy mohou být označeny jako Sub procedury (procedury nevrací hodnotu) nebo Function procedury (funkce, které vracejí hodnotu).

Podprogramy (procedury) událostí (Event procedues)

Jestliže nějaký objekt aplikace rozpozná že se stala nějaká událost, automaticky vyvolá podprogram (proceduru) události se jménem, které koresponduje s událostí. Protože jméno procedury navozuje asociaci mezi objektem a kódem,  procedury událostí jsou jména volena tak aby bylo zřejmé o jakou událost se jedná v závislosti na tom ke kterému objektu jsou přiřazeny.

Na příklad procedura události pro ovládací prvky (control)  kombinuje aktuální jméno ovládacího prvku  (které je uvedeno v položce Name v tabulce vlastností (propertis)uvedeného objektu) podtržítko ”_”  a jméno události. Na příklad , jesliže si přejete, aby Command1vyvolalo proceduru jest-li na něho ukážeme myší a ťukneme na pravé tlačítko, pak použijete jméno procedury které má následující tvar Sub Command1_Click. Událostní procedura okna formy kombinuje slovo Form s jménem události na příklad Sub Form_Clic.

 

Syntax událostních procedur

Syntax pro ovládací prvek (control event)

Syntax pro formulář

Sub JménoOvládacíhoprvku_JménoUdálosti( )

    instrukce   programu  'blok příkazů

End Sub

Sub Form_ JménoUdálosti( )

 instrukce   program  ' blok příkazů

End Sub

 

Slova Sub a End Sub označují začátek a konec procedur.

Poznámka : Je důležité si uvědomit, že je nutno, pokud si jména ovládacích prvků přejeme změnit, změnit jejich jména před tím než začneme psát kódy procedur. Visual Basic totiž jméno kontroly automaticky dosazuje do jména událostní procedury a v případě že jméno kontroly změníte až po napsání kódů musíte zpětně přepsat jména všech procedur.

Podprogramy (General procedures)

Událostní procedury mohou vyvolávat jiné procedury, které se ve VB nazývají General procedures. Tyto procedury se začnou vykonávat v okamžiku kdy jsou explicitně zavolány některou částí aplikace.

Proč se tvoří tyto procedury?  Důvodem je skutečnost, že různé událostní procedury mohou potřebovat část stejného kódu (stejnou proceduru). Správná strategie programování říká, že v takovém případě není správné zápis kódu několikrát opakovat, ale je lepší vytvořit tuto část podprogramu jako samostatnou proceduru. Po vytvoření nové General procedure otevři okno pro psaní kódu ( Code Window) Pak zavolej z hlavního menu VB položku Insert a v ní položku Procedure (obr.21  ) po odklepnutí položky se objeví okno Insert Procedure pomocí kterého se určí jméno a typ procedury a typ proměnných. Jiný možný postup je ten, že vytvoříte novou hlavičku procedury v okně Code view a dodržíte správný syntax.jak je uvedeno výše. Po napsání  kódu ukončíte proceduru End Sub, VB automaticky tuto proceduru zaregistruje a její volání pro editaci je možné pomocí combo boxu ve formuláři Code window příkazem.

 

obr.21

 

 

 

 

Sub procedury nevracejí hodnotu, takže volání Sub procedury představuje příkaz programu.  Function procedury jsou částí výrazu .

 

Syntax pro Sub procedury je následující:

Sub JménoProcedury (seznam parametrů)

      Instrukce programu

End Sub

Seznam parametrů je seznam jmen oddělených čárkou pokud jejich více než jeden. Každý parametr vypadá jako deklarace proměnné a vystupuje jako proměnná v proceduře. Syntax každého parametru je:

[By Val] jméno_proměnné [( )] [ As type]

 

Pokud neuvedete typ  VB automaticky přiřadí proměnné typ Variant. Tento typ je velmi flexibilní a bude popsán v další části textu, stejně jako typy Integer, String, Long, Single, Double,Currency, uživatelsky definovaný typ a objektový typ.

obr.22

Pokaždé když je procedura zavolána instrukce programu mezi Sub a End Sub se vykonají. VB provede substituci každého přiřazeni korespondujícímu parametru ze seznamu. Pokud VB volá proceduru události dosadí hodnotu každého parametru, (pokud událostní procedura nějaké má). Pokud je volána general procedure musí programátor zajistit, aby se provedlo dosazení hodnot parametrů. Na příklad :

 

 

 

 

 

 

Sub Pípnuti (Počet)

Dim I

    For I = 1 to Počet

         Beep

   Next I

End Sub

Tato procedura pro parametr Počet =3 by se pak volala následujícím způsobem :

Pipnuti 3 nebo Call Pipnuti(3)

 

Syntax pro Function je následující:

Function JménoFunkce (seznam parametrů) As type

instrukce podprogramu

End Function

Práce s parametry je stejná jako bylo výše popsáno v Sub procedurách.  Na rozdíl od volání procedury musíte vždy při volání Function uvést hodnoty parametrů do závorky ( klíčové slovo Call není možno pro volání Function použít). Každá Function má typ, který určuje typ hodnoty Function procedure při návratu. Pokud nepoužijete pro určení typu klausuli As   pak hodnota Function procedure je typu Variant. V těle funkce musí být jménu funkce přiřazena hodnota, která má být výsledkem volané funkce hodnota musí být deklarovaného typu. Na př.:

Function Prepona (A,B) As Real

Prepona  = Sqr( A^2 + B^2)

End Function

Volání této procedury má pak následující tvar :

C = Prepona(k,l)

Lokální a globální platnost procedur  (Public and Private Procedures) procedury (Sub, Function) umístěné v modulu formy jsou lokální (private) v tomto formuláři, to zanmená, že nemohou být volány mimo formulář ve kterém se nacházejí. Procedury (Sub, Function) umístěné v modulu kódů (Code modul) jsou globální (public) což znamená, že mohou být volány z libovolního místa aplikace. Poněvadž procedury ve formulářích jsou private mohou se v aplikaci v různých formulářích vyskytovat procedury stejného jména. Na příklad každý formulář má  proceduru Form_Load( ). Naproti tomu public procedury kódových modulů musí mít unikátní jméno. Pokud vytvoříte v určitém formuláři proceduru se stejným jménem jako je jméno procedury v kódovém modulu,  pak VB postupuje následujícím způsobem. Nejprve hledá proceduru volaného jména v modulu formy ze kterého je procedura volána, nenajde-li ji hledá proceduru volaného jména v kódovém modulu.

Lokální procedury v kódovém modulu  Někdy je nutné vytvořit lokální proceduru také v kódovém modulu. Na příklad máte nějakou proceduru související s nápovědou, která nemá být volána z jiného modulu, pak vytvoříte hlavičku procedury pomocí klíčového slova Private (např.  Private Sub   Pomoc ( ) ) Slovo Private   je možno použít i ve formuláři ale není to nutné neboť ve formuláři jsou všechny procedury lokální.

Zdrojové texty procedur (Code in Procedures)

Komentáře při vytváření aplikace ve VB je vhodné doplnit zdrojový text podprogramu komentářem. To umožňuje lepší přehlednost programu i po delší době po jejím vytvoření. Komentáře se označují  apostrofem ‘ . Apostrofem označenou část programu VB ignoruje při interpretaci ignoruje. Na příklad:

Sub Zapis (JmenoSouboru) ‘Procedůra pro zápis do spuboru

Instrukce podprogramu (Steatements) .

Instrukce programu VB představuje normálně jeden řádek podprogramu a nemusí být zakončena žádným oddělovacím znaménkem jako na příklad v Pascalu. Pokud si z nějakého důvodu přejete umístit více příkazů na jeden řádek pak je nutno tyto příkazy oddělit : (dvojtečkou), např.:

Text1.text =”Praha” : Print Text1.text: End

Konvence pro vytváření literálů pro pojmenování podprogramů, proměnných, konstant atd. Jména která se vytvářejí musí splovat následující pravidla:

·      musí začínat velkým písmenem;

·      Musí obsahovat pouze písmena, čísla a podtřžítko. Interpunkční znaménka a mezery nejsou dovoleny;

·      Nesmí být delší než 40 znaků;

·      Slova která vytvoříte nesmí bát stejná jako rezervovaná slova.

Seznam rezervovaných slov je obsažen v Helpu jazyka VB

Nastavení a změna vlastností objektů

Jedna z nejčastěji se vyskytujících instrukcí VB je přiřazovací příkaz  = který přiřazuje proměnné její hodnotu nebo  vytváří odkaz  na vlastnosti při kopírování dat z jednoho míst na jiné:

destination = source  cíl = zdroj (odkaz) kopíruj informaci ze zdroje do cíle

cil (destination) musí být proměnná nebo odkaz na vlastnost. zdroj (source) musí být platný výraz VB a může vyvolat výpočet.

Přiřazovací příkaz provádí ve VB tři akce:

·      Nastavuje hodnotu vlastnosti

·      Mění hodnotu vlastnosti

·      Dosazuje nebo mění data v proměnné

Nastavení hodnoty vlastnosti objektu se provádí před spuštěním aplikace v módu design pomoci tabulky vlastnosti (obr. 10). Nebo za běhu aplikace pomocí přiřazovacího příkazu na jehož levé straně je object.property na příklad:

Text1.text = ”Pozor” odkaz kopíruje data do  objektu Text1

Text1.BackColor = 255 ‘odkaz zpùsobí zmìnu vlastnosti pozadí zèervená

Změna vlastností v jiných formulářích pokud má aplikace více formulářů pak se můžete odkazovat na vlastnosti v jiných formulářů nebo na vlastnosti ovládacích prvků v jiných formulářích . Syntax příkazu  který je umístěn v kódovém modulu na příklad formy Form1 a má měnit vlastnosti ve formuláři Form2 nebo jeho ovládacích prvcích je takový, že před objektem daného formy  musíme uvést o který formulář se jedná na příklad:

Form2.Caption = ”Kalkulačka” změní jméno formy Form2 z libovolného modulu

Form2.BackColor = 0                změní barvu formy Form2 z libovolného modulu

Form2.Text1.Text = 689 kopíruje do objektu Text1 formy Form2 hodnotu 689

Poznámka: Podrobný popis vlastností jednotlivých objektů i  s příklady odkazů na vlastnosti je obsažen v Helpu programovacího jazyka VB v kapitole Property Summary (viz obr.23 a obr.24).

 

obr24

obr.23

 

obr.24

 

Proměnné

Visual Basic stejně jako jiné programovací jazyky používá proměnné na ukládání hodnot.

Proměnná musí mít jméno (to je slovo , které odkazuje na hodnotu kterou proměnná obsahuje) a datový typ ( který určuje typ dat která se dají do proměnné ukládat).

 

Deklarace proměnných VB nevyžaduje explicitně deklaraci nebo vytváření proměnných. Když použijete jméno, které se neshoduje s žádnou jinou proměnnou, VB vytvoří novou proměnnou s tímto jménem. Přesto je správné a programátorská praxe to doporučuje, deklarovat všechny proměnné použité v aplikaci. (Ve většině programovacích jazyků je to nutné). Pokud nastavíte v Environment  v okně Option  Requiere Variable Option na zapnuto (obr.24 ) pak je deklarace proměnných povinná. V modulech je pak v deklaracích (General) uveden příkaz Option Explicit.

Deklarace proměnných se provádí pomocí klíčového slova Dim :

Dim Jméno_proměnné

Jména proměnných se vytvářejí podle stejných pravidel, jako ostatní jména ve VB. Na př.:

Dim Vysledek

Datové typy

Datový typ je základní charakteristikou datových prvků VB. Determinuje vlastnosti datového prvku uchovávat určitý druh dat  Přehledně jsou vlastnosti jednotlivých datových typů uvedeny v tab.1. Datový typ (proměnné, konstanty, funkce..) určuje jednak způsob datové reprezentace prvku v paměti, jednak způsob interpretace této hodnoty. V deklaraci je možno datový typ definovat pomocí klíčového slova označujícího daný typ nebo pomocí přípony (sufixu). Klíčové slovo i sufix jsou u základních typů uvedeny v tabulce tab.1.

Typ proměnné pak deklarujeme příkazem

Dim Jmeno_promenne As typ

Na přáklad:   Dim  Prepona As Single

Rozsah a doba života proměnných. Proměnné deklarované uvnitř procedury existují jen po dobu pokud je procedura prováděna (jsou dynamické), jakmile skončí hodnota proměnné je ztracena. Kromě toho platí, že tyto proměnné jsou lokální. to znamená, že se nemůžete odvolávat na proměnné v jiných procedurách. To umožňuje aby v různých procedurách byly proměnné stejného jména.

 

 

 

 

 

 

Rozsah proměnné

Deklarace

Lokální

Dim, Static, nebo ReDim (uvnitř procedury)

V modul

Dim (v deklarační sekci formy nebo kódového modulu)

V celé aplikaci

Public, nebo Global (v deklarační sekci modulu)

 

tab.2.

V tabulce dvě jsou uvedeny rozsahy platnosti proměnných v závislosti na použitém klíčovém slově a místě deklarace proměnné. Jak je patrno  dočasné lokální proměnné se deklarují  pomocí klíčového slova Dim, jejich doba životnosti je dána délkou provádění procedury. Pokud je nutno uchovat hodnotu lokální proměnné do dalšího spuštění dané procedury (např čítač cyklů) , pak musíme tuto prměnnou definovat pomocí kláčového slova Static. Procedura uvedená jako příklad ukazuje použití deklarace statické proměnné  jako paměti v funkci pro provádění celkového součtu.

Function Celkovy_soucet (Mezisoucet As Curency) As Curency

Static Pamet

Pamet = Pamet + Mezisoucet 

Celkovy_soucet = Pamet

End Function

Pokud by Pamet byla deklarována jako Dim  nikoliv Static pak by tato funkce pro vytvoření celkového součtu byla nepoužitelná, neboť proměnná Pamet by se po každém použití funkce vymazala.

Deklarace všech lokálních proměnných jako statických je možná tak, že klíčové slovo Static předřadíme před proceduru například  hlavička předchozí procedury  by se změnila na:

          Static Function Celkovy_soucet (Mezisoucet As Curency) As Curency

To způsobí, že všechny proměnné v proceduře bez ohledu na to byly - li deklarovány jako Dim, Static nebo implicitně budou statickými proměnnými.

Základní typy proměnných

Typ Variant pokud u deklarace proměnné neurčíme typ nebo je-li deklarace proměnné implicitní pak je proměnné automaticky přiřazen typ Variant Do proměnné typu Variant je možno ukládat nejrůznější druhy dat, jako textové boxy,  čísla textové řetězce, datum, ćas. Pokud nehodláte provádět konverzi mezi jednotlivými typy při dosazování do proměnné typu Variant pak VB provede nezbytnou konverzi automaticky. Na příklad:

Dim Nejaka_Hodnota                                             VB dosadi typ Variant

Nejaka_Hodnota  =  17”                                                    ‘Hodnota byla dosazena jako textový řetězec o dvou znacích

Nejaka_Hodnota = Nejaka_Hodnota - 15          Hodnota proměnné je celé číslo 2

Nejaka_Hodnota = Nejaka_Hodnota + U2         ‘ Hodnota proměnné je řetězec o čtyřech   znacích  ”17U22”

Při použití typu Variant mohou nastat potíže pokud použijete na příklad operátor + , neboť tento operátor je použitelný jak pro textové řetězce tak pro numerické operace. Při jeho použití se provede operace závislá na obsahu proměnných. Tento problém lze obejít použitím operátoru & pro øetězcové operace.

Proměnná typu Variant je ukládána co nejúspornějším způsobem v paměti ale její interní reprezentace zachovává typ který ji byl přiřazen při jejím naplnění. Bez problémů však tento typ v průběhu činnosti programu mění dle potřeby. Pokud si přejete zjistit, jaký typ má interně hodnota proměnné v daném okamžiku, můžete to zjistit pomocí funkce Var Type. V tabulce 3. je uveden hodnota této  funkce pro jednotlivé typy.

Hodnota funkce Var Type

 Typ

0

Empty

1

Null

2

Integer

3

Long

4

Single

5

Double

6

Currency

7

Date/Time

8

String

Numerické typy v typu Variant pokud přiřadíte proměnné typu Variant celočíselnou numerickou hodnotu použije VB pro její uloženi typ Integer pokud přesáhne hodnota proměnné velikost tohoto typu VB automaticky použije typ Long případně Double.

Textový řetězec uložený jako Variant ne přináší až na vyjímky kdy není jasní zdali proběhne operace sčítaní čísel v textovém tvaru jako matematická či textová operace.

                                 tab.3

Ukládání Data/Času  do typu Variant  

                               .

existuje řada funkcí VB , které obsahují hodnoty času nebo data na příklad:

Sub Form_Clic ( )

Dim PraveTed, Vcera, PredHodinou, PredMinutou

PraveTed = Now      'Now vrací okamžitá čas nastavený v systému

 

Vcera = PraveTed - 1

obr.24.

PredHodinou = Hour(PraveTed) - 1

PredMinutou = Minute(PraveTed) - 1

Form1.Print PraveTed

Form1.Print Vcera

Form1.Print PredHodinou

Form1.Print PredMinuto

End Sub

Výsledek procedury je na obr. 24.

Hodnota Empty proměnné typu Variant někdy je třeba zjistit zdali do proměnné již byla v průběhu činnosti programu od jeho spuštění dosazena hodnota. Proměnná typu Variant nabývá po deklaraci a před prvním použitím hodnotu Empty která není totožná ani s hodnotou 0 nebo ”” . Tuto hodnotu je možno testovat pomocí funkce IsEmpty  na př:

If IsEmpty(z) Then  Z = 0

Proměnnou z hodnotou Empty je možno použít jak v numerickém tak textovém výraze, VB dosadí podle potřeby 0 nebo textový řetězec nulové délky.

Hodnota Null proměnné typu Variant je jiná speciální hodnota, kterou může nabývat proměnná tohoto typu. Využívá se v databázových aplikacích a indikuje neznámá nebo chybějící data. 0 má speciální charakteristiky:

·      Výrazy obsahující Null  dávají vždy výsledek Null  .

·      Jetsliže dosadite za argument Null nebo proměnná typu Variant je rovna  Null   a použijeme li jako argument procedury nebo funkce pak procedura nebo funkce vrací Null .

Jest-li proměnná obsahuje hodnotu Null  zjistíme pomocí funkce IsNull( x).

Ostatní fundamentální typy jsou uvedeny v tab. 1. Jejich deklarace se provádí pomocí klíčovách slov Dim, Public, Static a As .

Dim I As Integer. L As Integer

Public K As Double

Static As Single

Pokud nechceme, aby  proměnná byla typu Variant při zápisu více proměnných za jedno klíčové slovo Dim, pak musíme u každé proměnné použít klíčové slovo As  a napsat její typ jako je uvedeno v přvním řádku výše uvedeného příkladu. Následující deklarace by způsobila, že proměnná I by byla typu Variant a L typu Integer.

Dim  L As Integer

Proměnná typu String se deklaruje Dim L As String jedná se posloupnos znaků a číslic uložených v kódu ASCII může nabaývat délku až 232 znaků. Řetězce s pevně danou délkou moho nabývat délky až 65 536 znaků. Pevná délka se definuje pomocí následujícího výrazu String*size na přílklad:

Dim L As String*50

Proměná typu Pole umožňuje vytvářet indexované proměnné. To je jedno a více rozměrná pole proměnných jednoho typu. Na př

Dim Tabulaka(10,10) As Single

 Vytvoří dvourozměrné čtvercové pole proměnných Tabulka(0,0)Tabulaka(10,10) pokud bychom si přáli, aby index nezačínal od nuly ale od jedné můžeme použít príkaz

Option Base 1   která způsobí, že prvním prvkem pole bude Tabulka(1,1). Nebo můžeme deklarovat rozsah pomocí dolního a horního indexu na příklad Vektor(10 To 20,5 To 8) pak prvním prvkem bude Vektor(10,5) a posledním Vektor(20,8).

Ve VB můžeme použít až 60-ti  dimenzí  pole. Je nutno si však uvědomit že vícedimenzionální pole kladou velké nároky na pamnět.

Dynamické pole často nevíme jaký rozměr budeme potřebovat v průběhu práce programu.Pak stanovíme deklaraci pole jako dynamickou tak, že neuveeme dimenze a za proměnnou napíšeme prázdnou závorku celkový počet dimenzí dynamického pole je 8:

 Dim NafukovaciPole() As Single

 A v okamžiku, kdy si přejeme pole použít stanovíme jeho rozsah pomocí příkazu ReDim např.

ReDim NafukovaciPole(X+1,Y)

Tento příkaz je možno použít pouze uvnitř procedury. Jakmile jednou uvnitř dané procedury  stanovíme počet  rozměrů pole je možno v další části procedury měnit pouze pročet prvků v nikoliv rozměr pole.

Zachování obsahu dynamického pole Každé volání příkazu ReDim způsobí vymazaní obsahu pole. VB nastaví proměnné na hodnotu Empty pro proměnné typu Variant, na 0 pro proměnné číselného typu , na řetězec nulové délky pro proměnné typu String a na Nothing pro typ Objekt. To je v pořádku pokud si přejete do pole zapsat nové hodnoty proměnných. Pokud si ale přejete zvětšit rozsah pole, aniž by jste ztratili zapsaná data pak můžete zachovat data pomocí příkazu Preserve. Na příklad potřebujete zvětšit v průběhu práce procedury velikost pole o 1.Provedete to příkazem :

ReDim Presserve MePole (UBound(MePole) + 1)

Funkce UBound udává maximílní index daného pole LBound počáteční index.

Uživatelsky definované typy

Kromě výše uvedených předefinovaných datových typů je možno vytvářet vlastní datové typy, které jsou buď přejmenováním některého stávajícího typu, nebo kombinací několika stávajících typů v jedné datové struktuře, která je obdobou záznamu v jazyce Pascal nebo C. Pomocí příkazu Type může programátor označit jedním identifikátorem skupinu položek různých datových typů (fundamentálních, nebo Variant), ze kterých se bude nový datový typ skládat. Všechny definice typu musí být uvedeny v deklaračních sekcích basických modulů Příklad :


Type TZamestnanec

Prijmeni As String

Jmeno As String

Mzda As Currency

Ende Type

Tím vznikne heterogenní datová struktura . Heterogenní se nazývá proto, že její jednotliví složky mohou být různých datových typů. kdekoliv v další části programu může programátor deklarovat proměnné pomocí tohoto typu způsobem jak je uvedeno dále:

Dim Urednik As TZamestnanec RodneCislo As Long

Odkaz na jednotlivé složky proměnné se provádi pomocí tečkové notace podobně jak je tomu v jiných programovacích jazycích , tj. k identifikátoru proměnní se připojí identifikátor položky  pomocí operátoru tečka.Na příklad:

Urednik.Prijmeni = ”Kebrle”

Urednik.Jmeno = ””Karel”

Urednik.RodneCislo = 3808124435

Urednik.Mzda = 17000.00

Objektové typy

Kromě datových operuje VB také s typy objektovými.. Narozdíl od proměnných datového typu se prvky objektových typů nazývají instance . Jednotlivé objektové typy jsou přehledně uvedeny v tabulce 1.

Možnost vytvářet instance přináší řadu výhod. Na příklad instance formy umožňuje vytvářet při běhu aplikace kopie původního objektu, který je zcela nezávislý na originálu.

obr.25.

Sub Command1.Clic ( )

Dim F as New Form1       ‘Deklarace instance Form

F.Show                    ‘Nahrani a otevreni Formy

F.Move Left + (Width / 10), Top + ( Height  / 10)

                                         ‘Posun o desetinu výšky a šířky

End Sub

Na obrázku 25. je ukázána činnost výše uvedení procedury po pětinásobném ťuknutí na tlačítko Command1. Vzniklo pět nezávislých formulářů.

Deklarování instancí Instance i proměnné jsou vytvářeny stejným způsoben deklarací pomocí příkazů Dim, ReDim,Public, Private, Static. Nové je pouze klíčové slovo New

{Dim|ReDim|Static|Public} JmenoPromenne As [New] objecttype

Dim F As New Form1 ‘ Form1 musí v dané aplikaci existovat

Dim FK As Form ‘Tato deklarace  umožňuje do instance  FK uložit libovolná objekt typu Form

Dim TxtoveOkno As TextBox

Object. Představuje základní  objektový typ Veškeré instance tohoto typu jsou ve skutečnosti odkazy tedy  ukazatelé. Tento typ také může sloužit pro přenos těch parametrů podprogramů, které mají objektový charakter.

Obecný objektový typ. Jsou to abstraktní objektové typy, které nesmí vystupovat v žádní skuteční deklaraci nebo přiřazení, neboť obecně reprezentují třídu konkrétních objektových typů. Mohou však vystupovat jako formální parametry podprogramů, kde je abstraktní rys žádoucí. Obecnými objektovými typy jsou na příklad Form, zastupující objekt formulíře, nebo typ Control, zastupující typ ovládacího prvku.

Konkrétní objektové typy. Jsou objektové typy vytvořené v čase tvorby aplikace(designe time), z nichž pak mohou vyniknout pomocí deklaračních příkazů nové instance. (viz příklad uvedený na obr.25.) již dynamicky v průběhu práce aplikace (rune time). Mohou to být všechny formy a  ovládací prvky použité v aplikaci a také databázové objekty jako Database, Table, Field atp.

 

Vzhledem k charakteru instance objektového typu lze těžko hovořit o konkrétní hodnotě instance, neboť ta je tvořena jak daty tak i podprogramy. Proto také způsob manipulace s instancemi bude jiná než způsob manipulace s proměnnou.  K naplnění instance se používá příkazu Set. Díky dědičnosti může však instance být naplněna již pří samotné deklaraci pomocí klíčového slova New. Pokud není instance inicializována při deklaraci pohlíží se na ni, jako by obsahovala hodnotu Nothing. Příklad:

Dim db As Database, tb As Table                 deklarace obecných objektových typu

Set db = OpenDatabase(”C:\Topkat.mdb”)  ‘dosazeni konkretní databaze a jeji otevřeni

Set tb = db.OpenTable(”Ucty”)                      dosazení a otevřeni tabulky v databazi

 

Objekty typu Control

ActiveMovie - video,zvuk

Image - obrázek

CheckBox - zašktávací políčko

Line - čára

ComboBox - kombinované pole se seznamem

ListBox - seznam

CommandButton - tlačítko

Menu - nabídka

CommonDialoge - dialogové pole

OptionButon - příkazové tlačítko

Data - data

OLE - propojeni OLE

DirListBox - seznam složek na disku

PictureBox  - obrázkové pole

DriveListBox - seznam disků

Shape - obrazec

FileListBox - seznam souborů

TextBox - textové pole

Gird - tabulka

Timer - časovač

Frime - rám

VScrollBar

HScrollBar - horizontální rolovací lišta

DBGird

 

Pole instancí typu Form Pomocí klíčových slov Dim, ReDim, Static , Public, New je možno deklarovat pole instncí tím samým způsobem jako pole jiného typu proměnných.

Public Tiskopis( ) As New  frmNotePaddeklarace globálního dynamického pole

Dim PracovniFormular(10) As Form  deklarace lokálního pole o rozměru 10

Pole instancí typu Control se deklaruje pomocí klíčových slov Dim, ReDim, Static a Public na rozdíl od deklarace předchozího typu nelze použít klíčové slovo New.

ReDim AktivniObrazek(15) As Image    Deklarace pole 15 obrázků

Výrazy, operátory, operandy

Výrazy jsou vhodné kombinace operandů a operátorů, které dávají výsledek číselného nebo řetězcového typu. Výrazy vystupují v přiřazovacích příkazech, jako parametry ostatních příkazů nebo jako skutečné parametry podprogramů.

Operátory

Operátor určuje druh operace, která bude ve výrazu provedena nad operandy. Podle počtu operandů zúčastňujících se operace rozlišujeme operátory :

·      unární - v tomto případě souvisí operátor pouze s jediným operandem který většinou následuje za operátorem na př. unární mínus D = - B nebo logická negace Muž = Not Žena

·      binární - operátor obklopují dva operandy. Až na uvedené dva operátory jsou ve VB všechny ostatní operátory binární.

Aritmetické operátory operandy těchto operátorů jsou některého z číselných typů. Obecně platí, že výsledek operace se určí podle přesnějšího typu obou operandů . na příklad bude -li jeden operand typu Single a druhý Duble pak výsledek bude typu duble. Typy operátorů:

·      Sčítání  + , odčítání - , násobení * a  dělení / jako základní aritmetické operátory. Mezi tyto základní aritmetické operátory započítejme i unarní mínus.

·      Celočíselné dělení \ . Výsledkem této operace je číslo typu Integer nebo Long představující celou část podílu obou operandů. Na příklad výraz 10 \ 3 dává výsledek 3. I v tomto případě může být každý z operandů libovolného číselného typu. Pokud však operand není celočíselného typu , bude před vlastním provedením operace zaokrouhlen na celé číslo.

·      Zbytek po dělení - modulo Mod . Výsledkem operace je číslo typu Integer nebo Long představující zbytek po dělení obou operandů. Například  10 Mod 3 dává výsledek 1.

·      Mocnění ^ . Výsledkem je první operand (mocněnec) umocněný na druhý operand. Mocněnec může být záporné číslo pouze v případě, že mocnitel je celé číslo. Pokud má mocněnec hodnotu Null, pak výsledek má hodnotu Null. Protože operandy mohou být i neceločíselného typu je možno provádět i operace odmocňování. Pokud zařadíme vedle sebe více čísel a operátorů bez závorek pak je tento zápis chápan jako mocnina mocniny . výraz  2 ^ 3 ^ 4 je totožný s výrazem  (2 ^ 3) ^ 4 .

Logické  operátory vystupují v logických výrazech, které jsou na příklad součástí parametrů příkazů If nebo While , kde slouží jako podmínka.

Logické operátory jsou vlastně operátory číslnými pracujícími nad jednotlivými bity hodnot některého celočíselného typu. Logické hodnoty True nebo False mají ve skutečnosti číselnou hodnotu -1 a 0. VB rozeznává následující bitové operátory:

Logický součin And,  logický součet Or, exklusivní součet Xor, ekvivalenci Eqv a implikaci Imp.  Výsledky operací jsou uvedeny v tabulce 5.

 

        Operandy

 

And

Or

Xor

Eqv

Imp

0

0

0

0

0

1

1

0

1

0

1

1

0

1

1

0

0

1

1

0

0

1

1

1

1

0

1

1

 

tab.5

 

Relační operátory, výsledkem relační operace je vždy hodnota True nebo False. Operandy relačních operací mohou být numerické, i řetězcové. Pro operátor Is musí být oba operandy objektové. U numerických operátorů dojde nejprve k sjenocení přesnosti a pak teprve k porovnání. V případě řetězcových operandů se bere v uvahu způsob porovnávání nastavený pomocí příkazu Option Compare {Binary | Text }.Vzhledem k tomu, že VB provádí konverzi typů je někdy složité určit, jakým způsobem se má porovnání provést, zda chápat operandy jako čísla nebo řetězce. Proto platí následující pravidla:

Pro oba numerické operandy se provádí numerické porovnání, totéž platí pro řetězcové.

Pokud jeden z operandů je numerický druhý lze na numerický konvertovat na př. 2896, nebo je patřičného druhu variant , provádí se numerické porovnání. Nelze -li ho konvertovat na číslo na př. ”25Mlu” pak se ohlásí chyba Type mismatch.

Jsou -li oba variant záleží na jejich konkrétních druzích.

Je-li jeden typu Currency a druhý typu Single nebo Double provádí se před porovnáním konverze na typ Currency!Vzhledem k tomu, že typ Currency má přesnost pouze na čtyři desetinná místa , může dojít ke ztrátě přesnosti druhého operandu a tím i ke skreslení výsledku operace.

Je - li jeden z operandů typu Single a druhý Double , provádí se před porovnáním zaokrouhlení na typ Single. To může vést ke stejně nepříjemným problémům jako v bodě 4.

Visual Basic rozeznává následující relační operátory :

·Rovnost =. Výsledek má hodnotu True, pokud mají oba operandy stejnou hodnotu, jinak má hodnotu False.

·Nerovnost < >. Výsledek má hodnotu True , pokud mají oba operandy různou hodnotu, jinak má hodnotu False.

·Menší než < . Výsledek má hodnotu True , pokud má první operand menší hodnotu než druhý operand, jinak má hodnotu False.

·Větší než >.  Výsledek má hodnotu True , pokud má první operand větší  hodnotu než druhý operand, jinak má hodnotu False.

·Menší nebo roven  < = . Výsledek má hodnotu True , pokud má první operand menší hodnotu než druhý operand, nebo je mu roven, jinak má hodnotu False..

·Větší nebo roven  > =.  Výsledek má hodnotu True , pokud má první operand větší  hodnotu než druhý operand, nebo je mu roven, jinak má hodnotu False..

·Rovnost podle vzoru Like. Výsledek má hodnotu True , pokud první operand řetězcového typu odpovídá vzoru , kterým je druhý operand. Vzor je vlastně reglární řetězcový výraz , který může obsahovat následující znaky:

?                      v kterémkoliv místě vzoru nahrazuje právě jeden libovolný znak. Např. vzoru  ”a?c ”             mohou odpovídat řetězce ”abc”, ”axc”, a podobně;

#                      v kterémkoliv místě vzoru nahrazuje jednu číslici. Například vzoru ”a#c” mohou        odpovídat řetězce ”a1c”, ”a9c”, a podobně;

*                      v kterémkoliv místě vzoru nahrazuje žádný a více znaků . Například  vzoru ”a*c”       mohou odpovídat řetězce ”ac”, ”axzuc” nebo ”a1236c”;

[seznam]    v kterémkoliv místě vzoru nahrazuje právě jeden znak ze seznamu. Například vzoru         ”a[prs]c” mohou odpovídat ”apc”, ”arc” nebo ”asc”;

[!seznam]   v kterémkoliv místě vzoru nahrazuje právě jeden znak , který neptří do seznamu. Např. vzoru ”a[!klm]c” mohou odpovídat řetězce ”acc”, nikoliv však”akc”.

Seznam může obsahovat také interval znaků , [a-zA-Z] bude souhlasit s každým písmenem a bude obdobou ?

Rovnost instancí objektového typu Is. Tento operátor má pro instance obdobný význam jako operátor rovnosti pro operandy datových typů. Jsou li například L a K instancemi, pak  po příkazu Set P = L  bude hodnota L Is P rovna True.

Řetězcové operátory, výsledek operace řetězcového operátoru bude hodnota typu řetězec. Také opa operandy musí být řetězcového typu nebo je nutno je před operací na řetězec konvertovat.

Zřetězení +. Výsledkem operace je spojení dvou operandů  na př. ”abc” + ”def” výsledkem je řetězec ”abcdef”. Operandy musí být řetězcového typu.

Zřetězení &. Výsledkem je zřetězení dvou operandů které mohou být i jiného typu na př Variant.. Před vlastní operací se hodnoty převedou na řetězce, výsledek je řetězcového typu.

Priorita operátorů

Aritmetické

Relační

Logické

 

Mocnina ^

Rovnost =

Negace Not

 

Unární mínus -

Nerovnost < >

Logický součin And

 

Násobení dělení * /

Menší než <

Logický součet Or

 

Celočíselné dělení \

Větší než >

Nonekvivalence Xor

 

Zbytek po dělení Mod

Menší než rovno < =

Ekvivalence Eqv

 

Sčítání odčítání + -

Větší než  rovno > =

Implikace Imp

 

Zřetězení &

Like

 

 

 

Is

 

 

 

 

1.6.      Příkazy jazyka

Příkaz jazyka je syntaktickou jednotkou, která zujímá jeden nebo více řádků zdrojového textu v deklaraci, podprogramu nebo definiční sekci modulu. Pokud příkaz potřebuje více řádků nazývá se strukturovaný takový příkaz má tělo, kterým je sekvence příkazů ohraničena úvodním a koncovým řádkem. V následujícím textu budou uvedeny jednotlivé příkazy se stručným vysvětlením činnosti příkazu. Podrobný popis příkazu včetně příkladů použití je uveden v Helpu VB a je možno ho nalistovat v rejstříku.

 

 

1.6.1.   Deklarační příkazy

Slouží k vytváření proměnných datového typu, nebo instanci objektových typů. Nemají charakter výkonných příkazů, jako na příklad příkazy cyklu nebo přiřazení.. Obecně však mohou být umístěny na libovolném místě v těle podprogramu, je však pokud k tomu není nějaký důvod zvykem umísťovat je na začátek podprogramu.

·[ Public] Const jméno = výraz[, jméno = výraz] ...

Deklarace konstanty

·Dim jméno [( [dimenze] )] [As] [New] typ] [,jméno [( [dimenze] )] [As] [New] typ]] ...

 Deklarace proměnné nebo instance

·     ReDim [Preserve] JmenoPole (dimenze) [As typ] [,JmenoPole (dimenze) [As typ]]

Změna deklarace dynamicky deklarovaného pole

·      Erase JmenoPole [,JmenoPole] ...

Uvolnění paměti kterou zabírá dynamické pole nebo opětná inicializace statického pole:

·      Global jméno [( [dimenze] )] [As] [New] typ] [,jméno [([dimenze] )] [As] [New] typ]]

Příkaz deklaruje proměnné nebo instance . Na rozdíl od příkazu Dim je ho možno použít pouze v deklarační sekci basického modulu , kde stanoví globální platnost deklarovaných proměnných nebo instancí v celé aplikaci.

·      Public jméno [( [dimenze] )] [As] [New] typ] [,jméno [([dimenze] )] [As] [New] typ]]

je možno použít ve stejnném smyslu jako deklaraci Global

·      Static jméno [( [dimenze] )] [As] [New] typ] [,jméno [([dimenze] )] [As] [New] typ]]

Má podobný účinek jako Dim to je deklaruje proměnné nebo instance. Na rozdíl od  Dim však může být použit pouze v těle podprogramu nebo funkce. Při opuštění procedura neztrácí proměnná i když je pro ostatní části programu nepřístupná hodnotu a po novém volání procedury má takto deklarovaná proměnná hodnotu, kterou nabyla při posledním volání podprogramu.

 

 

·      [ {Private |Public}] Type JmenoTypu

JmenoPolozky [ dimenze] As DatovyTyp

[JmenoPolozky [ dimenze] As DatovyTyp]

....

End Type

Tento příkaz dovoluje programátorovi definovat vlastní datové typy sestavené z jiných datových typů.Datový typ každé položky musí být explicitně zadán identifikátorem datového typu.

 Klíčová slovo Private, Public určují rozsah platnosti definice typu. Jejich použití má význam v basických modulech. Položka může být i sataické pole t.j indexové rozsahy musí být zadány. Počet možných dimenzí je 60.

Tato definice typu může být zapsána pouze v deklarační časti basického modelu.

·      [Static]  [ {Private |Public}] Function jmeno ( [ parametry] )[ As typ]

[ tělo]

[jméno = výraz]

[Exit Function]

[ tělo]

[jméno = výraz]

End Function

Příkaz Function je složený příkaz , jehož tělo musí být ukončeno  příkazem End Function. V těle funkce se mohou vyskytovat všechny povolené příkazy, volání metod, nebo obslužných podprogramů událostí.Pokud je uvnitř těla uveden příkaz Exit Funktion, bude sekvence příkazů v tomto místě přerušena a provede se návrat do volajícího podprogramu. Klíčové slovo Static určuje, že všechny proměnné ve funkci budou statické. Klíčové slovo Private říká, že funkce bude lokální na úrovni modulu.

Složka parametry představuje seznam vstupních parametrů, který může mít následující tvar:

[ Optional][{ByVal | ByRef}]{ParamArray] parametr [ ( )] [ As typ][ .... ]

Parametr představuje formální parametr . Pokud má být parametr polem indexovaných proměnných je nutno za ním uvést prázdné závorky.

Typ formálního parametru může být libovolný typ včetně typů objektových a uživatelských. Nesmí být použit řetězec pevné délky. ( např.String *50). Pokud není typ stanoven pomocí klauzule As pak je deklarován automaticky jako typ Variant.

Je-li uvedeno slovo ByVal, znamená to, že je parametr volán hodnotou není li uvedeno nic nebo ByRef je parametr volán odkazem. Slovo Optional  určuje, že daný parametr je nepovinný, může scházet., hodnota skutečného parametru má pak hodnotu Error 448.

Klíčové slovo ParamArray definuje pole předem neznámého počtu parametrů. Pokud funkce nemá formální parametr musí být uvedeny prázdné závorky.

·      [Static]  [ {Private |Public}] Sub jmeno ( [ parametry] )

[ tělo]

[Exit sub]

[ tělo]

End Sub

Význam slov Static, Private, Public, Exit Sub je stejný jako u definice funkce. Totéž platí o seznamu parametrů procedury.

·      [ {Private |Public}]  Declare Sub procedura Lib ”knihovna”

                                         [Alias ”NahradniJmenoProcedury”]

                             [ ( [parametry] ) ]

    [ {Private |Public}]  Declare Function funkce Lib ”knihovna”

                              [Alias ”NahradniJmenoFunkce”]

                             [ ( [parametry] ) ] [ As type]

Příkazem Declare se vytváří procedury, nebo funkce kterí budou v čase výpočtu využávat některou fubkci nebo proceduru z některé jiné standardní DLL knihovny. Hjlavní výhodou tohoto mechanismu je, že programátor  může použít standardních knihovních podprogramů, které nejsou ve VB implementovány a které nemusí psát. Nemalou výhodou je redukce velikosti aplikace  a vyšší rychlost procedur psaných na př. v jazyce CC+ .

Součástí distribuce VB 4.0 je textový soubor Vb4dll.txt, kde jsou popsány deklarace a způsob použití i návod k vývoji nových DLL knihoven 

·      Option Base {0 |1} Pomocí tohoto příkazu se specifikuje dolní  hranice indexového rozsahu pole.

 

·      Option Compare {Binary | Text}  Přákaz slouží k specifikaci porovnávání dvou řetězcových operandů. Porovnává-li se Binary rozlišují se velká a malá písmena při porovnávání Text , na se velká a malá písmena nerozlišují.

·      Option Explicit  Ve VB není povinná deklarace proměnných. Uvedeným příkazem se tato povinnost zavádí. Jak je uvedeno výše tuto volbu lze nastavit v prostředí VB v režimu design.

·      Def Type pismeno1 [ - pismeno2] [, pismeno1 [ - pismeno2] ...

Tento příkaz slouží k implicitnímu nastavení typu .Podrobnosti viz Help.

1.6.2.   Přiřazovací příkazy

Tyto příkazy způsobí přenos dat mezi dvěma,a paměťovými místy. Je nutno rozlišovat přiřazení datového a objektového typu.

·      [ Let ] proměnná = výraz Tento příkaz slouží k přiřazení hodnoty výrazu proměnní. Klíčové slovo Let je podporován spíše z historických důvodů a není povinný.

·      LSet  RetezcovaPromenna =retezcovy vyraz - dosadí výraz tak, že se zachová délka proměnné RetezcovaPromenna . Pokud je výraz kratší dosadí se zprava mezery. Pkud je delší vezme se pouze tolik znaků kolik činí délka proměnné.

·      LSet proměnná1 = proměnná2 tato forma se využívá pro přiřazení uživatelsky definovaných typů. Obě proměnné mohou být libovolného uživatelsky definovaného typu nesmí však obsahovat položku typu Variant nebo řetězec proměnné délky String. Účinek tohoto příkazu je podobná běžnému kopírování bloku dat v paměti do jiného bloku. Pokud je proměnná1 delší než proměnná2 , umístí se obsah proměnná2 nalevo do paměťového prostoru proměnné1. Pokud je delší proměnná2 uloží se  do proměnné1 pouze tolik obsahu proměnné2 aby se proměnná1 zaplnila. 

·      RSet RetezcovaPromenna = RetezcovyVyraz - jako LSet při rozdílu délek však dosadí mezery před hodnotu.

·      Set ObjektováProměnná = { ObjektovyVyraz | New ObjektovyTyp | Nothing}

Příkazem lze vytvořit nový odkaz na stávající instanci některého objektového typu, za pomocí klauzule New  vytvořit novou instanci některého objektového typu, nebo specifikovat uzavření instance přiřazením hodnoty Nothing.

1.6.3.   Příkazy cyklu

Příkazy cyklu se používají k opakování určité části podprogramu nebo funkce v závislosti na podmínce , nebo předem dané hodnotě.

·      Do  [ {While | Until} podminka]

[telo]

Exit Do

[telo]

Loop

V tomto příkazu cyklu se nejprve testuje podmínka  podminka Je li použito klíčové slovo While, bude se cyklus provádět v případě splněné podmínky, pokud je použito klíčové slovo Until, provádí se tělo cyklu pro nesplnění podmínky. Takto zadaný cyklu se nemusí vůbec provést .

 

·      Do

[telo]

Exit Do

[telo]

Loop [ {While | Until} podminka]

 

Tato forma se liší od předchozí tím, že podmínka se testuje až po prvním průchodu cyklem. To znamená , že tělo cyklu se nejméně jednou provede. Uvnitř těla cyklu může být jednou nebo vícekrát uveden příkaz Exit Do , který způsobí ukončení cyklu nezávisle na podmínce.

Podminka je výraz, který nabývá logické hodnoty True nebo False. Podmínkový výraz může být číselný nebo řetězcový . Pokud podmínka nabude nenulové hodnoty přiřadí se podmínce hodnota True, pokud má 0 hodnotu přiřadí se podmínce hodnota False (není podmínka splněna). Podmínkový výraz by měl obsahovat členy nějakým způsobem závislé na příkazech v cyklu například:

n = 1

....

Do While ( n < 20) And (A(n) = 0)

....

n = n+1

.....

Lop

Pokud není tato zásada dodržena , může dojít k nekonečné iteraci které říkáme ”zacyklení” . Vypustíme-li klíčová slova While a Until je cyklus explicitně nekonečný. Toho lze využít třeba v tk zvané čekací smyčce, kde můžeme pak cyklus ukončit při-

kazem Exit Do.Přákazy cyklu můžeme do sebe vnořovat

·      While podminka

[telo]

Wend

Cyklus While je obdobou cyklu Do While podmínka ovšem musí být uvedena  za příkazem While a pdmínkový výraz se testuje před prvním průchodem cyklu.

·      For proměnná = zacatek To konec [Step krok]

 

[telo]

Exit For

[telo]

Next promena [, promena]...

Cyklus For představuje iterací s předmětem daným počtem opakování. Je dána proměnná cyklu (též parametr cyklu), které je před vlastním úprovedením iterace přiřazena počáteční hodnota zacatek, což mů-

 

že být libovolný  číselný výraz. Samotná promena musí být některého numerického typu nebo typ Variant. Pokud není pomocí klíčového slova Step upraven krok cyklu pak se hod -

For c = 1 To 10

...

For d =5 To 20 Step 5

...

For k = 15 To 3 Step - 3

....

Next k, d,c

nota proměnné zvyšuje po každém průchodu cyklu o jedničku. Krok může být i záprný. Cykly je možno do sebe vnořovat a pak můžeme všechny cykly zakončit jedním příkazem Next.

 

·      For Each prvek In skupina

[telo]

Exit For

[telo]

Next prvek

Cyklus For Each slouží k iteracím přes všechny prvky skupiny Skupinou mohou být buď pole indexovaných proměnných nebo kolekce. Pokud jde o pole nesmí mít prvky uživatelsky definovaného typu. Kolekce je uspořádaná množina prvků obecného typu Objekt,  Variant nebo prvků OLE. Na příklad:

 

Dim a (0 To 9) As Byte, prvek, s As String

s = vbNullString     do se uloží konstanta řetězec nulové délky

,,,,

For Each prvek In a

s = s + CStr(prvek) ‘naplní proměnou písmeny odpovídajícími kódům ASCII

Next prvek

Použití příkazu pro kloekci ukazuje následující příklad:

Dim control As Object   deklaruje controlu jako objekt

For Each control In Me.controls ‘ ”zneviditelní ” všechny ovládací prvky v nastaveném

control.Visible = False               formuláři pmoci operítoru Me

Next control

1.6.4.   Příkazy pro řízení běhu aplikace

Do této skupiny příkazů patří příkazy pro větvení programu, ukončování programu, pozastavení programu, příkazy sloužící k ošetření chybových stavů.

·      If podminka Then prikaz1[Else prikaz2]

 

Příkaz If složí k podmíněnému vykonání příkazu nebo bloku příkazů. Podmínkový výraz může bát číselný nebo řetězcový . Pokud podmínka nabude nenulové hodnoty provede se příkaz v klauzuli Then, pokud má 0 hodnotu (není splněna podmínka)provede se příkaz v klauzuli Else. Není-li klausule Else uvedena, neprovede se po nesplnění podmínky 1 žádny příkaz a program pokračuje na dalším řádku. Pokud  nahradíme příkaz blokem příkazů pak bloky příkazů mohou mít následující formy:

1.jeden příkaz Vb neb více příkazů na řádku oddělených dvojtečkou.

2.   samostatný příkaz GoTo

3.   Numerický literál označující číslo řádku na který se má předat řízení

.....

If  A = ”Brno” Then Obyvatel = 450000: Okres = ”Brno” Else 50   ‘způsob ad1.

If K = 5 Then Form1.Print ”Ano” Else Form1.Print ”Ne”                     ‘způsob ad2.

If  A = ”Olomouc” Then 40 Else GoTo NaKonec                                 ‘způsob ad 3.

.....

40 Obyvatel = 106000

50 A = Praha

....

NaKonec:  End                                NaKonec jenávěstí.

End Sub

 

·      If podminka1 Then

[blok1]

[ElseIf podminka2

[blok2]]

.....

[Else

[blok_n]]

EndIf

Tato forma příkazu If je složitější, víceřádková a dovoluje větvit program do více bloků. Podmínky mají stejný význam jako v předchozím případě. Je-li splněna podminka1pak se provede blok příkazů1 a podprogram skočí na první řádek za příkazem End If

Pokud podminka1 není splněna , testují se další podmínky za klausulemi ElseIf a shledá-li se některá splněna provede se blok příkazů nasledující za touto podmínkou, program pak pokračuje za příkazem End If. Před příkazem End If může být ještě jeden blok příkazů oddělený klausulí Else, který se provede není-li splněna žádná z podmínek.

·      TypeOf ObjektovyVyraz Is ObjektovyTyp

·      Výraz z klauzulí TypeOf davá hodnotu True, pokud je ObjektovyVyraz typu ObjektovyTyp jinak dává hodnotu False.

·      Select Case vyraz

Case SeznamVyrazu

             [blok1]

Case SeznamVyrazu

             [blok2]

....

Case Else SeznamVyrazu

             [blok_n]

End Select

Příkaz Selct Case dovoluje větvení toku podprogramu v závislosti na hodnotě numerického nebo řetězcového výrazu vyraz.V jednotlivých větvích příkazu  je za klíčovým slovem Case uveden seznam výrazů, které musí svým typem odpovídat typu testovacího výrazu a jejichž hodnoty se postupně porovnávají s hodnotou testovacího výrazu vyraz.Pokud je nalezena shoda,

provede se následující blok příkazů .Jednotlivé členy seznamu výrazů se oddělují čárkou a mohou mít následující formu: - samostatný výraz (většinou konstanta), - rozsah hodnot (např. 10 To 20), - výraz kterému předchází klíčové slovo Is ( Is < 10). Příklad:

Private Sub Command1_Click()

Dim par As Integer, P As Integer,B As Integer

Select Case par

Case Is < 10

P = 5

B = 3

Case 6 To 12

MsgBox ”Parametr má hodnotu v intrvalu <6,12>”

Case 1,2,3

P = 10

B = 8

Case Else

MsgBox ”Parametr má špatnou hodnotu>”

End Select

 

·      Go To { číslo | návěstí}

příkaz slouží ke skoku na jiné místo programu - na řádek označený číslem nebo návěstím. Parametry číslo  a návěstí mohou být čtyřicetiznakové literály nebo identifikátory. Návěstí musí byt ukončeno dvojtečkou např NaKonec: Programátor by se měl vystříhat skoků do strukturovaných příkazů přesto, že jeto ve Vb dovoleno.

·      End  - ukončuje běh aplikace.Všechny formy jsou zrušeny všechny otevřené zdroje uzavřeny, všechny pamě´tové zdroje zrušeny

·      Stop - pozastaví běh aplikace. Veškeré zdroje jsou zachovány, formy zůstávají na obrazovce. Aktivním se stane okno zdrojového textu aktuálního formy a běh se zastaví na příkazu Stop.Programátor může aktivovat okno Debug a provádět kontrolu proměnných, nebo krokovat podprogram. Pokračování se docílí z menu VB příkazem Continue.

1.6.5.   Příkazy pro ošetření chyb.

Při výskytu chyby při běhu programu vede každá chyba , která se vyskytne k ukončení aplikace. VB vypíše hlášení o této chybě. Pracuje-li program v prostředí Visual Basicu bude místo zrušení aplikace aktivován režim break.

 

Pro ošetření chybových stavů se ve Visual Basicu dá využít standardní objekt Err. Aktivuj se příkazem

·      On Errror {GoTo cil | Resume Next | Go to 0}

Příkaz On Error aktivuje programátorovu chybovou rutinu, to znamená, že dovoluje předat řízení na tuto rutinu.

Go To cil                              Zaktivuje část podprogramu která má chybu vyřešit

Resume  {0 | Next | cíl}        Příkaz provádí zotavení aplikace po chybě a její převod zpět do       normálního režimu Tento návrat může proběhnout trojím způ                              sobem. Je li volba 0 pak je řízení předáno na řádek kde vznikla                                   chyba, Next předá na bezprostředně následující řádek a cil pře-       dá řízení na číslo řádku nebo na navěstí.

GoTo 0                                 Chybová rutina je deklarována ale program se chová jako by           ošetření chybového stavu nebylo implementováno .

Příklad větve programu nazývané error handler:

....

On Error Go to ErrHandler  ‘ tento příkaz se zařadí před místo kde může vzniknout chy-         ba

...

Exit Sub                    ‘ tento příkaz tvoří skutečný konec podprogramu nenastane-li chyba

Select case Err.Number         ‘část ve které se ošetří chyba

...

End Select

Resume Next                           ‘vrátí běh programu za řádek za kterým nastala chyba   

End Sub

1.7.      Použití objektů v aplikací

V následující části budou popsány jednotlivé objekty které je možno zařadit do aplikace. Výběr objektů ani metod ani událostí není úplný neboť takový popis výrazně přesahuje rámec publikace. Po seznámení se základními způsoby použití objektů je možno podrobnější a vyčerpávající popis získat v Helpu, který je součástí Visual Basicu.

1.7.1.   Formy (Form)

Jako objekt je okno nebo dialogový box , který je součástí uživatelského rozhraní aplikace

Syntax:

Form

Forms(index)

Fomulář - Form umí rozpoznávat události, které jsou vyvolány uživatelem nebo systémem. Formulář rozeznává následující události:

Private Sub Form_Activate( )

 

Private Sub Form_Click( )

Private Sub Form_DblClick ( )

 

Private Sub Form_Deactivate( )

Activate Event -aktivuje formulář při ukázání myši na Formu a při užití Show metody nebo metody SetFocus

Click Event - spustí udílost při ťuknutí myší na Formu

DblClick Event - spustí událost při  dvojím ťuknutí myší na Formu

Deactivate Event spustí událost při deaktivaci Form

 

 

 

Private Sub Form_KeyDown(keycode As Integer, shift As Integer)

 

 

 

 

KeyDown Event - událost vyvolaná stisknutím klávesy dolů.

 

 

Private Sub Form_KeyUp(keycode As Integer, shift As Integer)

 

 

 

 

KeyUp Event - událost vyvolaná uvolněním klávesy. Tabulaka kódů je v příloze1

 

Private Sub Form_KeyPress(keyascii As Integer)

KeyPress Event - indikuje stisknutí klávesnice

 

 

Private Sub Form_Load( )

Private SubMDIForm_Load( )

Load Event - tato událost nastan při nahrávání formy  do paměti. To umožňuje provést všechny příkazy, které jsou nutné pro použití objektu, jako jsou inicializace, dosazrní do proměnných atd. Příklad kódu události je dále uveden:

 

 

 

Private Sub Form_Load ()        ' Dosazení do seznamu

            Combo1.AddItem "Mozart"         ' Nastavrní řádku seznamu

            Combo1.AddItem "Beethoven"

            Combo1.AddItem "Rock 'n Roll"

            Combo1.AddItem "Reggae"

            Combo1.ListIndex = 2      .

End Sub

 

 

 

Private Sub Form_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub MDIForm_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub Form_MouseUp(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub MDIForm_MouseUp(button As Integer, shift As Integer, x As Single, y As Single)

 

 

 

 

 

buton

shift

 

x ,y

MouseDown Event,  MouseUp Event - událost která nastane po stisknutí nebo po uvolnění tlačítka myši událost má následující parametry:

hodnota 1 znamená levé tlačítko, hodnota 2 pravé tlačítko a hodnota 4 střední

určuje zdali je při stisknutí nebo uvolnění tlačítka myši stisknuto tlačítko SHIFT hodnota 1, CTRL hodnota2, ALT hodnota 4.

Specifikují hodnoty souřadnic kurzoru. Měřítko souřadnic je možno nastavit ve vlastnostech (Propertis) formy.

 

 

Private Sub Form_MouseMove(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub MDIForm_MouseMove(button As Integer, shift As Integer, x As Single, y As Single)

 

 

 

MouseMove Event - událost indikuje pohyb myši (parametry jako v předchozím případě

 

 

Private Sub Form_Paint()

Paint Event - událost umožňuje překreslení obrázků při užití grafických metod ve formě. V následujícím příkladu je užita grafická metoda Line pro nakresleni čtyřúhelníka.

 

 

Private Sub Form_Paint ()

            Dim HalfX, HalfY     ' Declare variables.

            HalfX = ScaleLeft + ScaleWidth / 2  'Nataví polovinu šířky formy

            HalfY = ScaleTop + ScaleHeight / 2 ' Set to one-half of height.

            'Kreslení čtyřuhelníka.

            Line (ScaleLeft, HalfY) - (HalfX, ScaleTop)

            Line -(ScaleWidth + ScaleLeft, HalfY)

            Line -(HalfX, ScaleHeight + ScaleTop)

            Line -(ScaleLeft, HalfY)

End Sub

 

Private Sub Form_Resize          

Refresh         ‘Překreslení  čtyřúhelníka př změně rozměrů formy

End Sub

 

Čtyřúhelník se překreslí vždy při změně rozměrů okna.

 

 

Private Sub Form_Resize

Resize Events - událost vyvolaná změnou rozměrů okna

 

 

Private Sub Form_Unload(cancel As Integer)

Unload Even - je spuštěna při zrušení formy

 

 

Poznámka : pokud budou u dalších objektů uvedeny obdobné události nebude již uveden podrobný popis události  jestliže se nebude lišit od výše uvedeného popisu.

 

Nečastěji užívané metody formy - metody objektu Form

Poznámka : Obecně je možno říci, že metody se používají k implementaci chování objektu. Metody se implementují pomocí podprogramů a funkcí., které nejsou vlastnostmi.

·      Metoda Show - zobrzí formulář form nebo MIDIForm

object.Show style

object         může být Form nebi MidIForm   např:: Form1.Show

style            může mít hodnotu 0 = modeless (default ) nebo 1= modal 

Poznámka : Před tím než použijeme metodu Show musíme použít příkaz Load  pomocí kterého načteme objekt do paměti.:              

Syntax:

Load object

Příklad programu, který zjišťuje byl - li formulář Form1 zaveden do paměti:

Private Sub Form_Click ()

       Dim Answer, Msg    ' Deklarace proměnných.

       Unload Form1         'Zrušení formy Form1 v paměti

       Msg = "Formulář 1 byl zrušen. Pokud si ho přejete znovu zavést a zobrazit                 stiskněte Ano, pokud si nepřejete ho zobrazit stiskněte Ne "

                   Answer = MsgBox(Msg,4) ' Dá uživateli zprávu.

       If Answer = 6 then                              ' Vyhodnotí odpověď

                   Show                                    ' Je - li odpověď Ano, ukáže formulář Form1.

       Else

                   Load Form1                              ' Pří odpovědi Ne zavede Form1 a neukáže ho.

                   Msg = "Form1 je nyní zaveden zvolte si OK a zobrzí se"

                   MsgBox Msg           ' Zobrzí zprávu.

                   Show ' Show form.

       End If

End Sub

·      Metoda Hide  - skryje formulář a nechá ho uložený v paměti - vlastnost Visible se nastaví na False

Syntax

object.Hide               Například:    Form1.Hide

·      Metoda Cls - vymaže kresby na formuláři , text zůstane zachován.

Syntax

object.Cls Syntax

 

object.Cls Syntax       Například:    Form1.Cls

·      Metoda Move - posune objekt a změní jeho rozměry

Syntax

object.Move left, top, width, height Například: Form1.Move 180,250, 500,400

·      Metoda Print - vytiskne výstupní seznam (outputlist) na  deklarovaý ojekt viz příklad

Syntax

object.Print outputlist     Form1.Print ”Ahoj” ; ” ”; ”Jirko”

 

·      Mtoda PrintForm  -  vyšle bitovou mapu Formy na aktuální tiskárnu

Syntax

object.PrintForm        Například:    Form1.PrintForm

 

Přehled nejčastěji používaných vlastností  (Propertis).

Jak bylo uvedeno výše v kapitole Formy každému objektu  je možno ve režimu design přednastavit vlastnosti v tabulce Propertis (obr. 10). Pokud projektant nezmění tyto vlastnosti v režimu run pomocí příkazů zachovávají si objekty nastavené vlastnosti po celo dobu běhu aplikace.

V další části budou uvedeny ty vlastnosti formy, které bývají nejčastěji měněny při běhu aplikace jsou to:

object.Visible [= boolean

Například :

a. Form1.Vsible = False

b. Form1.Vsible = True

Visible Property - nastavuje vlastnost viditelnost formy to znamená, je-li zapsáno přiřazení ad. a. (False) je formulář neviditelný, i když je zaveden v paměti, v opačném případě ad.b. (True) je formulář viditelný.

object.Caption [= string]

Například :

 

 

Form1.Caption = ”Otázky”

Form2.Caption = ”Odpovědi”

 

Caption Property  = tato vlastnost je přednastavena  na Form. Je to vlasně hlavička formy. Hlavičku je možno měnit v režimu design i run.Příklad uvádí změny v režimu run:                   

object.AutoRedraw [= boolean]

Například :

Form1. AutoRedraw = False

Form1. AutoRedraw = True

AutoRedraw Property - automatické překreslování obsahu formy. Je li tato vlastnost nastavena na false  pak, je-li formulář při běhu aplikace překryt jiným oknem obsah formy se znovu nevykreslí .

object.BackColor [= color]

object.ForeColor [= color]

Například :

Private Sub Form_DblClick()

Form1.BackColor = RGB(50, 100, 25)

Form1.ForeColor = QBColor(10)

Form1.Print "Ahoj"

End Sub

BackColor, ForeColor Properties nastaví barvu pozadí a popředí (na př. písma nebo čar) na formuáři . Barva se nastavuje pomocí funkce RGB(červená, zelená, modrá), proměné červená, zelená, modrá jsou čísla v rozsahu 0 až 255 určující zastoupení barvy. Barvu lze nastavit také pomocí funkce QBColor (CisloBarvy), CisloBarvy je v rozsahu 0 až 15.

object.KeyPreview [= boolean]

Private Sub Form_Load()

KeyPreview = True

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Select Case KeyCode

        Case vbKeyF1: MsgBox "F1 ......."

        Case vbKeyF2: MsgBox "F2 ......."

End Select

End Sub

KeyPreview Property - vypíná a zapíná Falese/True odezvu formy  na stisknutí na příklad funkčních kláves. Je-li tato vlastnost nastavena na True pak formulář reaguje před tím, než zareaguje aktivní objekt Control formy. Nový objekt má vlastnost nastavenu (default) na False.  

object.WindowState [= value]

WindowState Property - nastaví okno formy

0          (Default) Normal - normální nastavení

1          Minimized - minimalizované do icony

2          Maximized - celá obrazovka

 

1.7.2.   Objekty typu Control

Nejčastěji využívané události jsou uvedeny v následující tabulce podrobný popis i s příklady je uveden v nápovědě (Help) Visual Basicu

Change Event

- nastává pří změně obsahu  objektů Control - ComboBox ,DBCombo,DBGrid ,DirListBox , DriveListBox,  HScrollBar, VScrollBar, Label , PictureBox , TextBox

Click Event

- nastává při ťuknutí myší na objekty Control - CheckBox

ComboBox, CommandButton , DBCombo, DBGrid, DBList,

DirListBox Control, FileListBox Control, Form Object, Grid, 

Frame, Image, Label, ListBox, Menu Object, OLE , OptionButton , PictureBox ,TextBox

DblClick Event

- nastává při dvojím ťuknutí myší na objekty Control -CheckBox, ComboBox, CommandButton , DBCombo, DBGrid, DBList, DirListBox, FileListBox, Grid,  Frame, Image, Label, ListBox, Menu Object, OLE , OptionButton , PictureBox ,TextBox

DragDrop Event

Například:

Private Sub Text1_DragDrop (Source As Control, X As Single, Y As Single)

If TypeOf Source Is TextBox Then

        Text1.Text = Source.Text

    End If

End Sub

nastává při uchopení a tažení následujících objektů Control CheckBox, ComboBox, CommandButton , DBCombo, DBGrid, DBList, DirListBox, FileListBox, DirListBox, DriveListBox , FileListBox , Frame,  Grid,  HScrollBar, VScrollBar , Label , ListBox , OptionButton, PictureBox ,TextBox

GotFocus Event

- nastává při ukázání myší na objekt, nebo stisknutím tlačítka TAB Control - CheckBox. ComboBox, CommandButton, DBCombo, DBList , DirListBox, DriveListBox,  FileListBox , Grid, HScrollBar, VScrollBar , ListBox, OLE Container ,OptionButton, PictureBox ,TextBox

KeyDown, KeyUp Events

- nastává při stisknutí/uvolnění tlačítka klávesnice je li aktivní objekt Control - CheckBox ComboBox, CommandButton , DBCombo, DBGrid, DBList, DirListBox Control, FileListBox Control, Form Object, Grid,  Frame, Image, Label, ListBox, Menu Object, OLE , OptionButton , PictureBox ,TextBox

MouseDown, MouseUpEvents

- nastává při stisknutí/uvolnění tlačítka myši nastavené na objekt Control - CheckBox ComboBox, CommandButton , DBCombo, DBGrid, DBList, DirListBox Control, FileListBox Control, Form Object, Grid,  Frame, Image, Label, ListBox, Menu Object, OLE , OptionButton , PictureBox ,TextBox

MouseMove Event

nastává při pohybu kurzoru myši a působí na objekty  Control - CheckBox ComboBox, CommandButton , DBCombo, DBGrid, DBList, DirListBox Control, FileListBox Control, Form Object, Grid,  Frame, Image, Label, ListBox, Menu Object, OLE , OptionButton , PictureBox ,TextBox

 

Textové pole - TextBox

Textové pole zobrazuje text (stejně jako popiska Lable) . Pomocí textového pole je možno text zadávat , měnit i zobrazovat. Text může mít velikost max. 64 KB. V textovém poli nemůže být použita metoda Print. Textové pole se vytvoří pomocí tlačítka  v okně nástrojů. Po vložení do formy je možno upravit jeho velikost .

Textové pole reaguje na následující události - Change , Click, DblClick, DragDrop,DragOver, GotFocus , KeyDown, KeyPress, KeyUp, LinkClose, LinkError, LinkNotify, LostFocus, MouseDown, MouseMove, MouseUp..

Metody objektu textové pole Drag , LinkExecute, LinkPoke, LinkRequest, Move, Refresh, SetFocus, ShowWhatsThis,  Zorder.

Podrobný popis metod i událostí je uveden v Pomoci (Help) vývojového prostředí Visual Basicu.

obr.26b.

Vlastnosti objektu text box jsou zobrazeny na obrázku 26a. a 26b.. Jednotlivé vlastnosti

obr.26a.

 

jsou ukázány v okně Propertis ve kterém je možno nastavovat vlastnosti objektu v režimu desig staticky. V režimu run je možno vlastnosti nastavovat dynamicky na přiklad v podprogramech vyvolaných nějakou událostí .

 

Na příklad v režinu design nastavíme vlastnost Visible na False. Po spuštění aplikace, pokud neprovedeme nějakým způsobem nové nastavení této vlastnosti, bude objekt TextBox Text1 neviditelný. Teprve ťuknutím na tlačítko Vstup dále uvedená procedura změní vlastnost a objekt Text1 bude viditelný.

Private Sub Vstup_Click()

Text1.Visible = True

End Sub

Obrázek - Picture Box

Objekt Obrázek (Picture Box) umožňuje zobrazit obrázek nebo kresby ve formátu .BMP (bitové mapy), .ICO (ikony) a WMF (Windows - Metafile) . Program zobrazí tu část obrázku, která  se vejde do výřezu nastaveného v režimu designe. Pokud nastavíme vlastnost  AutoSize na True zobrazí se celý obrázek. Velikost výřezu se dynamicky přizpůsobí v režimu Run.

V obrázku může být zobrazován i text. Obrázek se vytváří kliknutím na tlačítko

v sadě nástrojů (Toolbox).

Obrázek (PictureBox) reaguje na následující událost: Change , Click, DblClick, DragDrop,DragOver, GotFocus , KeyDown, KeyPress, KeyUp, LinkClose, LinkError, LinkNotify, LostFocus, MouseDown, MouseMove, MouseUp,Paint, Resize.

Metody objektu PictureBox: Circle, Cls,Drag,  Line, LinkExecute, LinkPoke, LinkRequest, LinkSend,  Move, PaintPicture, Point, Print,Pset, Refresh, Scale, ScaleX, ScaleY, SetFocus, ShowWhatsThis, TextHeight, TextWidth, Zorder.

obr. 27a.

obr.27.b

Vlastnosti objektu text box jsou zobrazeny na obrázku 27a. a 28b.. Jednotlivé vlastnosti

jsou ukázány v okně Propertis ve kterém je možno nastavovat vlastnosti objektu v režimu design staticky. V režimu run je možno vlastnosti nastavovat dynamicky na přiklad v podprogramech vyvolaných nějakou událostí . Obrázek ve formě bitové mapy je možno načíst do

 

 

 

obr.28

formy v režimu design v okně Propertis v řádku Picture po klepnutí na ComboBox se objeví okno Load Picrutre (obr.28), které umožní vybrat obrázek nebo iconu. Dynamicky v

režimu run je možno načíst obrázek na příklad pomocí následujícího kódu:

Private Sub Form_Load()

Picture1.Picture = LoadPicture("c:\windows\plocha\ozubená kola")

End Sub

Při dynamickém načítaní obrázku je lepší nastavit vlastnost AutoSize  = True . Další důležitou vlastností je nastavení automatického překreslování okna, pokud si přejeme, aby se obrázek při překrytí a znovu objevení okna překreslil. AutoRedraw = True .Pokud je tato vlastnost aktivní je obrázek uložen v operační paměti a není nutno ho vždy znovu načítat.

Ovládací prvky Popisek (Lable), Zobrazení (Image), Čára (Line) a Obrzec (Shape)  mohou částečně nahradit TextBox a PictureBox .

Popisky slouží k zobrzení textu nikoliv jako vstup. Většinou se používají pro popis. Do formy se vkládají pomocí tlačítka   v okně nástrojů (Toolbox) . Vlastnosti jsou uvedeny na obr.29 v okně Proprtis pro popisku. Události popisky:

 Change , Click, DblClick, DragDrop,DragOver,, LinkClose, LinkError, LinkNotify,linkOpen, MouseDown, MouseMove, MouseUp.

Metody objektu Drag,  Line, LinkExecute, LinkPoke, LinkRequest,   Move,  Refresh,, Zorder.

Zobrzení (Image) vytváří se pomocí tlačítka  ze sady nástrojů.  Vlastnosti zobrazení jsou na obr.30. Jedna z nejzajimavějších vlastností je vlastnost Stretch umožńující přispůsobit automaticky velikost obrázku velikosti ovládacího prvku. Image1.Stretch = True

Události -Click, DblClick, DragDrop,DragOver,, MouseDown, MouseMove, MouseUp.

obr.30.

obr. 29.

 

 

 

 

 

 

 

 

 

 

 

Metody objektu  -Drag,  Move,  Refresh,, Zorder.

 

Ovládací prvek Čára (Line) Slouží k zjednodušenému kreslení rovných čar mezi dvěma body.Vytvoří se pomocí tlačítka  ze sady nástrojů. Vlastnosti jsou na obr.31.

obr.31.

 

 

obr.31.

obr.32.

 

Metody  - Refresh, ZOrder.

Obrazec (Shape) slouží ke kreslení obdélníků, kruhů a elips.Vztváří se pmocí tlačítka . Vlastnosti jsou uvedeny na obr. 32. Methody - Refresh, ZOrder. Druh obrazce je určen vlastností Shape . Hodnota představuje jeden z možných obrazců:

 

·      0 : obdélník

·      1: čtverec

·      2: ovál

·      3: kruh

·      4: zaoblený obdélník5: zaoblený čtverec

Ovládací prvek Příkazové tlačítko (CommandButton). Pomocí tlačítka můžeme vyvolat událost klikneme - li na něho myší, nebo vybereme-li ho pomocí klávesy TAB z klávesnice a stiskneme-li ENTER. Vlastnosti příkazového tlačítka jsou uvedeny na obr. 33.

Události - Change , Click, DblClick, DragDrop,DragOver, GotFocus , KeyDown, KeyPress, KeyUp, LinkClose, LinkError, LinkNotify, LostFocus, MouseDown, MouseMove, MouseUp,Paint, Resize.

Metody objektu PictureBox: Circle, Cls,Drag,  Line, LinkExecute, LinkPoke, LinkRequest, LinkSend,  Move, PaintPicture, Point, Print,Pset, Refresh, Scale, ScaleX, ScaleY, SetFocus, ShowWhatsThis, TextHeight, TextWidth, Zorder.

 

 

 

 

Okno pro odlaďování aplikace (Immediate, Locals and Watch Window) umožňuje při odlaďování aplikace bezpro-středné (immediate) zkoušet příkazy VB a sledovat (watch) hodnoty proměnných.