Standardní moduly a procedury ve Visual Basicu pro Aplikace

Přehled informací

Rozsah platnosti proměnných

Rozsáhlejší programy zpravidla obsahují větší množství formulářů a procedur událostí, které využívají určité proměnné a rutiny. Implicitně je každá proměnná lokální pro svoji vlastní proceduru událostí. To znamená, že taková proměnná se dá číst a měnit jen z té procedury události, ve které byla vytvořena. Podobně procedury události jsou lokální vůči formuláři, ve kterém jsme je vytvořili.

Proměnné a procedury, které mají být společné pro všechny formuláře a procedury událostí určitého projektu, musíme deklarovat v určitém standardním modulu stejného projektu.

Standartní moduly

Standartní modul neboli modul kódu je speciální soubor s příponou .bas, který obsahuje globální neboli veřejné proměnné a procedury typu Function, Sub a Property (funkce a podprogramy). Tyto proměnné a procedury lze použít kdekoli v projektu.

Postup vytvoření nového modulu

Pro vytvoření nového standardního modulu můžete použít tří postupů. Všechny postupy jsou si rovnocenné a je pouze na Vás, který postup Vám bude vyhovovat.

První postup otevření nového standardního modulu pomocí použití okna Prohlížeč projektů:

Druhý postup otevření nového standardního modulu pomocí panelu nástrojů Standartní:

Poslední postup otevření nového standardního modulu pomocí nabídky Vložit:

Postup uložení nového modulu

Postup odstranění modulu z projektu

Postup přidání existujícího modulu do projektu

Veřejné proměnné

Deklarujeme-li proměnnou na úrovni modulu jako veřejnou, je dostupná všem procedurám projektu. V následujícím příkladu lze proměnnou strZpr typu řetězec používat ve všech procedurách všech modulů projektu:


   ' Řádek vložíme do odstavce deklarací modulu.
     Public strZpr As String

Všechny procedury jsou ve výchozím stavu veřejné, až na procedury událostí. Vytvoří-li program Visual Basic proceduru události, před deklaraci procedury se automaticky vloží klíčové slovo Private. U všech ostatních procedur platí, že je musíme explicitně deklarovat s klíčovým slovem Private, pokud nemají být veřejné.

Veřejné procedury, proměnné a konstanty, definované ve standardních modulech nebo modulech tříd, lze používat v odkazujících projektech. Nejdříve však musíme nastavit odkaz do projektu, kde jsou definovány.

Veřejné procedury, proměnné a konstanty, definované v jiných modulech, než jsou standardní moduly nebo moduly tříd, například v modulu formulářů nebo modulech sestav, nejsou dostupné odkazujícím projektům, protože tyto moduly jsou soukromými moduly projektu, v němž jsou uloženy.

Procedury typu Function

Procedura typu Function (funkční procedura) je skupina příkazů zapsaná ve standardním modulu mezi příkazy Function a End Function. Tyto příkazy uvnitř funkce vykonávají určitou smysluplnou činnost, například zpracovávají text. Při volání funkce v programu zapíšeme do programového příkazu jméno funkce spolu s případnými potřebnými argumenty. Argumenty představují doplňující údaje, bez kterých funkce nemůže pracovat.

Každá funkce vrací do volající procedury určitou hodnotu a to prostřednictvím svého jména. Posledním příkazem funkce bývá z tohoto důvodu často přiřazovací příkaz, který do jména funkce přiřadí návratovou hodnotu.

Syntaxe příkazu

  [Public | Private] [Static] 
  Function name [(arglist)] [As type]
    [statements]
    [name = expression]
    [Exit Funkce]
    [statements]
    [name = expression]
  End Function

Argumenty příkazu

Public

Volitelná. Public procedura je přístupná pro všechny ostatní procedury ve všech modulech.

Při použití v modulu, který obsahuje příkaz Option Private, není procedura dostupná mimo rámec projektu.

Private
Volitelná. Private procedura Function je přístupná pouze pro ostatní procedury v modulu, ve kterém je deklarována.
Static

Volitelná. Lokální proměnné Static procedury Function zůstanou mezi jednotlivými voláními uchovány.

Atribut Static nemá vliv na proměnné, které jsou deklarovány mimo proceduru Function, ani ne v případě, jsou-li touto procedurou používány.

name
Povinná. Název procedury Function.
arglist
Volitelná. Seznam proměnných představujících argumenty, které jsou předávány proceduře Function při jejím volání. Proměnné jsou odděleny mezi sebou čárkou.
type

Volitelná. Datový typ hodnoty vrácené procedurou Function.

Možné datové typy jsou Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (v současné době není podporován), Date, String (kromě řetězců s pevnou délkou), Object, Variant nebo libovolný uživatelský typ.

Nemůže být vráceno pole žádného typu. Pro vracení polí je potřeba použít proměnnou typu Variant, obsahující pole, která může být vrácena.

statements
Volitelná. Příkazy, které se vykonají v rámci procedury Function.
expression
Volitelná. Vrácená hodnota procedurou Function.

Příklad funkce vracející sinus úhlu zadaného v radiánech

  ' Následující uživatelem definovaná funkce vypočítá
  ' sinus úhlu zadaného ve stupních. Uhel je předán jako argument.
  Function SinusStupne(CisArg As Double) As Double
    CisArg = CisArg * (3.14 / 180)  'Prevod stupňů na radiány
    SinusStupne = Sin(CisArg)       'Vrácení vypočítaného sinu.
  End Function

Zavolání funkce se uskuteční následovně:

   SinusStupne = SinusStupne(100)

Tento řádek kódu vypočítá sinus úhlu 100 stupňů a výsledek uloží do proměnné SinusStupne.

Procedury typu Sub

Procedura typu Sub (klasické procedury) se do značné míry podobá proceduře typu Function. Procedura Sub však do volajícího programu nevrací místo svého jména žádnou hodnotu.

Procedury typu Sub se používají například k načítání vstupu od uživatele, k zobrazení nebo tisku různých informací anebo k manipulaci s určitými vlastnostmi spojenými s nějakou podmínkou. Ve volání procedur se také zpracovávají různé proměnné a jako výsledky se může vrátit několik hodnot. Většina funkcí může vracet jen jednu hodnotu, klasické procedury typu Sub jich však mohou vracet i více.

Při volání procedury musíme zadat stejný počet a datový typ argumentů, jaký je uveden v deklaraci Sub. Jestliže procedura během své činnosti změní hodnotu některé z proměnných definovaných jako argument volání, vrátí se do programu upravená hodnota této proměnné. Procedury definované ve standardním modulu, jsou (podobně jako funkce) implicitně veřejné, takže se dají volat z libovolné procedury události.

Syntaxe příkazu

  [Public | Private] [Static] 
  Sub name [(arglist)]
    [statements]
    [Exit Sub]
    [statements]
  End Sub

Argumenty příkazu

Public

Volitelná. Public procedura Sub je přístupná pro všechny ostatní procedury ve všech modulech.

Při použití v modulu, který obsahuje příkaz Option Private, není procedura dostupná mimo rámec projektu.

Private
Volitelná. Private procedura Sub je přístupná pouze pro ostatní procedury v modulu, ve kterém je deklarována.
Static

Volitelná. Lokální proměnné Static procedury Sub zůstanou mezi jednotlivými voláními uchovány.

Atribut Static nemá vliv na proměnné, které jsou deklarovány mimo proceduru Sub, ani ne v případě, jsou-li touto procedurou používány.

name
Povinná. Název procedury Sub.
Volitelná. Seznam proměnných představujících argumenty, které jsou předávány proceduře Sub při jejím volání. Proměnné jsou odděleny mezi sebou čárkou.
statements
Volitelná. Příkazy, které se vykonají v rámci procedury Sub.

 

Příklad funkce pro výpočet plochy trojúhelníku

  ' Definice procedury Sub.
  ' Procedura Sub se třemi argumenty.
  Sub VypocetPlochyTrojuhelniku(OdvesnaA, OdvesnaB, Prepona)
    Dim Plocha As Double      ' Deklarace místní proměnné.
    Dim S As Double           ' Deklarace místní proměnné.
    If OdvesnaA = 0 Or OdvesnaB = 0 Or Prepona = 0 Then
                              ' Je-li jeden z argumentů 0:
      Exit Sub                ' Ukončení procedury Sub.
    End If
    S = (OdvesnaA + OdvesnaB + Prepona) / 2
    Plocha = Sqr (S * (S - OdvesnaA) * _
      (S - OdvesnaB) * (S - Prepona))
                              ' Výpočet plochy trojúhelníku.
    Debug.Print Plocha        ' Vytisknutí obsahu proměnné
                              ' Plocha do ladícího okna.
  End Sub

Příklad volání funkce typu Sub, argumenty předány hodnotou

Zavolání funkce typu Sub, kdy argumenty jsou předány hodnotou, se uskuteční následovně:

  VypocetPlochyTrojuhelniku 10 10 15

Volání procedury typu Sub hodnotou znamená, že argumenty jsou předány do procedury literálovou, přímo zapsanou, hodnotu, například řetězcem v uvozovkách. Tento mechanismus se využívá v případě, kdy hodnota je konstantní a procedura ji nemůže měnit.

Příklad volání funkce typu Sub, argumenty předány odkazem

Zavolání funkce typu Sub, argumenty jsou předány odkazem, se uskuteční následovně:

  Dim Cislo As Integer
  Cislo = 10       
  VypocetPlochyTrojuhelniku Cislo Cislo Cislo

Volání procedury typu Sub odkazem znamená, že argumenty jsou předány do procedury jako proměnné. Tento mechanismus se využívá v případě, kdy procedura může modifikovat hodnotu argumentu a změněná hodnota se vrátí do volajícího programu.

Příklad volání funkce typu Sub s proměnnou, argumenty předány hodnotou

V řadě případů potřebujeme volat proceduru s proměnnou, ale tak aby byla volaná hodnotou. Existují dva způsoby jak to zařídit:

  Sub VypocetPlochyTrojuhelniku(ByVal OdvesnaA, _
    ByVal OdvesnaB, ByVal Prepona)
  VypocetPlochyTrojuhelniku (Cislo) (Cislo) (Cislo)

Procedury typu Property

Procedury vlastností v programu vytvářejí uživatelem definované vlastnosti a dále s nimi manipulují. Tyto procedury patří sice mezi složitější, ale také velice užitečné součásti jazyka. Umožňují další přizpůsobení existujících ovládacích prvků Visual Basicu a rozšiřují jazyk Visual Basic o nové objekty, vlastnosti a metody.