× Aktuálně z oboru

Vychází Game Ready ovladače pro Far Cry 5 [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]
Celá zprávička [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]

VB – 41. lekce

[ http://programujte.com/profil/27-jiri-chytil/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/75-martin-zak/ ]Google [ :?rel=author ]       7. 3. 2006       16 075×

41.1 Událost validate
41.2 Výpustka
41.3 TabIndex
41.4 Hranaté závorky a názvy objektů
41.5 Rychlokomentování
41.6 Přednosti a překrývání
41.7 Funkce Static
41.8 Vlastnost Container
41.9 Domácí úkol
41.10 V další lekci

41.1 Událost validate

Událost validate – co to je, k čemu to použít a kdy nastane? Tak zaprvé se podíváme na to, k čemu se používá. Používá se tedy ke kontrole zadaných dat, nejčastěji se používají u textboxů. Aby tato událost nastala, musí být nastavena vlastnost CausesValidation. Tato událost nastává ještě předtím, než nastane událost LostFokus. To znamená, že uvedeme tento kód:


Private Sub Text1_Validate(Cancel As Boolean)
    Cancel = True
End Sub

K události LostFokus vůbec nedojde a tudíž se vlastně nestane nic jiného. Kód pak můžet upravit třeba takto:


Private Sub Text1_Validate(Cancel As Boolean)
    If cokoliv = cemukoliv Then
        Text1.Text = "nesprávný údaj"
        Cancel = True
    End If
End Sub

Tím bychom měli problematiku události Validate za sebou.

41.2 Výpustka

Opět se podíváme na to, kdy se používá, kde se používá a co znamená. Výpustka jsou ty tři tečky v menu, pokud víte, co myslím. Pokud jsou za nějakým slovem v nabídce tři tečky, čili výpustka upozorňuje to uživatele, že po stisknutí tohoto tlačítka se mu objeví nejspíš nějaký dialog s nastavením. Tak se liší třeba tlačítko Tisk a tlačítko Tisk…. Pokud tedy stisknete tlačítko Tisk, vytiskne se vám dokument přímo, podle implicitního nastavení. Stiskem tlačítka Tisk… se vám zobrazí dialog, kde si můžete vybrat jak tiskárnu, na které budete tisknout, tak i ostatní nastavení tisku.

41.3 TabIndex

TabIndex je pořadí, po kterém se posouvá fokus při stisku tlačítka TAB. Prvek, který je jako první vložený na formulář a může získat fokus, má TabIndex nastaven na 0, druhý na 1 atd. Pokud některý zněmíte, ostatní se automaticky posunou. Jak, to si zkuste sami. TabIndexu můžete využít například když jste vložili objekty na formulář v jiném pořadí, než jste chtěli. Nebo pokud objekty na formuláři přeskupujete. K tomu bych dodal jednu věc – dříve než formulář začnete tvořit naostro, je vhodné si ho navrhnout, třeba na papír anebo v nějakém projektu jen tak a už tam si určit tabulovací pořadí. Pokud si děláte nějakou aplikaci jen pro osobní použití, tak vám to bude nejspíš jedno, ale pokud děláte aplikace, které chcete vypustit mezi lidi, tak se tím trochu řiďte, jsou totiž lidé, kteří ovládání na klávesnici preferují.

41.4 Hranaté závorky a názvy objektů

Pokud máte v úmyslu pojmenovat nějaký objekt podle klíčového slova, je to možné, ale nedoporučuji to. V některých případech se to ale může hodit. Pro to, abyste s takovým objektem mohli pracovat v kódu, je jeho jméno nutné uvést do hranatých závorek.


Private Sub Print_Click()
    [Print].Caption = " ahoj "
    [EndIf].Caption = "nevim"
    [Or].Default = True
End Sub

Ale jak říkám, tomuto se raději vyhýbejte.

41.5 Rychlokomentování.

Pokud potřebujete část kódu označit jako komentář (třeba při testování), je dobré použít tlačítko Comment Block a Uncomment Block, když chcete blok okomentovat. To je tak vše, co jsem vám v této minikapitolce rychlokomentování chtěl sdělit.

41.6 Přednosti a překrývání.

Tohle je také zajímavá kapitola, které se třeba u jazyků C++ věnuje mnohem více času než tady. Ale něco málo si řekneme.

Proměnné se mohou překrývat, znamená to, že mám veřejnou lokální proměnné. Veřejná proměnná platí všude, pokud ji některá proměnná, která je lokálnější, nepřekryje. Pokud tedy bude mít proceduru, ve které bude deklarována proměnná se stejným jménem, bude se v této proceduře pracovat s proměnnou, která je lokální, ale jakmile proceduru opustíme, tak pracuje zase s veřejnou proměnnou. Zbytek vyjádřím v kódu:


Private Sub Command1_Click()
    Dim xy As Long
    xy = xy + 1
    Print xy
End Sub

Private Sub Command2_Click()
    Static xy As Long
    xy = xy + 1
    Print xy
End Sub

Private Sub Command3_Click()
    Print xy
End Sub

Private Sub Form_Load()
    xy = 7
End Sub
41.7 Funkce Static

Tak tahle věc se vám může hodit. Pokud totiž vytvoříte nějakou funkci, která bude statická, stanou se statické i všechny proměnné, které obsahuje. Viz kód.


Static Function GetSerial()
    Dim a As Long
    Dim b As Long
    Dim c As Long
    Dim d As Long
    a = a + 1
    If a = 20 Then b = b + 1: a = 0
    'atd
    GetSerial = a & "_" & b & "_" & c & "_" & d
End Function

Nemusíte tedy deklarovat proměnné jako statické. I když myslím, že tolik práce to zase není, ale pro vás může být informační charakter to, že je celá funkce statická. Slovo static může být i před procedurou.

41.8 Vlastnost Container

Poslední, na co se v tomto díle podíváme, je vlastnost Container. Je to jedna z vlastností, kterou můžeme upravovat pouze za běhu aplikace. To, co jsem teď napsal, není tak stoprocentní. Ano, my tuto vlastnost nemůžeme nastavit v okně Properties. Ale můžeme toho dosáhnout přemístěním ovládacích prvků do, nebo mimo kontejnerový prvek. To ale nejde běžnou technikou, tedy přetáhnutím, ale musíme využít Ctrl+X a Ctrl+V anebo nabídku vyjmout a vložit. Vlastnost můžeme upravovat například takto:


Private Sub Command1_Click()
    Set Command1.Container = Picture1
    Command1.Left = 1
    Command1.Top = 1
End Sub

Private Sub Command3_Click()
    Set Command1.Container = Form1
    Command1.Left = 1
    Command1.Top = 1
End Sub

Je nezbytné používat klíčové slovo Set. Proč? Na to vám odpovím v několika kapitolách, které budou zaměřené na OOP (Objektově orientované programování), tj. tvorba tříd, objektů, zapouzdření dat atd.

41.9 Domácí úkol

Vytvořte program, který využívá při zadávání dat události Validate a užívá static funkcí.

41.10 V další lekci

Pokud bude nálada, tak snad SQL ve VB


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2006030304-vb-41-lekce/ ].