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).
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 a 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:
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á.
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.
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.
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.
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:
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
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk