cool web a perfektni rs- Doporucuji

Saturday, March 31, 2007

Přístupové klávesy pro ovládací prvky

Uživatelé, kteří nemají myši nebo myši nemají rádi, ocení, když jim pro ovládací prvky, které jsou součástí
tabelátorového řazení, připravíte přístupové klávesy. Přístupová klávesa se pozná podle toho, že v nápisu
na ovládacím prvku je znak (obvykle písmeno) přístupové klávesy podtržený. Když uživatel stiskne Alt+ přístupovou
klávesu, aktivuje daný ovládací prvek a nemusí na něj „doskákat“ opakovaný stiskem klávesy Tab.
(Něco poněkud jiného je klávesová zkratka, která se běžně definuje v nabídkách. Je to kombinace kláves, která
umožňuje vydat příkaz z nabídky, aniž by uživatel musel nabídku otevřít. Často se kombinuje s klávesou
Ctrl, viz například klávesové zkratky pro práci se schránkou (Ctrl+C aj.)
Přístupová klávesa se definuje tak, že se před písmeno v nápisu (hodnota vlastnosti Text) napíše znak &.
Doporučuje se, aby to byl první znak v nápisu, nutná podmínka to ale není.
Jak to ale zařídit, když ovládací prvek žádný nápis nemá (například textové pole)? Udělá se to fintou, která
využívá tabelátorového řazení (ostatně proto jsem vytváření přístupových kláves zařadil sem):
1. Poblíž textového pole (nebo jiného ovládacího prvku, pro který chcete vytvořit přístupovou klávesu)
vytvoříte popisek (Label).
2. Přiřaďte vhodný nápis do jeho vlastnosti Text a označte některý znak jako přístupovou klávesu tím,
že před něj napíšete &.
Popisky sice nejsou součástí tabelátorového řazení (nemohou být aktivní), stačí však aby popisek a
„přidružený“ ovládací prvek následovaly v tabelátorovém řazení těsně za sebou.
3. Můžete to zařídit vizuálně po vydání příkazu View > Tab Order nebo přímo nastavením vlastnosti
TabIndex popisu na číslo o jedničku menší, než je hodnota vlastnosti TabIndex přidruženého ovládacího
prvku.
Takto budou mít přístupové klávesy definované obě textová pole na formuláři parametrů. Chcete-li nějaký
ovládací prvek z tabelátorového řazení vyloučit, nastavte jeho vlastnost TabStop na False.
Poznámka. Chcete-li jako součást textu mít znak &, napište ho dvakrát za sebou. Výjimečně by se mohlo
stát, že byste potřebovali v popisku zobrazovat znaky &, protože jejich prostřednictvím prezentujete nějaké
údaje z databáze, které obsahují znaky &. V takovém případě nastavte vlastnost UseMnemonic popisku na
True.

Labels:

Wednesday, March 28, 2007

formátovani

Přehled hlavních formátovacích možností pro množinu vybraných ovládacích prvků:
Zarovnávání. Format > Align, v kaskádové nabídce jsou příkazy pro zarovnání levých stran, středů, pravých
stran, horních stran, středů, dolních stran a na mřížku.
Změna velikosti. Format > Make Same Size, v kaskádové nabídce můžete udělat objekty stejně velké, stejně
vysoké, stejně široké nebo upravit velikost na mřížku.
Rozestupy. Format > Horizontal Spacing, resp. Format > Vertical Spacing. V kaskádové nabídce můžete volit
stejné rozestupy nebo rozestupy zvětšit, zmenšit nebo zcela odstranit.
Centrování na formuláři. Format > Center in Form, v kaskádové nabídce můžete centrovat svisle nebo vodorovně.
Pořadí podle osy z. Ovládací prvky se mohou na formuláři také překrývat, jako když kladete listy papíru
na stůl. Toto pořadí můžete změnit v kaskádové nabídce příkazu Format > Order. Přenést dopředu (Bring to
Front) nebo přenést dozadu (Send to Back). V součinnosti s nastavením barev se tím dají vytvářet i různé
grafické efekty.
Mřížka (Grid) je neviditelný rastr, který usnadňuje přesná zarovnávání a jiné formátovací operace. Velikost
rastru se dá nastavit, mřížka se dá také vypnout.
VB6. Pozor na to, že dříve určoval formátování ovládacích prvků ten, který jste vybrali jako
poslední. Ve VB.NET to určuje ovládací prvek, který vyberete jako první.
Tabelátorové řazení prvků na formuláři
Když tvoříte komplikovanější formuláře (zejména je to důležité u formulářů, na nichž budou uživatelé pořizovat
a upravovat nějaká data), často je uživatelé ovládají z klávesnice a přecházejí z jednoho ovládacího
prvku na jiný stiskem klávesy Tab (zleva doprava, shora dolů) nebo opačným směrem (Shift+Tab). ¡Pozice
jednotlivých prvků v tabelátorovém řazení je ale dána historickým pořadím, v jakém jste ovládací prvky kladli
na formulář. Když pak ovládací prvky různě přeházíte (aby byl formulář hezčí nebo přehlednější), důsledkem
je, že uživatel skáče po formuláři tam a zpět, což není příjemné.
Proto byste měli v určitých fázích návrhu formuláře toto řazení zkontrolovat a případně ho upravit. Dělá
se to tak, že při práci v návrhu formuláře vydáte příkaz View > Tab Order. V levém rohu každého ovládacího
prvku se objeví malý obdélník s číslem, které vyjadřuje pořadí daného prvku v tabelátorovém řazení. Viz obrázek
na příští straně.
Klepáním na čísla můžete tabelátorové řazení měnit, hodnoty ostatních ovládacích prvků se po klepnutí
změní automaticky tak, aby čísla tvořila souvislou řadu od jedné. Na obrázku výše vývojář právě upravil pořadí
tlačítek. Všimněte si, že řazení prvků umístěných v kontejneru (panel okolo tří popisných objektů) je dáno
desetinným číslem.
Pořadí prvku v tabelátorovém řazení odpovídá vlastnost TabIndex ovládacího prvku. Nastavením vlastnosti
TabStop na False můžete daný ovládací prvek z tabelátorového řazení vyloučit.
VB6. Dříve se tabelátorové řazení vizuálně nastavovat nedalo a museli jste to dělat ručně,
prostřednictvím vlastnosti TabIndex.

Labels: ,

Tuesday, March 27, 2007

Formulář by teď měl zhruba vypadat takto:

Formátování více ovládacích prvků současně
Když umístíte na formulář několik ovládacích prvků, je často třeba provést úpravy typu „štábní kultura“.
Například zarovnat horní strany, vyrovnat rozestupy mezi ovládacími prvky apod. Rozhodně tyto činnosti nedělejte
taháním jednotlivých objektů či taháním úchytů, tedy zarovnáváním „od oka“. K dispozici máte daleko
lepší prostředek – příkazy v nabídce Format. Postupujte takto:
1. Potřebujete-li nějak naformátovat skupinu nějakých ovládacích prvků, všechny je nejprve vyberte.
Stiskněte klávesu Shift a klepejte na jednotlivých objektech. Přitom je velmi důležité to, který objekt
vyberete jako první, protože podle něho se bude formátovat.
2. Vydávejte vhodné příkazy z nabídky Format.
3. Až budete s formátováním hotovi, klepněte někde mimo výběr, čímž vícenásobný výběr zrušíte.

Labels:

Monday, March 26, 2007

Daleko důležitější rozdíl je ale v tom,

že se dříve Visual Basic vývojáře při prvním vložení
kopie ovládacího prvku přes schránku ptal na to, zda chce vytvořit tzv. pole ovládacích prvků
(control array). Jak vidíte, už se neptá, protože pole ovládacích prvků už nejsou. Další informace
najdete dále v oddílu Procházení podmnožiny ovládacích prvků na formuláři.
Obrázek formuláře vidíte na příští straně. Obdélník vlevo dole je prázdný objekt PictureBox. Protože byl
vybrán jako první, jsou jeho úchyty (čtverečky v rámu) bílé. Úchyty ostatních vybraných objektů jsou černé.
Na obrázku je už několik tlačítek a navíc je zde objekt Panel, do něhož byly umístěny tři naše popisné objekty.
K panelu se dostaneme později.
VB6. Dříve byly barvy úchytů vybraných objektů opačné. Černá byla barva úchytů toho objektu,
který byl vybrán jako poslední (a podle něho se také řídilo formátování vybrané skupiny
objektů – viz příští oddíl.

Labels:

Sunday, March 25, 2007

V tomto konkrétním příkazu

se využívá toho, že je dohodnuto, kde se budou nacházet soubory s obrázky,
takže se do kódu nemusí psát cesty k obrázkům „natvrdo“. Vlastnost Application.StartupPath vrací cestu,
ke složce, do níž se ukládá spustitelný soubor aplikace (bez koncového lomítka vpravo).
Pokud byste potřebovali obrázek vymazat, dělá se to často pouhým skrytím (nastavením vlastnosti Visible
na False). Chcete-li skutečně objekt vyprázdnit, nastavte vlastnost Image na Nothing:
picVýhra.Image = Nothing
VB6. Dříve se obrázky vkládaly prostřednictvím ovládacího prvku Image (a jeho vlastnost
Stretch se nastavovala na True). PictureBox se spíše využíval jako kontejner pro jiné ovládací
prvky. Jako běžné kontejnery nyní slouží ovládací prvky GroupBox a Panel (jeho využití viz
další část úlohy). Obrázky se při běhu načítaly funkcí LoadPicture a vyprázdnění obrázku
se docilovalo voláním LoadPicture bez parametru.
Vytvoření popisků pro losovaná čísla
Dalším krokem v budování automatu bude, že vytvoříte tři „chlívky“ pro losovaná čísla. Pro tento účel
plně postačí, když využijete ovládací prvek typu popisek (Label) ze soupravy nástrojů. Postupujte takto:
1. Klepněte v soupravě nástrojů na ovládací prvek Label a nakreslete obdélník pro první číslo.
2. Klepněte na právě sestrojeném objektu pravým tlačítkem myši a z místní nabídky zvolte Properties.
V okně vlastností popisek pojmenujte (například lblCislo1).
3. Nastavte vlastnost BorderStyle na Fixed3D, abyste vytvořili iluzi trojrozměrného objektu.
4. Přejděte k vlastnosti Text a odstraňte z výchozí hodnoty část Label, takže zbude pouze 1. Bude se
vám lépe formátovat písmo pro losované číslice.
5. Klepněte vedle vlastnosti Font, klepněte na tlačítko „tři tečky“ a v dialogovém okně Písmo zvětšete
výchozí velikost na 48 (nebo na jinou vhodnou velikost podle toho, jak velká chcete čísla mít).
6. U popisných objektů se někdy hodí vlastnost TextAlign, kterou můžete ovlivnit způsob zarovnání
textu ve vymezeném obdélníku. Standardně je nastavena na hodnotu MiddleCenter a zde se nastavuje
graficky (podobně jako třeba vlastnost Anchor).
7. Odstraňte hodnotu 1 z vlastnosti Text.
Když jste si podle svých potřeb naformátovali chlívek pro jedno losované číslo, bylo by dobré, kdybyste
to nemuseli opakovat pro druhý a třetí popisek. Jedna z možností, jak se opakování vyhnout, je
využít schránku.
8. Zkopírujte objekt, který jste právě naformátovali, do schránky (vyberte ho a stiskněte Ctrl+C), pak
ho vložte (Ctrl+V) a vložte ještě druhou kopii (Ctrl+V).
9. Kopie objektu se položí na původní objekt. Přetáhněte je směrem doprava. Se zarovnáváním se
nezdržujte. Techniky, jak dát více objektů „do latě“, najdete v příštím oddílu „Formátování více
ovládacích prvků současně“.
VB6. Titulky popisků se dříve psaly do vlastnosti Caption, místo níž je nyní Text. Visual Basic
dříve vkládal kopie objektů do levého horního rohu návrhu. To, že se kopie kladou na
zdrojový objekt, by mohlo mást, proto to připomínám.

Labels:

Odměna výherci v podobě obrázků

V této fázi řešení zařadíme jediný obrázek, protože se zatím spokojíme s jediným druhem výhry. Později
výhry rozlišíme na malé, větší a ještě větší a pro každou z výher zobrazíme jiný obrázek. Budeme předpokládat,
že obrázky máte uložené buď ve stejné složce, v níž se vytváří spustitelný soubor aplikace nebo v nějaké
její podsložce s vhodným názvem, například \Obrázky. V naší úloze budeme používat soubory obrázků ve
formátu WMF (metasoubory Windows), které mají tu výhodu, že když je zvětšujete či zmenšujete, neztrácejí
na kvalitě, jako je tomu například u bitově mapovaných obrázků.
Potřebujete-li na formuláři zobrazit nějaký grafický obrázek, slouží k tomu ovládací prvek PictureBox.
Postup:
1. Klepněte v soupravě nástrojů na ovládací prvek PictureBox a nakreslete poměrně velký obdélník
při levé a dolní straně formuláře.
2. Klepněte na objektu pravým tlačítkem myši a z místní nabídky zvolte Properties. V okně vlastností
objekt pojmenujte (například picVýhra) a nastavte vlastnost SizeMode na StretchImage.
3. Klepněte vpravo od vlastnosti Image, klepněte na tři tečky a vyhledejte soubor obrázku.
Existují situace, kdy nechcete obrázek přiřadit objektu „natrvalo“, ale dynamicky ho měnit při běhu aplikace
podle okolností. V takovém případě přiřaďte hodnotu vlastnosti Image v kódu. Využívá se při tom metoda
FromFile třídy Image. Například:
picVýhra.Image = Image.FromFile(Application.StartupPath & "\Moneybag.wmf")

Labels:

Saturday, March 24, 2007

Celá procedura vypadá takto:

Public Sub cmdKonec_Click _
(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdKonec.Click
Application.Exit()
End Sub
Název událostní procedury se skládá z názvu ovládacího prvku, znaku podtržení a názvu události. Záhlaví
procedury je ve skutečnosti jediný řádek kódu. Aby byl přehlednější, rozdělil jsem ho na dva pomocí pokračovacích
symbolů. Ve Visual Basicu je to dvojice znaků mezera a podtržení.
K ukončování aplikace se používá metoda Exit třídy Application, která zastaví všechny běžící cykly
zpráv ve všech vrstvách a uzavře všechna okna dané aplikace.
VB6. Běh formulářů se dříve ukončoval příkazem Unload, který už není. Příkaz End se sice
podporuje, ale stejně jako dříve se nedoporučuje, protože ukončuje práci programu okamžitě,
vlastně by se dalo říci, že násilně. Kostra událostní procedury je také komplikovanější, ale
v běžných situacích se o ni nemusíte starat. Všimněte si ale, že se ve VB.NET parametry
všech procedur standardně předávají hodnotou (ByVal), nikoli odkazem (ByRef), jak tomu
bylo dříve.
Událostní procedura je vlastně metoda, která je svázaná s událostí. První parametr událostní procedury
(sender) poskytuje odkaz na objekt, který vyvolal událost. Druhý je odkaz na objekt, který je specifický pro
danou událost a poskytuje dodatečné informace (například kterou klávesu uživatel stiskl v procedurách zpracovávajících
úhozy z klávesnice nebo pozici kurzoru v událostních procedurách zpracovávajících klepnutí
myší). Pomocí klíčového slova Handles se v metodách může vypsat seznam událostí – tedy danou událost
můžete jednotně zpracovat pro více ovládacích prvků.

Labels:

Thursday, March 22, 2007

VB6.

Pracujete-li s formuláři, u nichž bude moci uživatel měnit velikost formuláře, snižují
vlastnosti Anchor a Dock podstatně případy, kdy byl dříve nutno psát událostní proceduru Resize
formuláře, tj. programovat „ručně“ změny pozice a velikosti ovládacích prvků na formuláři,
když uživatel mění velikost formuláře tažením jeho okraje.
Určení, že má tlačítko funkci „jako OK“, resp. „jako Storno“
Chcete-li některé z tlačítek na formuláři prohlásit za tzv. výchozí tlačítko, nastavte vlastnost AcceptButton
formuláře na dané tlačítko. Způsobíte tím, že když uživatel stiskne Enter, vyvolá se tím činnost jako při
klepnutí na tomto tlačítku, bez ohledu na to, který ovládací prvek je právě aktivní (kromě případu, že je právě
aktivní jiné tlačítko).
Chcete-li některé z tlačítek na formuláři prohlásit za tzv. stornovací tlačítko, nastavte vlastnost Cancel-
Button formuláře na dané tlačítko. Stornovací tlačítko má stejnou funkci, jako když uživatel stiskne Esc.
Vytvoření událostní procedury tlačítka
Aby tlačítko reagovalo na událost „uživatel na něm klepl“ požadovaným způsobem, musíte napsat odpovídající
událostní proceduru. Můžete ji napsat přímo při práci v kódu, aniž byste museli přecházet do okna
návrháře formulářů:
1. Rozviňte levý seznam objektů v editoru kódu a vyberte název ovládacího prvku (btnKonec).
2. Rozviňte pravý seznam dostupných událostí a vyberte událost Click.
3. V těle vygenerované kostry událostní procedury zavolejte metodu Exit třídy Application.

Labels:

Wednesday, March 21, 2007

Tato schopnost

usnadňuje vývojářům návrh těch formulářů, jejichž velikost smějí uživatelé při běhu měnit.
Nastavíte-li vhodně ukotvení, bude se při změně velikosti formuláře patřičně upravovat pozice i rozměry
ovládacího prvku. Než dlouhé popisy je lepší, když si různé varianty vyzkoušíte.
Zmíním se ještě o dvou nových zajímavých charakteristikách, které se také prezentují převážně graficky.
První z nich je „přikurtování do doku“ (vlastnost Dock). Některé ovládací prvky můžete „připoutat“ ke zvolené
straně formuláře nebo nechat ovládací prvek, aby vyplnil svůj kontejner. Druhou je možnost zarovnat
nápis, který se zobrazuje na ovládacím prvku pomocí vlastnosti TextAlign. (Jak uvidíte později, týká se tato
vlastnost i textových polí a můžete tedy pohodlně zařídit, aby se text psaný do textového pole neobjevoval
zleva, ale zprava nebo centrovaný.)
Místo teoretického povídání je opět lepší, když si člověk nové schopnosti vyzkouší v praxi. Prověřte si je
na nějakém jednoduchém návrhu (jak je ten náš).

Labels:

Monday, March 19, 2007

Příkazová tlačítka

V tomto oddílu se seznámíte s ovládacím prvkem, který tvoří jeden ze základních kamenů uživatelského
rozhraní aplikací, protože umožňuje uživateli pouhým klepnutím rozhodnout o tom o tom, co se má dělat dál.
Zde se naučíte, jak se tlačítko vytvoří a jak se pro něj napíše událostní procedura. Na konci oddílu „Tabelátorové
řazení prvků na formuláři“ se ještě dozvíte, jak se pro tlačítka (a jiné ovládací prvky) vytvářejí tzv. přístupové
klávesy.
1. Klepněte v soupravě na nástroj Button (nevidíte-li ho, posouvejte se po soupravě nástrojů pomocí
trojúhelníkových šipek nacházejících se na pravé straně soupravy.) a klepněte na formuláři tam,
kde se má objevit tlačítko.
Obdobným způsobem se na formulář kladou i jiné ovládací prvky. Po klepnutí se vytvoří
ovládací prvek o standardní velikosti. Jeho umístění a rozměry můžete snadno kdykoli později
upravit. Můžete samozřejmě vytvořit ovládací prvek na zvoleném místě a o zvolené velikosti,
když tažením myší pro něj vymezíte na formuláři obdélníkovou oblast.
2. Přejmenujte výchozí název tlačítka na lépe vypovídající (například btnKonec).
3. Nastavte hodnotu vlastnosti Text tlačítka na Konec.
4. Hned můžete také vyzkoušet jednu z nových schopností ovládacích prvků – jejich ukotvení.

Labels:

Sunday, March 18, 2007

P r o t o t y p a p l i k a c e W i n d o w s

4. Nastavte vlastní titulek formuláře nastavením vlastnosti Text formuláře. Buď v návrhovém režimu
nebo ve vygenerovaném kódu příkazem umístěným pod řádek s komentářem TODO (viz oddíl
„Úprava titulku formuláře a jiné drobné úpravy při běhu“ výše).
5. Klepněte na (svislou) záložku Toolbox na levé straně vývojového prostředí, abyste vysunuli soupravu
nástrojů.
6. Nechcete-li ji mít vysouvací, klepněte v jejím titulkovém pruhu pravým tlačítkem myši a v místní
nabídce odstraňte zaškrtnutí položky Auto Hide. Chcete-li mít soupravu plovoucí, klepněte v jejím
titulkovém pruhu pravým tlačítkem myši ještě jednou a v místní nabídce zvolte Floating. Nevidíteli
běžné nástroje, klepněte v soupravě na tlačítko (pruh) s nápisem Win Forms.

Labels:

Friday, March 16, 2007

Přidávání ovládacích prvků na formulář

V tomto oddílu výchozí prototyp dokončíte. Dejme tomu, že chcete uživatelům své aplikace usnadnit
ukončování běhu formuláře, protože mají potíže s tím, aby se „trefili“ při klikání na malinké tlačítko Zavřít
v pravém horním rohu formuláře (a nezavírali omylem něco jiného). Rozhodli jste se proto, že tlačítko x
z formuláře odstraníte a nahradíte ho vlastním velkým tlačítkem s nápisem Konec.
Abychom měli pokud možno všichni výchozí prototyp formuláře stejný, projděme si ještě jednou kroky,
které jste měli až doposud udělat.
1. Založte nový projekt typu aplikace Windows, přejmenujte vhodně výchozí názvy (například na
Automat).
2. Nastavte vlastnost ControlBox formuláře na False a vlastnost TopMost na True.
3. Vlastnost BorderStyle nastavte prozatím na Sizable, na pevnou velikost ji nastavte, až budete
s formulářem hotovi.

Labels:

Wednesday, March 14, 2007

Náměty na procvičení

I u takto primitivního formuláře je možné se zabavit řešením různých „problémečků“. Zkuste například
docílit toho, aby se nápis v titulkovém pruhu zobrazoval vždy uprostřed (centrovaný), a to i tehdy, když
uživatel bude měnit velikost formuláře tažením jeho okrajů.
Z hlediska budoucího vývoje je ale daleko důležitější to, že už zde můžete začít uvazovat o vlastní šabloně
formuláře. Doplníte-li prázdný formulář o nějaké logo organizace, může být při řešení aplikací ve vaší organizace
výchozím formulářem takto upravený formulář. Stačí využít princip vizuálního dědění formulářů.
Uvádím zhruba postup, jak to udělat. Připadá-li vám to v této chvíli obtížené nebo vás to zdržuje,
následující postup ignorujte, v brožuře ho potřebovat nebudete.
1. Upravte formulář tak, aby mohl sloužit jako obecná šablona a uložte ho.
2. Zvolte Project > Add Inherited Form.
3. V dialogovém okně Add New Item vyberte ikonu Inherited Form a do pole Name napište název
formuláře, který budete dále rozvíjet z vybraného vzoru a klepněte na Open.
4. V dialogovém okně Inheritance Picker vyberte v seznamu ComponentName vzor (šablonu), na níž
má být založen váš zděděný formulář, do pole Inherited Name napište název pro svůj zděděný
formulář a klepněte na OK.
5. Ovládací prvky klaďte na zděděný formulář.

Labels:

Tuesday, March 13, 2007

Než se pustíte do práce s ovládacími prvky na formuláři, zkuste spustit naši „prázdnou aplikaci“ přímo
z Windows. Postupujte takto:
1. Na hlavním panelu Windows klepněte na tlačítko Start a z nabídky zvolte Spustit.
2. V dialogovém okně Spustit klepněte na tlačítko Procházet a vyhledejte spustitelný soubor aplikace
(v našem případě by to měl být soubor Automat1.exe a konec jeho úplné cesty by měl být
\Visual Studio Projects\Automat1\bin\).
3. V dialogovém okně Procházet klepněte na Otevřít, pak v dialogovém okně Spustit, kam se vrátíte,
na OK.
4. Na pracovní ploše Windows by se měl objevit běžící formulář. Zavřete ho klepnutím na tlačítko x
v jeho pravém horním rohu.

Labels:

Monday, March 12, 2007

Otestování primitivního formuláře

I když je naše „aplikace“ velmi primitivní, přesto stojí za to, vyzkoušet ji. Čím jednodušší prototyp aplikace
je, tím snáze zvládnete případná úskalí při jejím testování ve vývojovém prostředí a mimo ně. Postupujte
takto:
1. Nastavte některé výše zmiňované vlastnosti v návrhovém režimu v okně vlastností formuláře.
2. Do automaticky vygenerovaného kódu přidejte pod řádek TODO některé z řádků uvedených
v předchozích oddílech, abyste si vyzkoušeli nastavování vlastností formuláře při běhu.
3. Zkuste vybudovat řešení příkazem Build > Build a prohlédněte si, co se vypisuje ve výstupním okně
(později využívejte příkaz Build > Rebuild).
4. Klepněte na tlačítko Start na panelu Debug nebo stiskněte F5 nebo zvolte Debug > Start. Nechceteli
vypisovat informace o ladění zvolte Debug > Start Without Debugging (Ctrl+F5).
Proběhne-li vše v pořádku, uvidíte v popředí vývojového prostředí běžící formulář:
Všimněte si dolního okna Output, v němž se zobrazují informace o průběhu ladění projektu či budování
řešení.
5. Zkontrolujte, zda se na formuláři promítly úpravy, které jste provedli v návrhovém režimu a při
běhu a klepněte na tlačítko x pravém rohu formuláře, abyste formulář zavřeli.

Labels:

Sunday, March 11, 2007

Vlastnosti,

které jste výše nastavili v návrhovém režimu, můžete nastavovat také až při běhu a dynamicky
tak měnit rozměry, pozici a jiné vlastnosti formuláře (a také ovládacích prvků, které později nakladete na
formulář):
' Formulář vždy nahoře
Me.TopMost = True
' Změna absolutních souřadnic (šířka a výška formuláře)
Me.Width = 500
Me.Height = 400
' Změna absolutní pozice (souřadnice levého horního rohu formuláře)
Me.Left = 500
Me.Top = 1000
' Změna relativních souřadnic
Me.Width += 100
Me.Height += 100
Operátor += přičte hodnotu k původnímu obsahu proměnné (vlastnosti) a přiřadí výsledek do proměnné
(vlastnosti). Podobě lze „zkracovat“ zápis u operátorů odčítání (-), násobení (*), dělení (/), celočíselné dělení
(\), mocnění (^) a řetězení (&).
VB6. Tyto operátory jsou ve VB.NET nové.
Šířku a výšku můžete také nastavovat současně, využijete-li strukturu Size pojmenovaného prostoru
System.Drawing. Tato struktura reprezentuje uspořádanou dvojici šířka, výška obdélníkové oblasti:
Me.Size = New System.Drawing.Size(600, 600)
Úplný zápis se System.Drawing.Size není v našem případě nutný, protože pojmenovaný prostor
System.Drawing je dostupný díky automaticky vygenerovanému příkazu Imports. Kdybyste ale v kódu
příkaz Imports System.Drawing neměli, došlo by při pokusu spustit aplikaci obsahující příkaz typu:
Me.Size = New Size(600, 600)
k chybě při běhu (spouštět a testovat aplikaci se naučíte za chvilku).
Jakmile je objekt Size definovaný, lze upravovat rozměry formuláře také takto:
Me.Size = New Size(Me.Size.Width, 400)
Je to ale poněkud méně přehledné než prosté nastavení vlastností Width resp. Height.
Podobně se dá nastavovat pozice formuláře. Například relativní změna o 100 směrem doprava a dolů:
Me.Left += 100
Me.Top += 100
Nebo najednou přes vlastnost Location a strukturu Point pojmenovaného prostoru System.Drawing:
Me.Location = New Point(300, 300)
Styl okraje formuláře se dá nastavit i při běhu, pomocí výčtového typu FormBorderStyle (pracuje se
s ním ve třídě Form pojmenovaného prostoru System.WinForms):
Me.BorderStyle = FormBorderStyle.FixedDialog

Labels:

13. Přejděte do okna kódu formuláře (View > Code) a najděte řádek komentáře začínající na TODO (=
co se má udělat).
Na toto místo se píše inicializační kód formuláře, případně i jeho ovládacích prvků (zatím žádné nemáme).
V nejjednodušších případech se jedná o výchozí nastavení nějakých vlastností, jejichž hodnoty
nemůžete nebo nechcete nastavit v návrhovém režimu, protože hodnotu vlastnosti v té době
neznáte, protože bude známa až při běhu.
14. Pod řádek s komentářem TODO (nachází se těsně pod voláním procedury InitializeComponent
napište
Me.Text = "Automat dne " & Today()
Jedná se vlastně o prvek struktury DateTime pojmenovaného prostoru System, takže předchozí řádek lze
psát také ve tvaru:
Me.Text = "Automat dne " & System.DateTime.Today()
Všimněte si, že když píšete kód, kontroluje vývojové prostředí „pravopis“ podobně, jako když píšete dopis
ve Wordu a syntakticky nesprávnou část podtrhne modrou vlnovkou. Textové řetězce se píší
v uvozovkách, & je operátor řetězení, který spojuje řetězce uvedené vlevo a vpravo do jediného řetězce. Aby
nebyly řetězce „slité“, nezapomeňte na mezeru za slovem dne.
VB6. Dříve se titulek formuláře nastavoval jako hodnota vlastnosti Caption. Výchozí hodnoty
vlastností se při běhu obvykle nastavovaly v událostních procedurách Load či Initialize
formuláře. Už je v seznamu událostí objektu formuláře nehledejte, protože nejsou.
Pro datum a čas se nyní používá 8 bajtový formát (datový typ DateTime). Příkazy Date a
Time byly (asi proto) nahrazeny příkazy Today a TimeOfDay. Obdobně se místo funkcí Date
a Time používají nyní vlastnosti Today a TimeOfDay struktury DateTime pojmenovaného
prostoru System.

Labels:

Thursday, March 08, 2007

P r o t o t y p a p l i k a c e W i n d o w s

Volitelné klíčové slovo Overrides říká, že procedura překrývá proceduru se stejným názvem ze základní
třídy. Datové typy parametrů a návratové hodnoty (u funkcí) musí být přesně stejné jako u procedury ze základní
třídy.
Jestliže nějaká komponenta poskytuje metodu Dispose, měla by se volat při ukončení práce
s komponentou, protože v této metodě komponenta uvolní všechny alokované systémové prostředky, odkazy
na jiné objekty a nakonec sebe sama.
Poznámka. Část kódu, kterou generuje návrhář formulářů a která je ve sbalené podobě vyznačena takto:
se vám může později hodit, až se dostanete do fáze, že budete chtít nebo potřebovat programovat formuláře
a ovládací prvky na nich přímým zápisem kódu. Z této sekce můžete dost odkoukat a opisovat.
Úprava titulku formuláře a jiné drobné úpravy při běhu
Dejme tomu, že vám nestačí statický titulek formuláře a chtěli byste ho dynamicky měnit při běhu, například
do něj přidat aktuální datum. Zařídí se to poměrně jednoduše tak, že mírně upravíte výchozí automaticky
vygenerovaný kód. Nebojte se, i když jste předchozí oddíl přeskočili, nemusíte se k němu vracet.

Labels:

Wednesday, March 07, 2007

Na příkazu Inherits v kódu třídy Form1 vidíte, že váš formulář dědí ze základní třídy System.
WinForms.Form. Seznamujete se tak s významnou novou schopností Visual Basic.NET, kterou je dědění.
Vytvoříte-li v jedné aplikaci nějaké „obecně využitelné“, neboli „základní“ formuláře, můžete v jiných
aplikacích formuláře odvozovat děděním z těchto šablon a pak jejich vzhled a chování modifikovat.
Procedura Public Sub New() je konstruktor třídy. Její první řádek musí obsahovat volání konstruktoru
základní třídy (nebo jiného konstruktoru aktuální třídy), aby se zajistilo, že se inicializace zděděných objektů
provede dříve než ostatní inicializace.
Poznámka. Klíčové slovo MyBase není skutečný objekt, takže ho nelze přiřazovat do proměnných, předávat
do procedur nebo používat s operátorem Is. Používá se k tomu, abyste mohli volat metody základní třídy
při jejich překrývání v odvozené třídě. I do základní třídy se obvykle zařazuje volání MyBase.New.
Klíčové slovo Me umožňuje odkazovat na tu instanci třídy, jejíž kód se právě provádí. Lze ho předat jako
parametr i do procedur nacházejících se v jiném modulu.
Pomocí procedury InitializeComponent se „udrží natrvalo“ hodnoty vlastností, které nastavujete
v návrhovém režimu (v návrháři formulářů Windows).
#region je direktiva, která se používá ve spolupráci se schopností editoru kódu Visual vytvářet osnovy.
Na levé straně okna kódu vidíte svislou čáru, která obsahuje čtverečky se symboly plus a mínus, s jejichž
pomocí rozbalujete či sbalujete části kódu. Dá se tím dosáhnout lepší přehlednosti a čitelnosti kódu. Příkazy
pro zacházení s osnovou najdete na kaskádové nabídce příkazu Edit > Outlining.

Tuesday, March 06, 2007

Ú v o d

#Region "Kód vygenerovaný návrhářem formulářů Windows"
' požaduje návrhář formulářů Windows
Private components As System.ComponentModel.Container
Dim WithEvents Form1 As System.WinForms.Form
'NOTE: následující proceduru požaduje návrhář formulářů Windows
'Lze ji upravovat v prostředí návrháře formulářů Windows.
' Neupravujte ji v editoru kódu.
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
'@design Me.TrayHeight = 0
'@design Me.TrayLargeIcon = False
'@design Me.TrayAutoArrange = True
Me.Text = "Form1"
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(448, 309)
End Sub
#End Region
End Class
Všimněte si, že editor kód barevně odlišuje. Zeleně jsou komentáře (text za jednoduchým apostrofem),
modře klíčová slova a ostatní text černě.
Příkazy Imports zpřístupňují pro aplikaci různé výchozí pojmenované prostory z .NET Framework.
V brožuře se postupně seznámíte i s několika dalšími.

Labels:

Monday, March 05, 2007

Automaticky vygenerovaný kód

Volba ikony Windows Application v dialogovém okně New Project způsobila, že vám vývojové prostředí
vygenerovalo výchozí kód, který se skládá z odkazů na několik pojmenovaných prostorů a z jedné třídy
Form1. Kód formuláře lze zobrazit mnoha způsoby. Například: vydejte příkaz View > Code nebo zvolte View
Code z místní nabídky formuláře nebo klepněte na tlačítko View Code (zcela vlevo) v průzkumníkovi řešení.
Pokud vás podrobnosti nezajímají a chcete rovnou pokračovat v řešení aplikace, klidně zbytek tohoto oddílu
přeskočte. Výchozí kód má tuto podobu:
Imports System.ComponentModel
Imports System.Drawing
Imports System.WinForms
Public Class Form1
Inherits System.WinForms.Form
Public Sub New()
MyBase.New
Form1 = Me
' Toto volání požaduje návrhář formulářů Windows.
InitializeComponent
'TODO: Sem přidejte svůj inicializační kód
End Sub
' Formulář překryje metodu dispose, aby vyčistil seznam komponent.
Overrides Public Sub Dispose()
MyBase.Dispose
components.Dispose
End Sub

Labels:

Sunday, March 04, 2007

P r o t o t y p a p l i k a c e W i n d o w s

Změna ovládacích prvků formuláře
Potřebujete-li, aby měl formulář pevnou velikost, nastavte vlastnost BorderStyle formuláře na jinou hodnotu
než jsou Sizable a SizableToolWindow (obvykle se používá hodnota Fixed Dialog).
Chcete-li uživateli znepřístupnit některá nebo všechna tlačítka nacházející se v titulkovém pruhu formuláře,
využijte těchto vlastností:
Nastavíte-li vlastnost ControlBox na False, odstraníte tzv. ovládací nabídku v levém horním rohu a zároveň
tlačítka pro minimalizaci, maximalizaci a uzavření formuláře. Všechna tlačítka i titulkový pruh odstraníte
nastavením vlastnosti BorderStyle na None.
Jednotlivá tlačítka skryjete vlastnostmi MinimizeBox resp. MaximizeBox. Obě tato tlačítka skryjete také
nastavením BorderStyle na FixedToolWindow nebo SizableToolWindow.
VB6. Dříve se vlastnosti pro potlačení tlačítek jmenovaly MinButton a MaxButton.

Labels:

Saturday, March 03, 2007

Pozice a velikost formuláře při běhu

Vyberte formulář v návrháři formulářů Windows (Windows Forms Designer) a v okně Properties určete
hodnotu vlastnosti StartPosition, s jejíž pomocí specifikujete hranice zobrazovací oblasti. Pro aplikace Windows
se doporučuje ponechat výchozí hodnotu WindowsDefaultLocation, která znamená, že, že operační systém
spočte optimální počáteční umístění formuláře podle aktuálního hardwaru. Vhodná alternativa je také
hodnota Center, později pak můžete pozici formuláře změnit v kódu.
Vlastní umístění pak určíte vlastností Location, kterou se nastavují obě souřadnice levého rohu formuláře
(obecně souřadnice levého rohu ovládacího prvku vzhledem k jeho kontejneru) současně. Nebo můžete určit
souřadnice jednotlivě, pomocí vlastností Left (souřadnice x) resp. Top (souřadnice y). Pozici formuláře můžete
pochopitelně nastavovat dynamicky i při běhu (ukázka viz dále) ve formě absolutních či relativních souřadnic.
Nastavíte-li vlastnost TopMost na True, určíte tím, že má být formulář „vždy nahoře“, tj. před všemi
ostatními formuláři, které tuto vlastnost nastavenu nemají, a to i tehdy, není-li formulář aktivní.
Rozměry formuláře lze nastavit jednoduše úpravou vlastností Height (výška) resp. Width (šířka) nebo najednou
nastavením vlastnosti Size, v kódu je v tomto případě nejprve třeba definovat objekt Size.
VB6. Dříve se počáteční pozice formuláře určovala v okně rozvržení formuláře (Form
Layout) nebo jako hodnota vlastnosti StartUpPosition objektu Form.
Nápis v titulkovém pruhu formuláře
V okně vlastností formuláře klepněte na vlastnost Text a napište nový název. Jakmile řádek vlastnosti
opustíte, promítne se změna v titulkovém pruhu formuláře v návrháři formulářů.
VB6. Dříve se titulek formuláře nastavoval jako hodnota vlastnosti Caption.

Labels:

Thursday, March 01, 2007

Název souboru projektu změníte tak, že vyberete v průzkumníkovi řešení složku projektu (Automat1) a
upravíte hodnotu vlastnosti Project File. Vlastnost Project Folder udává úplnou cestu k souboru projektu.
(.vbproj). Název formuláře změníte tak, že klepnete na souboru třídy formuláře Form1.vb v průzkumníkovi
řešení a v okně vlastností upravíte hodnotu vlastnosti FileName.
Všechny změny byste měli čas od času ukládat pomocí příkazů z nabídky File. Nejjednodušší je uložit
všechno (File > Save All), neboli stisknout kombinaci kláves Ctrl+Shift+S.
VB6. Ve VB6 se název projektu měnil v dialogovém okně Project > Properties v textovém poli
Project Name, název formuláře byl dán hodnotou vlastnosti Name objektu Form.