Texty ke studiu (01 09) Vlastnosti komponent (properties) Formulář Je základní komponenta vizuálního programování. Na jeho plochu se teprve pokládají další komponenty. 1. (Name) jméno komponenty (objektu) v programu (předpona WF) 2. BackColor barva podkladu, tj. barva plochy formuláře 3. MinimumSize tlačítkem + rozbalte podvlastnosti 4. MinSize Width minimální šířka okna, jakou uživatel může nastavit (tj. okno může být je větší) 5. MinSize Height minimální výška okna, jakou uživatel může nastavit 6. MaximumSize tlačítkem + rozbalte podvlastnosti 7. MaxSize Width maximální šířka okna, jakou uživatel může nastavit (tj. okno může být je menší) 8. MaxSize Height maximální výška okna, jakou uživatel může nastavit 9. Size šířka a výška formuláře při spuštění, tlačítkem + rozbalte 10. Size Width šířka okna při spuštění 11. Size Height výška okna při spuštění 12. Text text na titulkovém (modrém) pruhu formuláře (okna) 13. BackgroundImage podkladový obrázek 14. Opacity doslova neprůhlednost - už při 90% prosvítá podklad 15. ShowIcon při true je vidět ikona s nabídkou na titulkovém pruhu 16. StartPosition kde bude formulář programu na obrazovce při svém spuštění? TextBox Textové pole je obdélník, který uživateli programu umožňuje zadat vstupní hodnoty ve formě textu. Důležité je, že muže být na více řádek než jeden. Textové pole lze s výhodou využít i opačně jako prostor pro zobrazení výstupních údajů programu. 1. (Name) jméno komponenty (objektu) v programu (předpona TB) 2. BackColor barva podkladu, tj. barva pozadí textového pole 3. ForeColor barva textu v textovém poli 4. Font druh a velikost písma textu 5. Text tato vlastnost obsahuje text, který se v poli zobrazuje 6. Multiline při hodnotě true je možné do pole vkládat více řádek 7. MaxLength maximální počet znaků, které uživatel může do pole zapsat 8. ReadOnly při nastavení na true nedovolí text přepsat (vhodné jako výstupní pole) 9. ScrollBars umožňuje okolo pole umístit svislý či vodorovný posuvník 10. UseSystemPaswordChar při nastavení na true se místo znaků zobrazují v poli puntíky (pro zadání hesla) 11. WordWrap při nastavení na true automaticky zalamuje konce řádek 12. TextAlign zarovnání textu v poli (vlevo, vpravo, na střed) 13. TabIndex pořadí komponenty na formuláři při pohybu klávesou TABULÁTOR 14. TabStop při hodnotě false nelze umístit na komponentu fokus (za běhu programu)
Label Českým slovem popisek. Je to pevný text, který se umisťuje na plochu formuláře poblíž jiných prvků a určuje jejich význam. Od popisku se neočekává žádná reakce, tj. na ťuknutí myší nijak nereaguje. 1. (Name) jméno komponenty (objektu) v programu (předpona LA) 2. BackColor barva podkladu, tj. barva pozadí popisku 3. ForeColor barva textu v popisku 4. Font druh a velikost písma textu (bold = tučné písmo) 5. Text text, který popisek zobrazuje (lze ho nastavit při návrhu formuláře) 6. TextAlign zarovnání textu v poli (vlevo, vpravo, na střed) Button Českým slovem tlačítko. Je to základní akční komponenta. Po jeho stisku se dostaví reakce, tj. na ťuknutí myší se provede nějaká akce. Pochopitelně, že ne sama od sebe ale o tom až v příští lekci. 1. (Name) jméno komponenty (objektu) v programu (předpona BT) 2. BackColor barva podkladu, tj. barva pozadí tlačítka 3. BackgroundImage podkladový obrázek (obdoba podkladu formuláře) 4. Cursor jak bude vypadat kurzor myši nad touto komponentou? 5. ForeColor barva textu na tlačítku 6. Font druh a velikost písma textu (bold = tučné písmo) 7. Opacity neprůhlednost formuláře (90% je mírně průhledný) 8. Padding vzdálenost textu tlačítka od jeho okrajů (all = všude stejná) 9. Text text, který se na tlačítku zobrazuje 10. TextAlign zarovnání textu na tlačítku myší vyberete pozici z nabídky 11. Visible viditelnost komponenty za běhu programu CheckBox Pro vložení binární informace, tj. Ano Ne, slouží CheckBox, česky zaškrtávací pole (nebo také zatržítko). Zatržení uživatelem lze pochopitelně programem zjistit, ale také lze programově nastavit, aby bylo políčko zatržené například při startu programu. Kromě vlastností, které znáte z jiných komponent má zatržítko také specifické vlastnosti, jaké jinde nenajdete. 1. (Name) jméno komponenty (objektu) v programu (předpona CH) 2. BackColor barva podkladu, tj. barva pozadí zatržítka i jeho textu 3. BackgroundImage podkladový obrázek (obdoba podkladu formuláře) 4. Cursor jak bude vypadat kurzor myši nad touto komponentou? 5. Enabled přístupnost komponenty uživateli, při false ťuknutí myší nemá na zatržítko vliv 6. ForeColor barva textu 7. Font druh a velikost písma textu (bold = tučné písmo) 8. CheckAlign umístění (zarovnání) zatržítka vůči popisu ve vlastnosti Text 9. Checked hodnota zatržení ano-ne (true-false), při true se zobrazí fajfka 10. Padding vzdálenost textu od jeho okrajů (all = všude stejná) 11. Text text, který se u zatrřítka zobrazuje (popisek) 12. Visible viditelnost komponenty za běhu programu (neplést s vlastností Enabled!!!)
GroupBox Tato komponenta patří mezi tzv. kontejnery (v ToolBoxu je v části containers) a umožňuje společné ovládání několika komponent. Zvláště pak v případě přepínače (RadioButton) to je jediný způsob, jak vysvětlit programu, že ty a ty radiová tlačítka patří k sobě (přece se mají chovat tak, že ťuknutím na jedno z nich se daná možnost zvolí a všechny ostatní volby se zruší). Autor neví, jak a kdo přišel s takovýmto označením komponenty, ale na starých rádiopřijímačích skutečně byla tlačítka volby rozsahu udělána tak, že stiskem jednoho ta ostatní vyskočila. Aby to fungovalo, musíte pokládat komponenty, které bude GroupBox ovládat, přímo na plochu GroupBoxu, NE na plochu formuláře!!! 1. (Name) jméno komponenty (objektu) v programu (předpona GB) 2. BackColor barva podkladu, tj. barva plochy boxu 3. BackgroundImage podkladový obrázek (obdoba podkladu formuláře) 4. Cursor jak bude vypadat kurzor myši nad touto komponentou? 5. Enabled přístupnost komponenty uživateli, při false jsou neaktivní také všechny komponenty, v boxu umístěné 6. ForeColor barva textu 7. Font druh a velikost písma textu (bold = tučné písmo) 8. Padding vzdálenost textu od jeho okrajů (all = všude stejná) 9. Text text, který se zobrazí na čáře v levém honím rohu boxu (popisek) 10. TabIndex pořadí komponenty na formuláři při přepínání tabulátorem 11. Visible viditelnost komponenty za běhu programu (neplést s vlastností Enabled!!!) RadioButton Komponenta, která ve větším počtu vytváří přepínač, tj. vždy je zvolena pouze jedna z možností (nebo žádná). Důležitým předpokladem funkce je komponenta GroupBox, popsaná v předchozím bodu. Nejprve je tedy nutné položit na plochu formuláře spojovací komponentu (GroupBox) a teprve potom přetahovat komponenty RadioButton z ToolBoxu a pokládat je na plochu GroupBoxu, NE na plochu formuláře! 1. (Name) jméno komponenty (objektu) v programu (předpona RB) 2. BackColor barva podkladu, tj. barva pozadí puntíku i jeho textu 3. BackgroundImage podkladový obrázek (obdoba podkladu formuláře) 4. Cursor jak bude vypadat kurzor myši nad touto komponentou? 5. Enabled přístupnost komponenty uživateli, při false ťuknutí myší nemá vliv 6. ForeColor barva textu 7. Font druh a velikost písma textu (bold = tučné písmo) 8. CheckAlign umístění (zarovnání) puntíku vůči popisu ve vlastnosti Text 9. Checked hodnota zatržení ano-ne (true-false), při true se zobrazí puntík 10. Padding vzdálenost textu od jeho okrajů (all = všude stejná) 11. Text text, který se u puntíku zobrazuje (popisek) 12. TabIndex pořadí komponenty na formuláři při přepínání tabulátorem 13. Visible viditelnost komponenty za běhu programu (neplést s vlastností Enabled!!!)
Výklad Vývojové prostředí Nápověda k dané vlastnosti se zobrazuje v dolní části okna vlastností poté, co nějakou vlastnost vyberete (přepněte se do vývojového prostředí a zkontrolujte si, že je tomu tak i u vás). Změna v nastavení vlastností se projeví tučným písmem v hodnotě vlastnosti a také hvězdičkou na oušku daného souboru (dokud neuložíte klávesou CTRL+S). Jména komponent Jméno objektu, vlastnost jménem Name (v seznamu vlastností je vždy v kulatých závorkách) by mělo vystihovat určení či funkci objektu. Pojmenovat tlačítka Tlačítko1, Tlačítko2, sice můžete, ale není to zrovna to pravé. Raději tedy podle jejich funkce, např. BTsmaž, BTpřidej, BTkonecProgramu, Počáteční dvě velká písmena je předpona (prefix), které identifikuje typ komponenty (tlačítko, popisek, vstupní pole, atd.). Důvodem je odlišení různých komponent se stejným obsahem a také komponent od paměťových proměnných. Např. popisek a textový box pro zadání věku nemohou se jmenovat stejně, třeba Věk. Musíte název nějak odlišit a Microsoft doporučuje použít prefix. K tomu ještě potřebujete lokální proměnnou, do níž uložíte zadaný text, převedený na číslo. Víte jak se bude dobře programovat, když budete mít názvy LAvěk (label), TBvěk (textový box), Věk (číselná proměnná). Předpony přiřazené komponentám jsou uvedeny výše u komponent (vlastnost Name). A mimochodem formulář je také komponenta. Ostatní jména Všimněte si, že v C# mohou mít názvy i znaky s diakritikou, což ve většině dosavadních programovacích jazycích (C++, Delphi, ) nebylo možné. Dvě věci však udělat nesmíte začít název číslicí a vkládat do názvu znaky s definovaným významem, např. 1.pole (číslice a odkazovací tečka), Start Výpočtu (mezerou oddělujete jednotlivá slova, překladač to bude brát jako dva názvy), Operace+a/ (plus a lomítko jsou znaky pro matematickou operaci a jsou stejným oddělovačem jako mezera). Pořadí komponent Zajisté víte, že v programech pod Windows je přechod mezi komponentami (např. mezi editačními políčky), realizován stiskem klávesy TABULÁTOR. Ten obvykle přeskakuje po komponentách shora dolů. Málo známý je způsob pohybu zpět. Ten provede klávesa SHIFT + Tabulátor. Teď jste však těmi, kdo formulář vytváří, takže je vhodné vědět, že pořadí komponent na formuláři určuje programátor. Pár formulářů jste ale už vytvořili a nic jste nenastavovali! Skutečnost je taková, že pořadí se komponentám přiřazuje ve chvíli, kdy je umísťujete na formulář. To znamená, že komponenta, kterou tam položíte první, bude mít nulu, druhý jedničku, pak dvojku, atd. Je zřejmé, že při návrhu se řeší grafická stránka věci, tj. v pořadí komponent je brzy značný chaos! Proto má vývojové prostředí (tj. designér) prostředky, kterými můžete stanovit pořadí komponent podle sebe. Jak se mění pořadí? Ťukněte na formulář a v menu View zvolte volbu Tab Order. V designéru se u každé komponenty zobrazí pořadové číslo, jaké je v její vlastnosti TabIndex. Ťuknutím na toto číslo se změní pořadí dané komponenty. Ťukejte opakovaně, až bude pořadové číslo komponenty takové, jaké má být. Zobrazení pořadí se zbavíte novým vybráním volby View TabOrder.
Fokus O komponentě, která je právě aktivní, se říká, že získala (má) zaměření, anglicky fokus. Nutno však upozornit, že existují komponenty, které nemohou fokus získat například popisek (label). Přepínání aktivní komponenty klávesou Tabulátor / Shift+TAB funguje nejen za běhu programu, ale i při návrhu formuláře, tj. v designéru. Zvykněte si, že v jazyku C# začíná číslování vždy od nuly (přece je nula taky číslo, nediskriminujte ji). Některá pravidla syntaxe v jazyce C# I když se v současných programovacích jazycích pracuje se slovy přirozeného jazyka, mají do jejich volnosti hodně daleko. Možná vás to překvapí, protože ve škole vás učili spoustu pravidel (a ještě jednou tolik výjimek). Skutečnost je ale opravdu taková programovací jazyk má pravidla stanovená velmi přísně a o nějakých výjimkách nemůže být ani řeč. Pro pravidla, jak se co v daném programovacím jazyce píše, se používá složitě znějící slovo syntaxe. Již takové jméno proměnné, o jejímž správném zápisu již byla řeč, se podřizuje jednoznačné syntaxi daného jazyka. Pravidla, tj. nezačínat jméno číslicí a nepoužívat vyhrazené znaky, platí nejen pro proměnné a vlastnost Name grafických komponent, ale pro všechna jména v programu (procedury, třídy, ). Pro programátora je důležité, že syntaxi jeho zápisu programu dokáže vývojové prostředí a překladač zkontrolovat (v podstatě ihned) a na chyby upozornit (vůbec nedovolí program spustit). Co je to programová závorka? Většina konstrukcí v definici jazyka (větvení, cykly, ) pracuje s pojmem příkaz. Co ale dělat, když chceme, aby se provedlo více příkazů a ne jenom jeden. Odpovědí jsou programové závorky (vždy množné číslo, musíme mít závorku na začátku i na konci tak jako tato poznámka, která má začátek i konec). Ve většině programovacích jazyků jsou programovými závorkami anglická slova begin a end (tj. začátek a konec). Jazyky C (C, C++, C#, ) používají na místě programových závorek znaky { } (tj. závorky, v Čechách jim říkáme složené). Používání programových závorek je opět stanoveno syntaxí jazyka. Proto najdete složené závorky i v místech, kde se nachází jen jediný příkaz. Jsou to místa, kde je třeba vymezit začátek a hlavně konec určité části programu (procedury, třídy, ). Události Občas se vyskytne radostná událost. Nejen v životě lidském, ale i v nudné existenci tlačítka na formuláři. Takovému tlačítku stačí ke štěstí mnohem méně - stačí že ho někdo stiskne. Na událost, zvláště tu radostnou, ale každý reaguje po svém. Vysvětleme si, jak udělat tlačítku radost a k jeho stisku připojit požadovanou akci. Události ve Windows Důležitou vlastností operačního systému Windows (OSW) jsou události (angl. events). Takovou událostí je pohyb myši, stisk některého jejího tlačítka či stisk klávesy. Události nejsou ale jen fyzického charakteru. Vytvářením tzv. zpráv, jež jsou zhmotněním událostí, mohou komunikovat i programy mezi sebou. Zůstaňme u stisku myšího tlačítka. Protože fyzické prostředky má pod palcem OSW, je první, kdo tuto událost zaznamená. Ovladač myši předá OSW fyzické souřadnice myši na obrazovce. Úkolem OSW je určit, čí viditelné okno se na daném místě obrazovky nachází. Protože všechna okna OSW registruje, snadno určí, že myš byla ve chvíli stisku nad oknem (formulářem) našeho programu. Poskládá tedy zprávu o události myši a předá ji jádru našeho programu (jádro aplikace naštěstí nemusíme programovat, je automaticky doplněno do každého našeho programu). Jádro podle zprávy OSW určí, která komponenta byla pod myším kurzorem ve chvíli stisku tlačítka. Poskládá zprávu a pošle ji komponentě, které se událost týká. A tady nastupuje programátor a přispívá svou kapkou ke zmatku.
Události v C# Část programového kódu, která reaguje na událost (event), třeba u tlačítka na jeho stisk, se nazývá ovladač. Jako každá věc v C# má i ovladač své jméno, které ho odlišuje od ostatních a umožňuje vyvolat v případě potřeby právě jeho. Dále má každý ovladač za názvem v závorce uvedeny hodnoty, které mu předalo jádro programu. Těmto hodnotám se říká parametry (nebo také argumenty). Je nasnadě, že ovladače různých událostí budou mít jiné parametry jak co do počtu tak co do hodnoty. Pak už následují jen složené závorky { }. Jak víte z minulé lekce, říká se jim programové závorky a ne nadarmo! Právě mezi tyto složené závorky zapisuje programátor program, tj. své příkazy, samozřejmě v syntaxi jazyka C#. Klíčová slova, příkazy a barvy textu Klíčová slova, tj. vyhrazená anglická slova s významem definovaným specifikací jazyka, jsou zobrazována vývojovým prostředím modře (např. private), názvy černě (BTkonec_Click). Název ovladače či jiné části programového kódu se při jeho použití (vyvolání) zapisuje úplně stejně jako v deklaraci, pouze se za něho připojí závorky (třeba i prázdné). Příkaz Close(), jak je uvedeno výše v příkladu kódu, je sice součástí jazyka C#, ale není to klíčové slovo. To jen nějaký dobrodinec u Microsoftu napsal kus programu (proceduru), která se takto jmenuje. Proto se příkaz Close() zobrazuje černě a musí se za ním dělat závorky! A teď praxe jak založit v C# ovladač? Zaťukáte na tlačítko či jinou komponentu a do programového kódu se vloží základ ovladače události, která je pro danou komponentu implicitní (nastavená, charakteristická, ). Jinými slovy vývojové prostředí doplnilo do souboru Form1.cs texty v syntaxi C# (tj. vše tak, aby byl program funkční). Příklad kódu ovladače Pečlivě (po jednotlivých písmenkách) si přečtěte ukázku programu. Popíšeme většinu toho, co je v rámečku vlastně napsáno (viz následujcí seznam). 3. 4. 5. Close(); 1. 2. 1. Název ovladače skládá se z názvu tlačítka (komponenty), podtržítka, a názvu události (klik) 2. Seznam parametrů v závorce object je objekt, EventArgs je seznam argumentů myší události 3. Otvírací složená závorka 4. Příkaz, který něco dělá (zde jde o ukončení formuláře či celé aplikace, je-li v ní jediný formulář) 5. Uzavírací složená závorka Všimli jste si něčeho? Správně. Ještě jsme totiž nepopsali ona dvě záhadná, modře vyvedená slova před názvem ovladače, která nedostala číslo. Zatím se musíte s nimi smířit bez bližšího vysvětlení. I na ně dojde!
Co se děje před zobrazením formuláře Máme zatím v aplikaci jediný formulář, takže děje před jeho zobrazením splývají s ději při startu programu. Zde napsané však bude platit i později, až budeme v naší aplikaci otevírat z hlavního formuláře jiné (např. samostatný formulář pro zadání hodnot). Když přijde požadavek na zobrazení (aktivaci) formuláře, začne program (zase funkce jádra, které nemusíme naštěstí programovat) v operační paměti tento formulář skládat podle předlohy, kterou jsme v designeru při návrhu vytvořili. Vytvoří grafickou podobu sebe a komponent, které vlastní. Potom připojí odkazy na ovladače formuláři a všem komponentám. A protože formulář je vlastně wokno, pošle operačnímu systému podklady a formulář ve Windows zaregistruje (tj. Windows našemu oknu přidělí prostředky počítače = paměť, čas mikroprocesoru, ). Teprve potom vykoná příkaz Show (angličtináři vědí, že to znamená ukázat, předvést ). Důležité je, že ve složeném stavu, kdy zabírá místo v paměti, ale není vidět, může být formulář i na příkaz programátora. Existence takového příkazu má ale významný důvod když je formulář hotov, jeho zobrazení je 10x rychlejší (trochu také záleží na jeho složitosti, tj. počtu komponent). Události při startu formuláře Základní událostí formuláře, tj.událost, jejíž ovladač se založí při zaťukání na plochu formuláře, je Load, tj. načíst, zavést, natáhnout (data do paměti). Tuto událost generuje jádro naší aplikace při startu formuláře ještě před prvním zobrazením, tj. v době, kdy formulář je poskládán v paměti (tj. je už funkční, ale ještě nebyl zobrazen). Do tohoto ovladače se proto zapisují příkazy, které se mají provést při startu formuláře, ale ještě před tím, než ho uživatel spatří (cíl dnešní práce). Vkládání textu do vlastností komponent Chceme-li do proměnné nebo vlastnosti Text nějaké komponenty zapsat textový řetězec, musíme jej opatřit uvozovkami na začátku i na konci. Důvodem takového počínání je jednoznačné vymezení textové hodnoty (obvykle věta obsahuje mezery a další znaky, které se jinak v programovém kódu vyskytovat nesmí). Textová hodnota se v programování označuje jako řetězec, anglicky string. Pak se proměnná, která text obsahuje, nazývá řetězcová či hezky česky stringová. Aby bylo úplně jasno, ukážeme si pár příkladů: BTahoj.Text = Jsem tlačítko ; JménoZaměstnance = Novák Jaroslav ; Změna vlastností formuláře Pokud měníte vlastnost formuláře v ovladači události jeho komponent např. stisk tlačítka mění barvu formuláře pak se místo jména formuláře uvádí klíčové slovo this (znamená tento ). Např. this.text= Já být formulář ; (srovnejte se zápisem o pár řádek výš = je tam jméno tlačítka a tečková notace). Jak vytvořit klávesovou zkratku Odpověď je prostá do popisu tlačítka (vlastnost text) přidáme znak & (ampersand) před znak, na který má tlačítko reagovat. Výsledkem vložení & je podtržení znaku, tj. informace pro uživatele (určitě jste si všimli podtržených znaků např. v programech Excel či Word). Znak ampersand v české klávesnici vložíte stiskem PRAVÉ klávesy ALT a písmene C. Pokud to nefunguje (spouští se jiný program), musíte si nastavit anglickou klávesnici. Klávesnice se přepíná stiskem levé klávesy ALT spolu s levou klávesou SHIFT (pravé klávesy takto nefungují!). Pak je ampersand v horní řadě na klávese ý7. Nezapomeňte si přepnout klávesnici zpět. Aktuální klávesnice ze zobrazuje vpravo na liště (CS / EN). Při stisku kombinace ALT a znak za ampersandem se vyvolá stejná událost jako při ťuknutí myší ( Click).
Poznámka 1 Nezobrazuje-li se podtržení znaku, stačí přidržet pár sekund klávesu ALT a podtržení se objeví. Chcete-li, aby se podtržení zobrazovalo trvale, musíte provést změnu v nastavení Windows (viz obr. A1 na konci souboru). Má-li programátor pocit, že by uživatel měl již od pohledu poznat aktivující písmeno, napíše toto písmeno jako velké i uprostřed slova. Tím se vyloučí zásislost programu na tomto nastavení. Poznámka 2 Klávesová zkratka není jen u tlačítka, ale i u jiných komponent. Např. může být i u popisku, které jinak na stisk myši nereaguje. Může také být u zaškrtávacího pole (viz dále). Přiřazovací příkaz (přiřazení) Dalším jednoduchým, ale potřebným příkazem, je programové přiřazení hodnoty. I zde je jedno, zda přiřazujeme hodnotu (např. číslo) do paměťové proměnné nebo nastavujeme hodnotu vlastnosti nějaké komponenty. Ve všech případech se používá matematický znak = (rovnítko). V případě vlastnosti komponenty je ale důležitý způsob, jak překladači říct, kterou vlastnost chceme nastavit (pamatujete na povídání o syntaxi jazyka?). Navíc jde o to, že např. vlastnost Text mají skoro všechny komponenty. Aby došlo k oddělení názvu komponenty a názvu vlastnosti a zároveň bylo zřejmé, že tyto dva pojmy patří k sobě, používá se tečky, např. BTtlačítko.BackColor Zápisu se říká tečková notace, tečkový odkaz a tečce na tomto místě tečkový operátor. Ukažme příklady přiřazení: - textové hodnoty BTčinnost.Text = Akce ; - číselné hodnoty BTzkus.MaxLength = 150; - logické hodnoty BTkuk.TabStop = true; nebo BTakce.Visible = false; Poznámka Máte-li se odkázat na komponentu (obecně jakýkoliv objekt), musíte znát její název. Protože vy jste ti, co název komponentám přiřazují, musíte dodržet podmínky správného pojmenování. A v jazyku C# to platí dvojnásob, tj. včetně velkých a malých znaků (pojmenujete-li např. tlačítko BTkonec nemůžete měnit jeho barvu příkazem BTKonec.BackColor = Color.Blue; = velké ká). Programové přiřazení barvy Hned na začátku předmětu bylo řečeno, že všechno v jazyku C# jsou objekty. To platí i o barvách. Proto, když chcete přiřadit nějaké vlastnosti barvu, musíte se nejprve odkázat na objekt COLOR a to opět přes tečkový operátor, tj. např. FrmXY.BackColor = Color.Black; Poznámka Při zápisu vám pomáhá našeptávač vývojového prostředí není proto nutné všechno vypisovat a při vkládání správných znaků toho většinu napíše prostředí. V tomto příklad tedy stačí mačkat klávesy Fr (zobrazí se nabídka), tečka (doplní se rxy.), ba (nabídka vlastností na ba ), rovnítko (doplní se ckcolor), colo (nabídka), tečka (nabídka barev, šipkou dolů najet na černou barvu), středník (název barvy se doplní do textu a přidá se středník).
Svázání události s komponentou Při založení události zaťukáním na dané komponentě v designeru se nejen vytvoří kostra události (metoda) v programovém kódu, ale zároveň se do seznamu událostí dané komponenty uloží její název. Důvodem je trvalé spojení komponenty, její události a ovladače v programovém kódu. Ovladač, tj. metoda v programu, se může jmenovat jakkoli. Např. při názvu tlačítka BTkonec po zaťukání založí designer metodu se jménem BtnKonec_Click. Bude-li třeba, můžete ji ale přejmenovat podle svého. A kde že je schován seznam jmen všech událostí dané komponenty? Na obrázku v kroužku je tlačítko v hlavičce okna vlastností (propertries), jehož stiskem se zobrazí seznam událostí (tlačítko s bleskem). Jméno je vyplněné jen u události, která má založen ovladač (metodu) v našem případě se jedná o tlačítko a jeho událost Click. Proč se po přejmenování komponenty změní program jen částečně? Přejmenujete-li komponentu, např. tlačítko, kterému už jste ošetřili metodu Click, změní se i jeho název v programovém kódu. Jak bylo ale v předchozím bodu vysvětleno, název metody (ovladače) může být jakýkoliv. Designér proto nemá důvod přejmenovat i metodu tohoto tlačítka. A tak i po přejmenování tlačítka s názvem button1 na BTkonec zůstane v programovém kódu původní jméno button1_click. Jak kompletně odstranit obsluhu události? Když smažete komponentu z formuláře, ovladače, ošetřující její události se Nesmažou! Ale je pravda, že se alespoň odstraní z vazeb na zbytek programu. Potom lze ovladače odstranit ručně (smazat), aniž by nastaly nějaké potíže. Ovšem jinak je tomu v případě, kdy komponentu nechceme mazat (třeba proto, že jsme předtím deset minut ladili v designeru její vlastnosti). Potom musíme v designeru vybrat tuto komponentu a pak se přepnout do seznamu událostí. Tam ťuknete na názvu nechtěné události pravým tlačítkem myši a z menu vyberete volbu Reset (viz obrázek). Název události z políčka zmizí a s ním i ovladač události. Poznámka 1 Uvedený způsob ale funguje pouze v případě, že v ovladači není něco naprogramováno, tj. není tam nějaký váš programový kód. Pak sice proběhne odstranění všech odkazů na daný ovladač, ale metoda s vašimi úpravami v programu zůstane. Nastane tak první případ, kdy metodu musíte smazat ručně. Poznámka 2 Autor tohoto textu provedl průzkum s tímto výsledkem když z ovladače, ještě před resetem v seznamu událostí, odstraníte všechen váš kód, volba Reset odstraní i takto uvolněný ovladač. Je to pořád jednodušší než oprava chyb vzniklých z neodstraněných vazeb na neexistující metodu. Co je to logická chyba a jak si jí vyrobíme? Logická chyba je chyba návrhu, tj. chybná úvaha programátora. Někdy skutečně programování připomíná smlouvu s ďáblem program dělá, co jste naprogramovali, ale diametrálně se to liší od toho, co programátor zamýšlel. Pak se laik diví a odborník žasne Může se to stát i v jednoduchém programu. Hlavní problém s logickými chybami (také je lze označit za sémantické, tj. významové chyby) tkví v tom, že je vývojové prostředí nemůže odhalit jsou jen v naší hlavě! Navíc se velmi dobře maskují a často se stává, že jsou odhaleny náhodou až po několika letech.