Visual Basic.NET – 8. diel

Peter Hrdlica  /  23. 06. 2010, 00:00

Dnes si vezmeme na mušku prácu s aplikačnými nastaveniami, zdrojovými dátami (textovými reťazcami, obrázkami a i.) a všetko bude opäť doložené podrobným slovným aj obrazovým podkladom.

Úvod

            Po dlhej a neplánovanej odmlke Vás  opäť vítam pri ďalšom diely seriálu o programovaní vo VB.NET. Dnešným cieľom bude naučiť sa pracovať s poľami premenných My.Settings, ktoré je najjednoduchšou a zároveň najrýchlejšou cestou k aplikačným nastaveniam a so zdrojovými dátami My.Resources, čo sú textové reťazce, obrázkové, alebo audio súbory a i. Článok bude opäť raz doložený potrebným množstvom obrazového materiálu.


My.Settings – nastavenia aplikácie jednoducho a rýchlo

            Žiadna menšia, ba ani väčšia aplikácia sa neobíde bez nastavení - či už sa jedná o nastavenia zvyšujúce komfort práce užívateľa alebo o nastavenia zabezpečujúce správny chod aplikácie a jej vlastných funkcií. Preto si dnes názorne ukážeme najjednoduchší spôsob práce s aplikačnými nastaveniami v jazyku VB.NET.


Vpravo v prehliadači aplikačných riešení (Solution Explorer) dvakrát klikneme na My Project a potom v ľavo vyberieme záložku Settings (viď obrázky).

 

My Project

Záložka s aplikačnými nastaveniami

 

 

Prvý stĺpec, označený ako Name, bude slúžiť na pomenovanie premennej označujúcej nastavenie; pre lepšiu a jednoduchšiu orientáciu premenné vždy pomenúvame príhodným názvom, napr.: jazyk. Druhý stĺpec nesie názov Type, a teda udáva typ premennej nastavenia napr.: string, boolean, integer, ale aj mnohé ďalšie. Scope, tretí stĺpec v poradí, má na výber iba dve možnosti, a to User Application. Ak budeme mať nastavenú prvú menovanú možnosť - User, bude sa dať hodnotu premennej jazyk nie len prečítať, ale aj zmeniť za behu aplikácie (read/write práva), ak však nastavíme hodnotu na Application bude možné hodnotu nastavenia aplikáciou iba čítať (read práva) = dáta musí zadať programátor. Posledný, no nemenej dôležitý stĺpec je označený ako Value (angl. hodnota alebo aj obsah) a do neho budeme už zapisovať konkrétne hodnoty nastavení / textové reťazce.

 

Vytvorme si teda na ukážku práce s aplikačnými nastaveniami My.Settings premennú pre nastavenie jazykovej lokalizácie našej aplikácie a pomenujme si ju napr. „language“ (angl. jazyk) a jej defaultnú (pôvodnú) hodnotu nastavme na „slovencina“. Navrhnite si formulár približne nasledovne:

 

 

Návrh formulára

 

Handler tlačidla nám bude meniť nastavenie jazykovej lokalizácie programu medzi slovenskou a anglickou, a to tak, že prepíše hodnotu premennej language poľa globálnych premenných My.Settings, uloží zmeny v tomto poli a sám sa vypne – zmeny nastavení sa teda prejavia až po reštartovaní programu.

Private Sub Button1_Click() Handles Button1.Click

 

        If My.Settings.language = "slovencina" Then

            My.Settings.language = "anglictina"

            Label1.Text = "Vypínam"

        Else

            My.Settings.language = "slovencina"

            Label1.Text = "Closing"

        End If

 

  Application.DoEvents()

        System.Threading.Thread.Sleep(2000)

 

        My.Settings.Save()

  End

 

End Sub

 

Rozbor:

 

-         My.Settings.language = "slovencina" - zmení (v prípade klauzuly IF iba porovná) hodnotu premennej aplikačného nastavenia language.

-         Label1.Text = "Vypínam" - upozorní na to, že sa aplikácia vypne

-         Application.DoEvents() - povie programu, aby vykonal všetky rozpracované operácie a až následne na to pokračoval ďalším zdrojovým kódom; ak by sme tento príkaz vynechali, nestihol by nás náš program upozorniť na to, že sa vypína a rovno by sa „uspal“

-         System.Threading.Thread.Sleep(2000)  - „uspí“ aplikáciu na 2000 milisekúnd = 2 sekundy – z dôvodu, aby sme si všimli nápis o ukončení. Niekto však môže namietať, že tento zápis je príliš dlhý a má pravdu, môže sa použiť aj hlavička Imports System.Threading.Thread na začiatku súboru a potom iba príkaz Sleep(2000)

-         My.Settings.Save() - uloží aktuálne hodnoty nastavení

 

Ako zmeniť a uložiť premennú s aplikačným nastavením sme si už ukázali. Načítanie však nie je o nič zložitejšie. Jediné čo potrebujeme je správne použiť podmienený príkaz IF, prípadne rozhodovaciu štruktúru Select Case v prípade viacerých možností hodnoty premennej nastavenia a ďalej pokračovať podľa získaného výsledku.


IF:


Private Sub Form1_Load() Handles MyBase.Load

 

        If My.Settings.language = "slovencina" Then

            Label1.Text = "Ahoj, svet"

            Button1.Text = "Zmeň"

        ElseIf My.Settings.language = "anglictina" Then

            Label1.Text = "Hello, world"

            Button1.Text = "Change"

        Else

            Label1.Text = "Error"

            Button1.Text = "End"

        End If

 

End Sub


SELECT CASE:


        Select Case My.Settings.language

 

            Case "slovencina"

                Label1.Text = "Ahoj, svet"

                Button1.Text = "Zmeň"

 

            Case "anglictina"

                Label1.Text = "Hello, world"

                Button1.Text = "Change"

 

            Case Else

                Label1.Text = "Error"

                Button1.Text = "End"

        End Select

Kliknite na tlačidlo, počkajte kým sa aplikácia vypne a znovu ju spustite. Ak ste všetko spravili správne zmenu uvidíte okamžite. Pri väčšom obsahu aplikačných nastavení (nie len jazykových) je často krát nutné, aby sa ich zmena prejavila priamo za behu programu a nebolo ho nutné reštartovať. Za týmto účelom je vhodné si napísať automatizovanú funkciu alebo procedúru, ktorá sa po uložení zmien zavolá a zmeny okamžite vykoná.


Anglický preklad

 

 

Upozornenie

 

Použiť pole premenných My.Settings na prístup k nastaveniam aplikácie je možno najjednoduchšia a najrýchlejšia cesta, ale má to aj jeden závažný nedostatok, a to v rámci zabezpečenia. Keďže táto funkcia nemá vlastnú vstavanú podporu šifrovania dát, výrazne neodporúčam v pokročilejších aplikáciách ukladať heslá a iné citlivé informácie, pretože sa ukladajú ako jednoduchý textový reťazec.

 

My.Resources –alebo ako na aplikačné texty, obrázky a súbory dynamicky


Premenné v My.Resources na rozdiel od tých v My.Settings môže upravovať iba programátor a užívateľ nie. Tento krát sa totiž jedná o zdrojové dáta ako textové reťazce, obrázky, ikony, audio súbory a i. Tieto sa zadajú pri vývoji aplikácie ekvivalentným spôsobom ako to bolo pri aplikačných nastaveniach a v podstate rovnako sa budú aj používať. Aby sme si ukázali prácu s My.Resources (angl. resource = zdroj), jednoducho si nakreslíme niekam na formulár prvok Label a hodnotu Text mu priradíme až pri načítaní programu zo zdrojových dát. Postup vytvorenia bude takmer rovnaký ako v predošlom prípade. Jediná zmena bude v tom, že v My Project klikneme na záložku Resources.

 

Resources

 

 

Následné priradenie hodnoty premennej rezatec prvku Label je opäť jednoduché:

 

Label1.Text = My.Resources.retazec

 


Rovnakým spôsobom môžeme v programe použiť napr. aj obrázok. Pridáme ho podľa nasledujúceho obrázka.

Pridávanie obrázkov

 

 

V prieskumníku stačí vybrať cestu k obrázku a potvrdiť. Nami vybraný obrázok sa objaví aj v už spomínanom prehliadači aplikačných riešení (Solution Explorer) v pravej časti pracovnej plochy.

 

Solution Explorer

 

 

Nakreslime si teda na formulár prvok PictureBox. Teraz sa nám vyskytli dve možnosti ako priradiť obrázok zo zdrojových súborov. Dynamicky za behu aplikácie:

 

PictureBox1.Image = My.Resources.project_window_res

 

alebo v paneli vlastností (Properties) rovnako na pravej strane pracovnej plochy:

 

Načítanie zdrojových dát do obrázku

 

 

Ekvivalentne možno postupovať so všetkými druhmi zdrojových súborov: audio, ikony a i.

 

Používať zdrojové dáta typu string odporúčam hlavne pri dlhších textových reťazcoch, aby Vám tento „nadbytočný“ text nezavadzal a nerobil Váš zdrojový kód zbytočne neprehľadný.

 

Záver

 

Ďakujem Vám za prejavenú priazeň, trpezlivosť s čakaním na ďalší diel a taktiež za pozornosť.  Akékoľvek otázky, pripomienky či nápady budem čakať na známej e-mailovej adrese hrdlica@gmail.com. V priebehu štúdia programovania Vám prajem veľa zdaru a pevných nervov. Dovidenia v ďalšom čísle.

 

S pozdravom, Peter Hrdlica

 

 

Neprehliadnite: